Changelog
Release announcements and project updates. For planned work, see the roadmap.
v3.8.0 — Native Table Archives & External Tables
Adds a real table-archive and external-table workflow: native .csdbtable files, fast snapshot exports, Admin Import / Export tooling, and read-only SQL access to archived tables:
- Native table archives — New
CSharpDB.ImportExportproject with native.csdbtableschema, manifest, row stream, BLOB/null/type metadata, and optional integer primary-key index sections. - Fast snapshot exports — Embedded client transport can export directly from a reader snapshot instead of paging through the UI, with progress callbacks and cancellation support for large tables.
- Admin Import / Export — New Admin project area with export, register external table, restore table, one-time download endpoint, server-path exports, progress UI, cancellation, and Object Explorer access from both Tools and table context menus.
- External table SQL — Added
CREATE EXTERNAL TABLE ... FROM 'path.csdbtable'andDROP EXTERNAL TABLE, plussys.external_tablesmetadata and relative-path resolution from the database folder. - Query planner integration — Registered archives are resolved as read-only table sources through
ExternalTableScanOperator, can participate in normalSELECTqueries and joins, use metadata fast paths forCOUNT(*), and use embedded primary-key indexes for eligible point lookups. - Read-only safety — Writes, schema mutation, index creation, and trigger target usage against external tables are rejected with clear errors.
- Changelog and blog docs — Added a table archives blog post and ignored generated
*.csdbtablefiles so local exports do not become source artifacts.
v3.7.0 — Planner Observability, Adaptive Reoptimization & View Paging
Completes the optimizer and async I/O close-out work, exposes planner diagnostics publicly, and fixes the view/query paths found during the customer-filtered fulfillment investigation:
- Planner diagnostics — Added
EXPLAIN ESTIMATE FOR SELECTcoverage for select, WITH, and compound queries, plussys.planner_*virtual catalogs for histograms, heavy hitters, and composite index prefix statistics. - Admin plan visibility — Query tabs can run estimates and show planner output in the Plan tab so users can inspect row estimates and plan choices without leaving Admin.
- Opt-in adaptive reoptimization — New
DatabaseOptions, embedded ADO.NET connection-string support, diagnostics, and fail-closed handling let eligible join plans correct bad cardinality assumptions before rows are emitted. - View/query fixes — Paged view browsing now issues bounded
LIMIT/OFFSETSQL, simple view row-goal planning can reorder eligible join chains, and Query tab grids preserve scroll/pager layout. - Lookup join and result metadata polish — Improved indexed local predicate planning, residual right-side filters, index scan capacity hints, and SQL
ColumnTypespropagation through engine, API, client, and Admin surfaces. - Benchmarks and DataGen — Closed the current generated collection fast-path and DataGen direct-load phase, refreshed release benchmark scorecards, added optimizer/async I/O close-out suites, and added a WAL point-read benchmark with latency-column guardrail support.
v3.6.0 — Trusted C# Callbacks, Built-In Functions & Admin Automation
Adds trusted in-process C# callbacks across SQL, formulas, procedures, forms, reports, and pipeline surfaces, then rounds the feature out with tableless scalar SQL, built-ins, and Admin discovery:
- Trusted scalar functions and commands — Host applications can register scalar functions through
DbFunctionRegistryand commands throughDbCommandRegistry, including async command support, timeouts, and shared argument conversion. - Automation surfaces — Admin Forms now support lifecycle events, selected-control events, command buttons, reusable action sequences, built-in record actions, conditional action steps, and generated automation metadata. Reports and pipelines gained trusted command hooks.
- Tableless scalar SQL — Added
SELECTwithoutFROMusing a single-row planner source for scalar expressions and callbacks that do not need row context. - Built-in scalar functions — Added common Access-style text, date/time, numeric, conversion, and null helpers for SQL and Admin formula use.
- Callback catalog polish — Added callback metadata including
CanRunWithoutFrom, SQL editor autocomplete for built-ins and tableless-safe callbacks, and an Internal/External split in the Admin callback catalog. - Release validation — Final tableless/callback stabilization passed with
1,877tests, plus build, pack, daemon publish, and callback benchmark validation.
v3.5.0 — Generated Collection Payload Fast Path & Studio Mockups
Completes the opt-in generated collection binary payload fast path, refreshes release benchmark artifacts, and adds confirmed CSharpDB Studio Admin mockup documentation:
- Generated collection binary payloads — Source-generated collection models now encode/decode fixed field order, compact type/null metadata, and raw values while non-generated collection paths keep their existing JSON and binary behavior.
- Direct payload decode improvements — Avoids duplicated direct payload header parsing, adds single-segment
ReadOnlySpan<byte>top-level field lookups, and improves targeted UTF-8 span plumbing for text index/read/compare paths. - Collection benchmark coverage — Added generated collection codec benchmarks and expanded binary codec/generator tests. Focused investigation showed material gains in direct payload decode, field reads, field compares, and path-index lookups.
- Release-core refresh — Refreshed benchmark README/history from the April 26 release-core artifacts; final guardrail compare passed with
PASS=185, WARN=0, SKIP=0, FAIL=0. - Admin UI planning — Added CSharpDB Studio access-parity notes and static Admin UI mockups under
www/admin-ui-mockups.
v3.4.0 — Admin Runtime, Fulfillment Hub Sample & Docs Polish
Focuses on making CSharpDB easier to explore locally: a richer Admin experience, a complete Fulfillment Hub sample database, a run-only forms web host, and clearer docs for launching and learning from the project:
- Fulfillment Hub sample — New end-to-end sample that seeds a working database with tables, views, stored procedures, forms, reports, pipelines, collections, and full-text search data. The walkthrough shows how to generate the database and open it through CSharpDB Admin.
- Admin query workflow polish — Query autocomplete now handles
LIMIT,UPDATE ... SET,WHEREcolumn suggestions, andINSERT INTO ... columns ... VALUESflow more reliably. - Designer usability fixes — Form designer property fields now respect the current light/dark theme, and Query Designer views include resizable split bars so long SQL previews and result grids can be adjusted without losing context.
- Forms-only web host — Added a run-only Forms Web project path for displaying saved forms from a CSharpDB database without exposing design mode. Static assets, shared styling, and the themed home screen now load correctly when started through the provided script.
- Local Admin launcher guidance — New blog documentation explains how to create a small C# launcher executable that starts
CSharpDB.Admin.exe, waits for the ASP.NET Core endpoint, and opens the default browser. - Website documentation polish — Added the Fulfillment Hub sample blog post, improved tutorial code color-coding across the static docs pages, refreshed release/PR notes, and kept the sitemap/blog index aligned with the new content.
v3.3.0 — Durable Write Performance & Embedded Storage Tuning
Focused on durable write throughput, a new storage-tuning surface for embedded users, and release-stable benchmark publishing. Promoted from the April 21, 2026 release-core run after a clean guardrail compare (PASS=185, WARN=0, SKIP=0, FAIL=0):
- Append-optimized indexed insert paths — Append-optimized row-id chains and hashed index payloads, overflow-store improvements, hot right-edge recovery, and expanded commit-path diagnostics. Promoted
InsertBatch B10000durable ingest lands at 798.25K rows/sec — 1.48× the matched SQLite WAL+FULL baseline on the same runner. - Trailing-integer composite grouped aggregates — The planner can now route grouped aggregates through a composite index when the grouping key prefixes the index and the trailing column is an integer.
- SQL index metadata defaults — Multi-column indexes no longer receive trailing-integer hash options unless explicitly requested. Existing serialized options continue to resolve through the legacy compatibility path.
- Embedded storage tuning for ADO.NET and EF Core — New
Storage Preset=andEmbedded Open Mode=connection-string keywords onCSharpDb.Data, matchingCSharpDbConnection.DirectDatabaseOptions/HybridDatabaseOptions, and EF CoreUseStoragePreset()/UseEmbeddedOpenMode(). Ships with five presets (WriteOptimized,LowLatencyDurableWrite,DirectLookupOptimized,DirectColdFileLookup,HybridFileCache) and three open modes (Direct,HybridIncrementalDurable,HybridSnapshot). - Same-runner SQLite comparison coverage — New SQLite C API, concurrent SQLite, concurrent ADO.NET, strict insert, and EF Core comparison harnesses.
--sqlite-compare,--concurrent-sqlite-capi-compare,--concurrent-adonet-compare, and--efcore-comparecommands; promoted comparison rows intests/CSharpDB.Benchmarks/SQLITE_COMPARISON.md. - Release-stable benchmark publishing — Balanced
--release-coresuite (master, durable batching, concurrent writes, hybrid storage, hot-set reads, cold open, SQLite comparison), manifest-driven README generator, row-specific guardrail tolerances, and separate catalog/history/SQLite comparison files. - Refreshed package READMEs and website — Root README performance numbers updated (1.67M collection gets/sec, 10.77M concurrent reader-burst reads/sec, 798.25K durable
InsertBatch B10000rows/sec, 1.04K concurrent durable commits/sec); package READMEs refreshed for Admin, Forms, Reports, CLI, MCP, Native, API, Data, Engine, EF Core, and the aggregate package surface.
v3.2.0 — Entity Framework Core 10 Provider & Scalar Aggregate Optimization
Adds the first embedded EF Core provider, supporting planner/parser work, and a focused scalar aggregate optimization pass:
CSharpDB.EntityFrameworkCore(v1) — First embedded EF Core 10 provider layered overCSharpDB.Data. AddsUseCSharpDb(...)configuration, design-time services, migrations/history/lock plumbing, relational connection services, SQL generation, type mapping, update batching, and database creation. Packaged and published alongside the existing NuGet set; runnable example atsamples/efcore-provider.- Parser and planner support for EF-emitted shapes — Extended tokenizer, parser, query planner, and result handling plus ADO.NET command/parameter plumbing so the provider can execute the required EF query and command shapes cleanly.
- Scalar aggregate lookup optimization — Simple indexed and primary-key-backed
COUNT(...)andSUM(...)cases now reuse lightweight lookup plans instead of materializing full scans. Focused baseline refresh checked in attests/CSharpDB.Benchmarks/baselines/focused-validation/20260418-185724. - Benchmark guardrail stabilization — Scenario selection, durable SQL batching coverage, and guardrail scripting hardened for repeat runs. Internal cleanup removed the unused
FlushBufferedWritesAsyncmethod fromIWalFlushPolicyto align with the current commit/flush contract. - New docs — the EF Core provider guide, ADO.NET / EF storage tuning guide, and a benchmark-driven CSharpDB-versus-SQLite guide.
v3.1.0 — Concurrent Writers, Daemon Hybrid Defaults & Bulk Ingest Samples
Extends the initial phase-1 multi-writer work with richer transaction handling, commit-path optimization, transport integration, and new user-facing samples:
- Concurrent insert execution (opt-in) — New
ImplicitInsertExecutionMode.ConcurrentWriteTransactionsroutes shared auto-commit inserts through isolatedWriteTransactionstate for disjoint-key workloads. Richer explicitWriteTransactionhandling with logical conflict tracking, disjunctive and range predicate validation, and insert-side rebase/split recovery. - Durable write fan-in (phase 3/4) — Snapshot checkpoint retention tuning and shared auto-commit fan-in on top of the phase-1 multi-writer base. Split-aware conflict handling and leaf/interior rebase hardening reduce insert-path retry tails under concurrency. New insert fan-in and commit-path diagnostics.
- Commit-path optimizations — Insert commit allocation hot paths, single-insert commit cost, collection secondary-index maintenance, and reader-session
COUNT(*)all received focused optimization. WAL publication and flush staging were split into explicit stages with dedicated diagnostics and refreshed baselines. - ADO.NET through Client and hybrid daemon defaults — The ADO.NET provider now routes through
CSharpDB.Clientfor remote sessions, and the daemon host defaults moved to the newer hybrid multi-writer hosting model. - Samples and tutorials — New Atlas Platform Showcase sample (schema, workbook queries, procedures, and reports), an API-first CSV bulk import sample and tutorial, and a multi-writer follow-up planning document linked from the roadmap.
v3.0.0 — Source-Generated Collections & Performance Recovery
Source-generated collection models are now part of the engine, with a trim-safe generated collection API and focused write-path performance recovery:
- CSharpDB.Generators — No-reflection, trim-safe typed collection API via
GetGeneratedCollectionAsync<T>()andGeneratedCollection<T> - Generated field metadata — Analyzer-packaged collection models, codecs, and field descriptors with NativeAOT-friendly model registration
- Collection write-path recovery — Separated write probes from read-side B-tree routing-cache, reused traversal scratch during insert/replace, and buffered catalog mutation bookkeeping
- Covered composite-index fast-path — Recovered covered composite-index lookup optimization for index-only queries
v2.9.0 — Cost-Based Optimizer, Multi-Writer & CLI Refresh
A broad release carrying phase-2 planner statistics, durable-write batching, initial multi-writer support, and a richer CLI experience:
- Phase-2 planner statistics — Internal histograms, heavy hitters, composite-prefix summaries, and bounded DP join reordering for richer selectivity and cardinality estimates
- Durable group commit — Opt-in
UseDurableCommitBatchWindow(...)batches durable WAL flushes across contending writers - Initial multi-writer support — Explicit
WriteTransactionwith conflict-detected retry, shared auto-commit non-insert isolation, and opt-in concurrent implicit inserts - Async I/O batching — WAL frame-chunk writes, chunked checkpoint copies, and reusable B-tree copy utilities
- CLI refresh — Spectre.Console-based output, richer tables, interactive
.dot-command menu, and branded ASCII startup banner - New docs — Configuration reference, query execution pipeline walkthrough, expanded SQL reference
v2.8.0 — Batch-First SQL Row Transport
The SQL execution engine now uses a batch-first row transport foundation. This is a significant internal architecture change that enables more efficient query processing:
- Batch-capable result boundaries across scans, joins, and aggregates
- Foundation for future vectorized query execution
- Reduced per-row overhead for large result sets
Full-Text Search
CSharpDB now includes built-in full-text search capabilities:
- Inverted index with tokenization and stemming
- Relevance ranking via MATCH() in SQL
- CREATE FULLTEXT INDEX syntax for easy setup
Foreign Key Constraints
v1 foreign key support has landed with column-level REFERENCES and optional ON DELETE CASCADE:
- Single-column, column-level REFERENCES syntax
- ON DELETE CASCADE for automatic child row cleanup
- Metadata and tooling surfaces across direct, HTTP, gRPC, CLI, and Admin
- Retrofit migration for older databases
Subqueries, Set Operations & Visual Query Designer
Major SQL feature additions and tooling improvements:
- Scalar subqueries, IN/EXISTS (including correlated) subqueries
- UNION, INTERSECT, EXCEPT set operations
- Visual query builder in Admin UI with drag-and-drop source canvas, join editing, and SQL preview
- Collation support (BINARY, NOCASE, NOCASE_AI, ICU:<locale>)
Ecosystem Expansion
Major tooling and ecosystem additions that shipped in late 2025:
- Dedicated gRPC daemon — Full gRPC coverage for SQL, schema, procedures, collections, and maintenance
- Hybrid storage mode — Hot tables in memory with durable checkpoint to disk
- Client backup & restore — First-class operations across all access methods
- Background WAL checkpointing — Incremental auto-checkpointing off the commit path
- MCP server — AI assistant integration for database operations
- NativeAOT C library — Cross-language FFI for JavaScript, Python, and more