Roadmap
Planned direction for CSharpDB — organized by timeframe and priority. Reflects the current v2.8.0 state.
Near-Term Completed
Recently completed improvements to query performance, storage behavior, provider/tooling compatibility, maintenance workflows, and developer ergonomics.
DISTINCT & Composite Indexes
DoneDeduplicate SELECT output with DISTINCT. Multi-column indexes for broader query coverage.
Index Range Scans
DoneUse indexes for <, >, <=, >=, BETWEEN — not just equality lookups.
Prepared Statement Cache
DoneCache parsed ASTs and query plans to avoid re-parsing identical SQL statements.
In-Memory Database Mode
DoneOpen a database fully in memory, load from disk, and save committed snapshots back to disk.
Collection Path Indexes
DoneNested scalar, array-element, nested array-object, Guid, temporal, and ordered text path indexes.
B+Tree Delete Rebalancing
DoneMerge underflowed pages on delete to reclaim space via borrow/merge with interior collapse.
Database Administration
DoneMaintenance report, REINDEX, VACUUM/compact, fragmentation analysis, and database size report.
Dedicated gRPC Daemon
DoneCSharpDB.Daemon host with full gRPC coverage for SQL, schema, procedures, collections, and maintenance.
Background WAL Checkpointing
DoneIncremental/sliced auto-checkpointing to move work off the triggering commit path.
Hybrid Storage Mode
DoneLazy-resident durable storage with on-demand page loading and gRPC tunable file-cache.
Table & Index Statistics
DoneANALYZE command with persisted row counts, column NDV/min/max, and initial stats-guided index selection.
Client Backup & Restore
DoneBackupAsync / RestoreAsync as first-class operations across direct, HTTP, gRPC, CLI, and Admin.
Older DB Foreign-Key Retrofit Migration
DoneValidate/apply maintenance workflow that rewrites existing child tables with persisted FK metadata across direct, HTTP, gRPC, CLI, and Admin.
Admin Reports Designer
DoneVisual 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.
User-Defined Functions
PlannedBroader built-in scalar function registry, user-registered C# functions, and native plugin extensions.
Window Functions
PlannedROW_NUMBER(), RANK(), DENSE_RANK(), LEAD(), LAG() for analytical queries.
DEFAULT & CHECK Constraints
PlannedDefault expressions in column definitions and arbitrary expression-based constraints per column or table.
Foreign Key Constraints
Donev1 support for single-column, column-level REFERENCES with optional ON DELETE CASCADE, plus metadata/tooling surfaces.
Remote Host Consolidation
PlannedFold REST/HTTP into CSharpDB.Daemon so one server host serves REST, gRPC, and future transports from a shared warm Database instance.
Remote Host Security
PlannedBuilt-in authentication, authorization, API keys, protected admin endpoints, and TLS/mTLS deployment support.
Daemon Service Packaging
PlannedPackage CSharpDB.Daemon as a persistent background service across systemd, Windows Service, and launchd.
Cross-Platform Distribution
Planneddotnet tool, self-contained binaries, Docker, Homebrew, winget, and install scripts.
ADO.NET GetSchema
DoneDbConnection.GetSchema() now exposes standard metadata collections for tooling and ORM schema discovery.
Collation Support
DoneBINARY, NOCASE, NOCASE_AI, and ICU:<locale> collation now work across SQL and collection indexes; dedicated ordered SQL text index optimization remains future work.
Subqueries & Set Operations
DoneScalar subqueries, IN/EXISTS (including correlated), UNION, INTERSECT, EXCEPT across SELECT results.
Visual Query Designer
DoneAdmin 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
DoneInverted index support with tokenization, stemming, and relevance ranking.
Source-Generated Collections
PlannedNo-reflection, trim-safe typed collection API backed by generated codecs and index bindings.
SQL Batched Row Transport
DoneInternal row-batch transport serves as the batch-first SQL execution foundation across batch-capable result boundaries, scans, joins, and generic aggregates.
Page-Level Compression
PlannedCompress cell content within pages to reduce I/O and storage footprint.
At-Rest Encryption
ResearchEncrypt database and WAL files with passphrase-based key management and explicit migration paths.
Cost-Based Query Optimizer
PlannedStatistics-driven join ordering and index selection with advanced histograms and adaptive re-optimization.
Async I/O & Group Commit
PlannedGroup multiple page writes into fewer system calls. Buffer committed WAL writes across transactions.
Multi-Writer Support
ResearchAllow concurrent write transactions with conflict detection and retry.
Replication & Change Feed
ResearchStream committed changes for read replicas or event-driven architectures.
WebAssembly Sandboxed UDFs
ResearchExecute untrusted user-submitted functions in a WASM sandbox with resource limits via Wasmtime.
Current Limitations
Known simplifications in the current implementation:
| Area | Limitation |
|---|---|
| Functions | Limited scalar function surface; no user-defined functions yet |
| Query | Correlated subqueries not yet supported in JOIN ON, GROUP BY, HAVING, ORDER BY, or aggregate projections |
| Query | No window functions; no UNION ALL |
| Schema | No SQL DEFAULT column values or CHECK constraints yet. Foreign keys are currently v1 only: single-column, column-level REFERENCES with optional ON DELETE CASCADE; table-level/composite/deferred foreign keys and ON UPDATE actions are not implemented |
| Indexes | Ordered range-scan pushdown limited to single-column INTEGER index paths |
| Networking | Remote access split between CSharpDB.Api (HTTP) and CSharpDB.Daemon (gRPC); consolidation planned |
| Security | No built-in authentication/authorization or TLS/mTLS; relies on external network controls |
| Collation | Default semantics remain ordinal, but opt-in BINARY, NOCASE, NOCASE_AI, and ICU:<locale> collation are implemented; dedicated ordered SQL text index optimization remains future work |
| Concurrency | Single writer only (no multi-writer) |
| Storage | No page-level compression or at-rest encryption |
Completed Milestones
Major features already implemented and shipped: