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

Done

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

Index Range Scans

Done

Use indexes for <, >, <=, >=, BETWEEN — not just equality lookups.

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.

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.

User-Defined Functions

Planned

Broader built-in scalar function registry, user-registered C# functions, and native plugin extensions.

Window Functions

Planned

ROW_NUMBER(), RANK(), DENSE_RANK(), LEAD(), LAG() for analytical queries.

DEFAULT & CHECK Constraints

Planned

Default expressions in column definitions and arbitrary expression-based constraints per column or table.

Foreign Key Constraints

Done

v1 support for single-column, column-level REFERENCES with optional ON DELETE CASCADE, plus metadata/tooling surfaces.

Remote Host Consolidation

Planned

Fold REST/HTTP into CSharpDB.Daemon so one server host serves REST, gRPC, and future transports from a shared warm Database instance.

Remote Host Security

Planned

Built-in authentication, authorization, API keys, protected admin endpoints, and TLS/mTLS deployment support.

Daemon Service Packaging

Planned

Package CSharpDB.Daemon as a persistent background service across systemd, Windows Service, and launchd.

Cross-Platform Distribution

Planned

dotnet tool, self-contained binaries, Docker, Homebrew, winget, and install scripts.

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 now work across SQL and collection indexes; dedicated ordered SQL text index optimization remains future work.

Subqueries & Set Operations

Done

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

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

Planned

No-reflection, trim-safe typed collection API backed by generated codecs and index bindings.

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.

Page-Level Compression

Planned

Compress cell content within pages to reduce I/O and storage footprint.

At-Rest Encryption

Research

Encrypt database and WAL files with passphrase-based key management and explicit migration paths.

Cost-Based Query Optimizer

Planned

Statistics-driven join ordering and index selection with advanced histograms and adaptive re-optimization.

Async I/O & Group Commit

Planned

Group multiple page writes into fewer system calls. Buffer committed WAL writes across transactions.

Multi-Writer Support

Research

Allow concurrent write transactions with conflict detection and retry.

Replication & Change Feed

Research

Stream committed changes for read replicas or event-driven architectures.

WebAssembly Sandboxed UDFs

Research

Execute untrusted user-submitted functions in a WASM sandbox with resource limits via Wasmtime.

Current Limitations

Known simplifications in the current implementation:

AreaLimitation
FunctionsLimited scalar function surface; no user-defined functions yet
QueryCorrelated subqueries not yet supported in JOIN ON, GROUP BY, HAVING, ORDER BY, or aggregate projections
QueryNo window functions; no UNION ALL
SchemaNo 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
IndexesOrdered range-scan pushdown limited to single-column INTEGER index paths
NetworkingRemote access split between CSharpDB.Api (HTTP) and CSharpDB.Daemon (gRPC); consolidation planned
SecurityNo built-in authentication/authorization or TLS/mTLS; relies on external network controls
CollationDefault 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
ConcurrencySingle writer only (no multi-writer)
StorageNo page-level compression or at-rest encryption

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
Concurrent snapshot-isolated readers via MVCC
Full SQL pipeline: tokenizer, parser, planner, operators
JOINs (INNER, LEFT, RIGHT, CROSS), aggregates, CTEs
UNION, INTERSECT, EXCEPT set operations
Scalar/IN/EXISTS subqueries (incl. correlated)
Composite indexes with range scans
ANALYZE with persisted table/column stats
SELECT DISTINCT and DISTINCT aggregates
Prepared statement and query plan caching
Batch-first SQL row-batch execution foundation across scans, joins, aggregates, and result boundaries
Views and triggers (BEFORE/AFTER)
ADO.NET provider with connection pooling
ADO.NET GetSchema metadata collections for tooling and ORMs
In-memory and hybrid database modes
Document Collection API with path indexes
ETL pipeline runtime with visual designer
Stored procedures with typed parameters
Dedicated gRPC daemon host
REST API with 34+ endpoints
Blazor Server admin dashboard
Interactive CLI with meta-commands
VS Code extension with schema explorer
MCP server for AI assistant integration
NativeAOT C library for cross-language FFI
Background WAL auto-checkpointing
B+tree delete rebalancing
Client-wide backup and restore
Older-database foreign-key retrofit migration across direct, HTTP, gRPC, CLI, and Admin
Full-text search with tokenization and ranking
Comprehensive benchmark suite
Admin reports designer with banded layouts, grouping, expressions, and print preview