Roadmap

Planned direction for CSharpDB — organized by timeframe and priority. Availability for the audited SQL surface is tracked separately.

Separate plans from availability. The SQL Reference documents shipped SQL behavior and current limits. The long-form roadmap is preserved as Roadmap Source Reference.

Near-Term Completed

Recently completed improvements to query performance, storage behavior, provider/tooling compatibility, maintenance workflows, and developer ergonomics.

Source-Generated Collections

Done

No-reflection, trim-safe typed collection API via CSharpDB.Generators with GetGeneratedCollectionAsync<T>(), GeneratedCollection<T>, generated field metadata, binary direct payloads for supported shapes, and NativeAOT-friendly model registration.

Collection Write-Path Performance

Done

Separated collection write probes from the read-side B-tree routing-cache, reused traversal scratch during insert/replace, and buffered catalog mutation bookkeeping inside explicit transactions.

Covered Composite Index Fast-Path

Done

Recovered covered composite-index lookup optimization for queries that can be answered entirely from the index without touching the base table.

Durable-Write Batching

Done

Configurable durable commit batch window to coalesce WAL fsync calls across concurrent transactions for higher write throughput.

DISTINCT & Composite Indexes

Done

Deduplicate SELECT output with DISTINCT. Multi-column indexes for broader query coverage.

Index Range Scans

Done

Use eligible single-column INTEGER and single-column ordered TEXT indexes for <, >, <=, >=, and BETWEEN predicates; REAL indexes remain equality-only.

Prepared Statement Cache

Done

Cache parsed ASTs and query plans to avoid re-parsing identical SQL statements.

In-Memory Database Mode

Done

Open a database fully in memory, load from disk, and save committed snapshots back to disk.

Collection Path Indexes

Done

Nested scalar, array-element, nested array-object, Guid, temporal, and ordered text path indexes.

B+Tree Delete Rebalancing

Done

Merge underflowed pages on delete to reclaim space via borrow/merge with interior collapse.

Database Administration

Done

Maintenance report, REINDEX, VACUUM/compact, fragmentation analysis, and database size report.

Dedicated gRPC Daemon

Done

CSharpDB.Daemon host with full gRPC coverage for SQL, schema, procedures, collections, and maintenance.

Background WAL Checkpointing

Done

Incremental/sliced auto-checkpointing to move work off the triggering commit path.

Hybrid Storage Mode

Done

Lazy-resident durable storage with on-demand page loading and gRPC tunable file-cache.

Table & Index Statistics

Done

ANALYZE command with persisted row counts, column NDV/min/max, and initial stats-guided index selection.

Client Backup & Restore

Done

BackupAsync / RestoreAsync as first-class operations across direct, HTTP, gRPC, CLI, and Admin.

Native Table Archives & External Tables

Done

Native .csdbtable snapshots with fast Admin Import / Export, download or server-path destinations, CREATE EXTERNAL TABLE, sys.external_tables, read-only scans/joins, and embedded primary-key lookup indexes.

Older DB Foreign-Key Retrofit Migration

Done

Validate/apply maintenance workflow that rewrites existing child tables with persisted FK metadata across direct, HTTP, gRPC, CLI, and Admin.

Admin Reports Designer

Done

Visual banded-report designer with grouping, sorting, expressions, aggregate functions, page settings, and printable preview.

Mid-Term In Progress

SQL feature parity, provider/tooling compatibility, and ecosystem expansion.

SQL Feature Coverage

In Progress

The bounded SQL implementation and its automated functional qualification gate are complete across the public reference, regression suite, versioned migration capability catalog, replayable EF SQL corpus, historical-database reopen coverage, fault-injected recovery, and a canonical typed parity workload plus feature-specific direct/ADO.NET/HTTP/gRPC coverage where applicable. Status remains In Progress until the release commit records two clean Windows, Linux, and macOS passes, two passing GitHub-hosted comparisons of the 18 stable master-table rows, and two passing sequential local durable-write comparisons on one idle fixed-SSD Windows machine using the same hash-verified harness and valid, stable raw evidence. The local gate must publish its success status on that exact release commit. Supplemental performance suites remain report-only or manual diagnostics. Advanced SQL work is tracked separately below and does not keep the bounded implementation slices partially complete.

User-Defined Functions and Commands

Done

Done for the trusted in-process model: host-registered C# scalar functions, common SQL/Admin built-ins, trusted commands, Admin Forms/Reports/pipeline hooks, declarative form action sequences, and local Admin Forms C# code modules. Untrusted sandboxed UDF execution is intentionally out of scope.

Writable External Tables

Planned

Opt-in writable external table registrations over mutable .csdbx files, backed by CSharpDB B+tree storage and limited to INSERT, UPDATE, and DELETE in v1 while .csdbtable archives remain read-only.

Window Functions

Done

Done as a bounded in-memory slice: ranking and common aggregate windows with partitioning, LAG/LEAD/FIRST_VALUE/LAST_VALUE, explicit ROWS frames, case-insensitive named windows, compatible shared ordering across different frames, deterministic NULL/peer behavior, prepared execution, cancellation, and configurable limits with explicit ResourceLimitExceeded failures. Disk spill is deferred and is not required for completion because memory growth is bounded; incompatible partition/order specifications and later SQL window forms remain explicitly unsupported.

EF Core Migration & Provider Validation

Done

Done for the bounded provider contract: a frozen, independently replayable three-version Up/Down SQL corpus covers empty and populated migrations, upgrade/downgrade paths, defaults/checks, composite keys, named relationships and immediate referential actions, primary-key changes, supported column rewrites, table/column/index rename chains, rollback, reopen, runtime CRUD, and ADO.NET schema inspection. Unsupported migration operations covered by this contract fail during SQL generation with stable CDBEF2001 diagnostics. EF migration execution remains embedded/direct; ordinary SQL and metadata transport parity is qualified separately.

Physical EXPLAIN & Profile

Done

Done for the bounded physical-plan contract: structural EXPLAIN and executing EXPLAIN ANALYZE rowsets distinguish estimates from actual rows, loops, and elapsed time; expose operator, access-path, index/join, predicate, and relative-cost metadata across direct, ADO.NET, HTTP, and gRPC; preserve normal DML transaction semantics; redact literal and prepared-parameter values from predicate metadata; and attach bounded partial diagnostics on cancellation or errors where safe.

DEFAULT & CHECK Constraints

Done

Done for the bounded literal and deterministic row-local slice: persisted literal defaults, DEFAULT markers, DEFAULT VALUES, named/unnamed column and table checks, stable CHECK identities, write enforcement, reopen persistence, catalogs, EF SQL, and metadata transport are qualified.

ALTER COLUMN Rewrites

Done

Done for the bounded ALTER COLUMN slice: exact INTEGER/REAL conversion with eligible index rebuilding, strict dependency-free UTF-8 TEXT/BLOB conversion, and indexed TEXT collation changes use transactional shadow-root rewrites; literal-default and nullability changes use validated transactional catalog updates. The rewrite paths preserve row ids, revalidate CHECK expressions and rebuilt uniqueness, roll back atomically after injected WAL failures, persist across reopen, and are emitted with the catalog operations in EF Core Up/Down migrations.

Primary & Unique Keys

Done

Done for the bounded key slice: named/unnamed single and composite INTEGER/TEXT primary/unique keys support persistence, enforcement, ordered catalogs, and EF migrations. Standalone primary-key add/drop covers validated logical-key changes with engine-owned backing-index creation/removal; adding a key to a populated table additionally supports bounded single-INTEGER physical rekeying with atomic eligible relational-index and complete ready full-text-owned-store rebuilding.

Foreign Key Constraints

Done

Done for immediate MATCH SIMPLE: column/table scalar and composite foreign keys have stable identities, candidate-key/type/collation validation, and the full RESTRICT/NO ACTION/CASCADE/SET NULL/SET DEFAULT matrix for deletes and referenced-key updates. Nested mutations preserve normal row semantics and transactional rollback across persistence, metadata, transports, archives, and tooling. EF-generated DDL covers the bounded relationships; SET DEFAULT and mutating ON UPDATE actions require explicit migration operations rather than relationship-model scaffolding.

Advanced Default & Check Expressions

Planned

Statement-time and computed default expressions plus broader safe check-expression forms beyond the completed deterministic row-local contract.

Advanced Rewrites & Physical Rekeying

Planned

Indexed TEXT/BLOB conversion, broader dependency-aware rewrites, additional key shapes and index families, and ordered/range REAL access beyond the completed bounded rewrite and single-INTEGER rekey paths.

Deferred Referential Semantics

Planned

Deferrable constraints and MATCH FULL/MATCH PARTIAL, separate from the completed immediate MATCH SIMPLE action matrix.

Broader ORM & Metadata Compatibility

Planned

Additional third-party ORM suites and further normalized metadata surfaces beyond the qualified EF Core and ADO.NET contracts.

SQL Release Qualification

In Progress

The automated GitHub gate blocks publishing on two clean full-suite passes for each supported operating system covering durable, in-memory, reopen/recovery configurations, historical-database upgrades, transport parity, the EF corpus, executable documentation, bounded property tests, and stable diagnostics for intentionally unsupported SQL. It also runs two balanced paired previous-release comparisons for the 18 persistent-read and in-memory master-table rows that are stable on hosted Windows runners. Disk-sensitive performance qualification is a required pre-tag local gate: two sequential balanced paired passes qualify each of the remaining ten durable SQL/collection single and batch write rows independently on one idle fixed-SSD Windows machine. Every exact row uses adjacent previous/candidate measurements, pass two reverses the starting order, and every individual measurement must retain at least 30 measured seconds and 10,000 latency samples within the bounded measurement cap. Each logical side has one predeclared attempt; evidence is not discarded, replaced, or silently retried. Both revisions use symmetrically conditioned artifacts with the same hash-recorded candidate benchmark harness; raw runs, recomputed aggregates, artifact closures, and pass reports are hash bound. After post-build quiescence, a required one-second Windows monitor covers every declared measurement. Five consecutive samples above 8% observable external process CPU, 0.5 CPU-core equivalent, or 4,194,304 observable external process I/O bytes per second contaminate the pass; named external build, test, installer, or update processes contaminate immediately. Missing monitor evidence, unavailable allowed runner-tree CPU, a coverage gap above five seconds, invalid benchmark evidence, unstable, order-sensitive, or regressed blocking assessments, and missing, unverifiable, or changed Windows Installer, Application event-log, or pending-file evidence fail closed; unavailable external-process counters remain explicit diagnostics. The expected local runtime is 3.5–4.5 hours. Stable comparisons enforce a 15% throughput limit and fail P95 only when regression exceeds both 25% and 0.05 ms; P99 remains diagnostic. Only the canonical durable-v3 local policy can publish a policy-bound status on the exact candidate commit. Its description is exactly policy=durable-v3; baseline=<40 lowercase hex>; design=<8 uppercase hex>; reports=<8 uppercase>/<8 uppercase>; older policy descriptions are rejected, and the release workflow requires the status from the configured attestor before publishing. Broader performance coverage remains in the existing scheduled report-only guardrails and manual supplemental suite diagnostics. This item closes when all automated functional and hosted-stable jobs and both local durable-write passes succeed for the release commit.

Remote Host Consolidation

Done

CSharpDB.Daemon now hosts the existing REST/HTTP /api surface and gRPC from one long-running process backed by the same warm daemon-hosted client. Standalone CSharpDB.Api remains supported for REST-only hosting.

Remote API-Key Protection

Done

Opt-in API-key mode protects REST /api/* and daemon gRPC calls with constant-time key comparison while keeping default no-auth behavior for compatibility.

Remote Host Security Hardening

Planned

Authorization, protected admin endpoint scopes, JWT/RBAC options, and TLS/mTLS deployment helpers for remote HTTP and gRPC access.

Daemon Service Packaging

Done

CSharpDB.Daemon can be packaged as a persistent background service across systemd, Windows Service, and launchd.

Cross-Platform Distribution

In Progress

Self-contained daemon archives and install scripts ship for Windows, Linux, and macOS; dotnet tool, Docker, Homebrew, and winget distribution remain future work.

ADO.NET GetSchema

Done

DbConnection.GetSchema() now exposes standard metadata collections for tooling and ORM schema discovery.

Collation Support

Done

BINARY, NOCASE, NOCASE_AI, and ICU:<locale> collation work across SQL schema/query semantics, metadata, ordered SQL text indexes, and collection path indexes.

Subqueries & Set Operations

Done

Scalar subqueries, IN/EXISTS (including correlated), UNION, UNION ALL, INTERSECT, and EXCEPT across SELECT results. INTERSECT ALL and EXCEPT ALL remain unsupported.

Visual Query Designer

Done

Admin query builder with source canvas, join editing, design grid, SQL preview, and saved layouts.

Long-Term Future

Advanced features and fundamental architecture enhancements, including long-range items that have since shipped.

Full-Text Search

Done

Inverted index support with tokenization, stemming, and relevance ranking.

Source-Generated Collections

Done

Current phase is complete: opt-in generated models provide GetGeneratedCollectionAsync<T>, generated descriptors/index bindings, binary direct payloads for supported shapes, JSON fallback for unsupported shapes, and trim/NativeAOT smoke coverage.

Generated Collection Package Ergonomics

Planned

Streamline NuGet/analyzer packaging, templates, onboarding docs, and project setup for the opt-in generated collection path.

Broader Generated Model Coverage

Planned

Expand generator support beyond the current scalar, scalar collection, nested scalar, and nested collection-scalar shapes.

SQL Batched Row Transport

Done

Internal row-batch transport serves as the batch-first SQL execution foundation across batch-capable result boundaries, scans, joins, and generic aggregates.

External Table Index Coverage

Planned

Follow writable .csdbx storage with broader external-table indexes, planner costing, and multi-column lookup/range support beyond the current archive primary-key point-lookup path.

Page-Level Compression

Planned

Deep engine/page compression remains planned; application-level payload compression is available as a sample/SDK pattern without changing the storage format.

At-Rest Encryption

Research

Encrypt database and WAL files with passphrase-based key management and explicit plaintext/encrypted migration/export paths; implementation must meet the database-encryption plan entry criteria before shipping.

Cost-Based Query Optimizer

Done

Current phase is complete: ANALYZE-driven stats-guided costing uses internal histograms, heavy hitters, composite-prefix summaries, skew-aware estimates, correlation-aware filters/joins, non-unique lookup costing, hash build-side choice, and bounded DP join reordering.

Adaptive Query Re-Optimization

Done

Current phase is complete: opt-in adaptive join execution can switch eligible index nested-loop joins to hash joins and flip inner hash build sides at safe pre-emission boundaries.

Public Planner Histogram Inspection

Done

Stable SQL-first diagnostics expose sys.planner_histograms, sys.planner_heavy_hitters, sys.planner_index_prefix_stats, and EXPLAIN ESTIMATE FOR <query>.

Async I/O Batching

Done

Current phase is complete: WAL frame-chunk writes, chunked checkpoint page copies, shared snapshot/export batching, reusable B-tree copy utilities, and the close-out audit cover the main storage and maintenance write paths.

Low-Latency Durable Writes

Done

Advisory planner-stat persistence can stay deferred without weakening committed-row durability, and sys.table_stats.row_count_is_exact makes exact versus estimated row-count semantics explicit.

Group Commit / Deferred WAL Flush

Done

Opt-in UseDurableCommitBatchWindow(...) batches durable WAL flushes across contending in-process transactions — an expert measure-first knob rather than default behavior.

Initial Multi-Writer Support

Done

Explicit WriteTransaction conflict-detected retry flow, shared auto-commit non-insert isolation, and opt-in ConcurrentWriteTransactions for shared implicit inserts.

Broader Multi-Writer Optimization

Done

Opt-in concurrent write transactions now reserve shared row-id ranges and rebase hot right-edge insert pages against pending WAL images for improved insert fan-in.

API-Level Sharding

Done

Route-aware client, REST, gRPC, daemon, and ADO.NET surfaces can target single-shard operations across multiple warm CSharpDB database files using explicit keyspace/shard-key context and stable virtual-bucket ownership.

Replication & Change Feed

Research

Retained commit-log change feeds and reactive query subscriptions for read replicas, live Admin views, and event-driven applications.

Current Limitations

Known simplifications in the current implementation:

AreaLimitation
Functions and automationCSharpDB's UDF/command model is trusted and in-process by design. Current supported surfaces include host-registered scalar functions, common built-ins, trusted commands, form/report/pipeline hooks, declarative action sequences, and local Admin Forms C# modules; untrusted sandboxed execution is intentionally out of scope
QueryScalar/IN/EXISTS subqueries are supported, including correlated cases in WHERE, non-aggregate projection, and UPDATE/DELETE expressions; correlated subqueries are not yet supported in JOIN ON, GROUP BY, HAVING, ORDER BY, or aggregate projections
QueryUNION, UNION ALL, INTERSECT, and EXCEPT are implemented, with canonical direct, ADO.NET, REST, and gRPC parity coverage; INTERSECT ALL/EXCEPT ALL remain intentionally unsupported with stable diagnostics
QueryWindow functions are complete for the bounded in-memory slice, including ranking, aggregate, navigation/value functions, explicit ROWS frames, named windows, compatible shared ordering, prepared execution, cancellation, controlled resource-limit failures, and physical window explain/profile rows. RANGE/GROUPS/EXCLUDE, DISTINCT windows, NULL-treatment syntax, incompatible partition/order specifications, mixed grouped/subquery window queries, and disk spill remain deferred
SchemaLiteral SQL DEFAULT values, deterministic row-local CHECK constraints, stable table, column, CHECK, key, and foreign-key identities, logical composite INTEGER/TEXT primary/unique keys, standalone PRIMARY KEY add/drop with engine-owned backing-index maintenance plus bounded populated single-INTEGER rekeying on add across ready relational and complete ready full-text index families, table-level/composite INTEGER/TEXT foreign keys with MATCH SIMPLE and the full immediate RESTRICT/NO ACTION/CASCADE/SET NULL/SET DEFAULT delete and update action matrix, additive transport/archive and ADO.NET constraint metadata, SET/DROP DEFAULT, validated SET/DROP NOT NULL and named constraint changes, plus transactional shadow-root rewrites for exact indexed INTEGER/REAL changes, strict dependency-free UTF-8 TEXT/BLOB changes, and TEXT collation changes with inherited ordinary/unique SQL-index rebuilding are implemented and covered by deterministic WAL-failure recovery tests. Statement-time/function defaults, arbitrary functions/subqueries in checks, indexed TEXT/BLOB and broader dependency rewrites, broader physical rekey shapes/index kinds, deferred constraints, and MATCH FULL/PARTIAL are separate advanced work
IndexesEquality lookups support INTEGER, TEXT, and hashed REAL SQL indexes. INTEGER-tag values on REAL-indexed columns must be exactly representable within ±253; ordered/range REAL access remains unsupported, while ordered range-scan pushdown supports eligible single-column INTEGER and single-column ordered TEXT index paths
RowIdLegacy table schemas without persisted high-water metadata may pay a one-time key scan on first insert
CollectionsFindByIndexAsync supports declared field-equality lookups; FindByPathAsync and FindByPathRangeAsync support path-based queries on indexed paths; FindAsync remains a full scan for unindexed predicates. Generated collections require registered descriptors for existing collection indexes; unsupported generated model shapes warn and use the source-generated JSON fallback instead of binary direct payloads
External TablesNative .csdbtable archives can be registered and queried as read-only external tables. Writable external tables are planned as an opt-in .csdbx format; current archives remain read-only, and broader external indexes, range seeks, and deeper planner costing remain planned
ShardingAPI-level sharding routes explicit keyspace/shard-key requests to one database file at a time. Cross-shard SQL, cross-shard transactions, automatic resharding/data movement, replication, and failover remain planned or out of scope for v1
NetworkingCSharpDB.Daemon now hosts both REST and gRPC from one process; named pipes remain reserved but are not implemented end to end today
SecurityRemote REST and daemon gRPC support opt-in API-key authentication, defaulting to None for compatibility. JWT, RBAC, mTLS helpers, TLS-specific configuration, and at-rest encryption are not implemented
Admin FormsThe Forms designer/runtime supports the core generated-form and data-entry path plus trusted command-backed automation, including lifecycle events, command buttons, selected-control events, conditional UI rules, domain formula helpers, declarative action sequences, and local C# code modules. It still needs Access-parity work for responsive runtime rendering, complete inferred validation, richer form modes, additional events, advanced filtering/sorting, report/query/import/export actions, macro loops/on-error/temp vars, and broader controls
Admin ReportsThe Reports designer/runtime supports the core banded preview path plus trusted command-backed preview lifecycle events, but still needs Access-parity work for bounded saved-query previews, full report output/export, parameters, richer grouping and totals semantics, conditional formatting, subreports, and broader controls
Text / MultilingualText is stored as UTF-8 and supports all Unicode languages; default semantics remain ordinal, while opt-in BINARY, NOCASE, NOCASE_AI, and ICU:<locale> collation work across SQL schema/query semantics, metadata, ordered SQL text indexes, and collection path indexes
ConcurrencyPhysical WAL commit path is still serialized at the storage boundary. Initial multi-writer support is shipped, but observed gains depend on conflict shape and whether shared auto-commit INSERT is left on the default serialized path
StorageNo page-level compression; the compression SDK sample stores compressed payloads as ordinary application-managed BLOB values
StorageNo at-rest encryption for database/WAL files; on-disk storage is plaintext only
StorageMemory-mapped reads are opt-in and currently apply only to clean main-file pages; WAL-backed reads still rely on the WAL/cache path
StorageBy default, durable auto-commit single-row writes still pay a physical WAL flush per commit; opt-in UseDurableCommitBatchWindow(...) can trade some commit latency for higher throughput
QueryPhase-2 cost-based planning is in place: ANALYZE, sys.table_stats, sys.column_stats, public planner-stat diagnostics, histogram/heavy-hitter/prefix estimates, and bounded small-chain join reordering now feed join/access-path costing. Stable physical EXPLAIN and executing EXPLAIN ANALYZE rowsets expose selected operators, relative row-work costs, nullable row estimates, and separate runtime rows, loops, and elapsed time. Their 256 KiB limit is an inline content budget rather than an exact serialized transport size. Profile mode executes its target under normal transaction semantics; cancellation and execution errors remain failures, with bounded redacted partial-profile diagnostics attached where safe. Opt-in adaptive join re-optimization can react to stale-stat or parameter-sensitive join cardinality misses, while adaptive stats persistence and arbitrary mid-plan reordering remain future work
QueryInternal row-batch transport is now the default scan-heavy execution foundation across batch-capable scans, joins, aggregates, and result boundaries; remaining work is broader kernel specialization and optional SIMD-style tuning rather than missing core batch coverage

Completed Milestones

Major features already implemented and shipped:

Single-file database with 4 KB page-oriented storage
B+tree-backed tables and secondary indexes
Write-Ahead Log with crash recovery and auto-checkpoint
Concurrent snapshot-isolated readers via WAL-based MVCC
SQL pipeline for the supported CSharpDB SQL subset: tokenizer, parser, planner, operators
JOINs (INNER, LEFT, RIGHT, CROSS), aggregates, GROUP BY, HAVING, CTEs
UNION, INTERSECT, EXCEPT set operations
Scalar/IN/EXISTS subqueries (incl. correlated) in filters, projections, and UPDATE/DELETE
Scalar TEXT(expr) for filter-friendly text coercion
Composite (multi-column) indexes
Ordered single-column INTEGER and TEXT index range scans in eligible fast lookup paths
ANALYZE with persisted table/column stats and stale-aware refresh
Phase-2 cost-based query planning: statistics-guided access paths, join method/reordering, histogram/cardinality estimation
Public planner diagnostics with EXPLAIN ESTIMATE and sys.planner_* catalogs
Opt-in adaptive join re-optimization for eligible stale-stat and parameter-sensitive joins
SELECT DISTINCT and DISTINCT aggregates
SQL statement and SELECT plan caching
First-class IDENTITY / AUTOINCREMENT support for INTEGER PRIMARY KEY columns
Standalone PRIMARY KEY add/drop with engine-owned backing-index creation/removal, plus bounded populated single-INTEGER rekeying on add with atomic ready relational-index and complete ready full-text-owned-store rebuilding, including EF migrations, rollback, reopen, and dependency guards
Initial exact dependency-free INTEGER/REAL and indexed TEXT-collation ALTER COLUMN rewrites with atomic table/index roots, row-ID, check/uniqueness, rollback, reopen, and EF migration coverage
Strict UTF-8 dependency-free TEXT/BLOB ALTER COLUMN rewrites, hashed equality REAL SQL indexes, and atomic ready-SQL-index rebuilding for exact INTEGER/REAL changes, including EF Up/Down coverage
Persisted table NextRowId high-water mark with compatibility fallback
Batch-first SQL row-batch execution across scans, joins, aggregates, and result boundaries
Views and triggers (BEFORE/AFTER on INSERT/UPDATE/DELETE)
Scalar and composite foreign keys with stable identities, column/table syntax, MATCH SIMPLE, the full immediate RESTRICT/NO ACTION/CASCADE/SET NULL/SET DEFAULT delete and update action matrix, ordered metadata, and transport/archive round trips
Older-database foreign-key retrofit migration across direct, HTTP, gRPC, CLI, and Admin
ADO.NET provider with connection pooling and GetSchema metadata collections
In-memory database mode with explicit load/save APIs
Shared/private in-memory ADO.NET connections with named shared-memory hosts
Document Collection API with typed Put/Get/Delete/Scan/Find
Collection secondary field indexes via EnsureIndexAsync / FindByIndexAsync
Binary direct-payload collection storage with direct hydration and field/path extraction
Collection path indexes: nested scalar, array-element, nested array-object, Guid, temporal, ordered text
Collection path query APIs: FindByPathAsync and FindByPathRangeAsync
Source-generated typed collection fast path with trim-safe NativeAOT-friendly access
Full-text search with tokenization, stemming, and relevance ranking
Hybrid storage mode with lazy-resident durable storage and gRPC tunable file-cache
Client-wide BackupAsync / RestoreAsync across direct, HTTP, gRPC, CLI, and Admin
Native .csdbtable table archives with Admin Import / Export and read-only external table registration
ReplaceAsync for index stores
Maintenance report, REINDEX, and VACUUM flows across client, CLI, API, and Admin UI
Dedicated gRPC daemon host
Remote host consolidation in CSharpDB.Daemon, with REST /api and gRPC sharing one warm hosted database client
Opt-in API-key protection for REST /api/* and daemon gRPC calls
Daemon service packaging with self-contained archives and service install assets
Storage tuning presets, bounded WAL read caching, memory-mapped reads, and sliced background checkpointing
SQL executor/read-path fast paths for compact projections, broader join/index coverage, and correlated subquery filters
REST API with 34+ endpoints and OpenAPI/Scalar documentation
Blazor Server admin dashboard with Forms and Reports designers
Trusted C# callbacks, commands, Admin automation hooks, and local Admin Forms C# code modules
Interactive CLI with meta-commands and file execution
Package-driven ETL pipelines with validation, dry-run, execute/resume, and Admin visual designer
VS Code extension with schema explorer
MCP server for AI assistant integration
NativeAOT C library for cross-language FFI
B+tree delete rebalancing with underflow handling
Reusable snapshot reader sessions for higher concurrent-read throughput
Comprehensive benchmark suite (micro, macro, stress, scaling, in-memory, shared-memory)
Collection write-path performance recovery with separated read/write B-tree routing
Covered composite-index fast-path optimization
Durable-write commit batching for higher concurrent write throughput