v2.16.0 - #58
Merged
Merged
Conversation
- Extend the `ddb_stmt_execute_batch_typed` function to accept a new signature character `b` for BOOLEAN values. - BOOLEAN values are encoded in the existing `values_i64` array as 0 for FALSE and non-zero for TRUE, maintaining compatibility with existing integer values. - Update documentation to reflect the new signature grammar and ensure that existing functionality remains unchanged for current users of the API. - Add validation requirements for testing the new BOOLEAN support in typed batches.
- Added `PreparedBoolUpdate` struct to handle boolean updates. - Implemented `try_execute_paged_bool_update` and `try_execute_resident_bool_update` methods for executing boolean updates in paged and resident tables respectively. - Enhanced `execute_update` method to support boolean updates. - Created `compile_prepared_bool_update` function to prepare boolean update statements. - Updated SQL explain functionality to include details for UPDATE statements. - Added regression tests for boolean updates and their selectivity in the CRM dataset. - Introduced ADO.NET microbenchmarks for performance measurement of prepared statements in DecentDB.
There was a problem hiding this comment.
Pull request overview
This PR bumps DecentDB to v2.16.0 and ships a binding- and performance-focused release: it extends the C ABI typed-batch signature to support BOOLEAN, adds substantial .NET ADO.NET hot-path improvements and new benchmark harnesses, and expands regression coverage around CRM-shaped DML/query behavior.
Changes:
- Extend
ddb_stmt_execute_batch_typedtyped-batch signatures with'b'(BOOLEAN encoded viavalues_i64) and refresh public/binding C headers + ADR. - Add/expand correctness + regression tests for prepared DML, filtered views, window functions, paged-row persistence, and CRM-shaped workloads.
- Add .NET CRM comparison benchmark + ADO.NET microbenchmarks, plus a GitHub Actions workflow to gate CRM benchmark output.
Reviewed changes
Copilot reviewed 54 out of 64 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| VERSION | Bump workspace version stamp to 2.16.0. |
| tests/bindings/dart/pubspec.lock | Update Dart binding lockfile version pin to 2.16.0. |
| include/decentdb.h | Document typed-batch 'b' BOOLEAN signature and encoding contract. |
| docs/user-guide/benchmarks.md | Update benchmark page version stamp to 2.16.0. |
| docs/api/dotnet.md | Expand/refresh .NET performance guidance and typed batch documentation. |
| docs/about/changelog.md | Add 2.16.0 release entry (Added/Changed/Fixed). |
| design/FUTURE_WINS.md | Update public release reference to 2.16.0 (planning bucket text needs alignment). |
| design/adr/README.md | Add ADR 0201 to the “Recent ADRs” list. |
| design/adr/0201-c-abi-typed-batch-bool-signature.md | New ADR documenting BOOLEAN typed-batch signature decision. |
| crates/decentdb/tests/sql_window_functions_tests.rs | Add regression test ensuring shared window spec behavior. |
| crates/decentdb/tests/sql_transactions_prepared_tests.rs | Strengthen EXPLAIN UPDATE assertions + add unsupported EXPLAIN ANALYZE UPDATE test. |
| crates/decentdb/tests/sql_crm_perf_regression_tests.rs | New CRM-shaped correctness regression suite for perf work. |
| crates/decentdb/src/planner/mod.rs | Expand filtered views and track pushed-filter state; add planner tests. |
| crates/decentdb/src/exec/tests.rs | Add paged-table manifest rewrite + delete persistence tests. |
| crates/decentdb/src/exec/dml_unit_tests.rs | Update DML test fixtures for generated column metadata field. |
| crates/decentdb/src/exec/dml_more_tests.rs | Update DML test fixtures for generated column metadata field. |
| crates/decentdb/src/db/tests.rs | Update prepared insert test fixture for generated column metadata field. |
| crates/decentdb/src/c_api.rs | Implement 'b' BOOLEAN support in typed batch execution (via values_i64). |
| Cargo.toml | Bump workspace package version to 2.16.0. |
| Cargo.lock | Update crate versions to 2.16.0 in the lockfile. |
| bindings/python/pyproject.toml | Bump Python package version to 2.16.0. |
| bindings/python/.tmp/bench_complex_results.json | Updates benchmark output artifact (should not be committed). |
| bindings/node/knex-decentdb/package.json | Bump Node knex client package version to 2.16.0. |
| bindings/node/knex-decentdb/package-lock.json | Bump Node knex client lockfile package versions to 2.16.0. |
| bindings/node/decentdb/package.json | Bump Node native addon package version to 2.16.0. |
| bindings/node/decentdb/package-lock.json | Bump Node native addon lockfile package versions to 2.16.0. |
| bindings/java/driver/src/main/java/com/decentdb/jdbc/DecentDBDriver.java | Bump JDBC driver version string to 2.16.0. |
| bindings/java/driver/build.gradle | Bump Java driver Gradle version to 2.16.0. |
| bindings/java/dbeaver-extension/META-INF/MANIFEST.MF | Bump DBeaver bundle version and referenced jar name to 2.16.0. |
| bindings/java/dbeaver-extension/build.gradle | Bump DBeaver extension Gradle version to 2.16.0. |
| bindings/go/decentdb-go/decentdb.h | Refresh Go binding header docs for typed-batch BOOLEAN signature. |
| bindings/dotnet/tests/DecentDB.Tests/BatchOperationTests.cs | Add .NET prepared/typed-batch regression coverage (including BOOLEAN typed batches). |
| bindings/dotnet/src/DecentDB.Native/DecentDB.cs | Add multi-row typed-batch API and extend one-row path to 3 TEXT values. |
| bindings/dotnet/src/DecentDB.AdoNet/README.md | Add ADO.NET performance checklist and typed-batch usage guidance. |
| bindings/dotnet/src/DecentDB.AdoNet/DecentDBDataReader.cs | Optimize reader hot paths (cached names/ordinals, max-one-row fast exit). |
| bindings/dotnet/src/DecentDB.AdoNet/DecentDBConnection.cs | Add ExecutePreparedBatchTyped(...) ADO.NET wrapper API. |
| bindings/dotnet/src/DecentDB.AdoNet/DecentDBCommand.cs | Add prepared-statement reuse optimizations and SQL-shape heuristics for hot paths. |
| bindings/dotnet/DecentDB.NET.sln | Add benchmark projects to the .NET solution. |
| bindings/dotnet/benchmarks/DecentDB.CrmComparison/run-crm-benchmark.sh | New helper script to run CRM comparison benchmark. |
| bindings/dotnet/benchmarks/DecentDB.CrmComparison/run-crm-benchmark-matrix.sh | New matrix runner to execute canonical CRM benchmark modes + summarize. |
| bindings/dotnet/benchmarks/DecentDB.CrmComparison/README.md | New documentation for CRM comparison benchmark harness. |
| bindings/dotnet/benchmarks/DecentDB.CrmComparison/DecentDB.CrmComparison.csproj | New CRM comparison benchmark project. |
| bindings/dotnet/benchmarks/DecentDB.CrmComparison/compare-crm-benchmark.py | New Python comparator/validator for CRM benchmark JSON outputs. |
| bindings/dotnet/benchmarks/DecentDB.Benchmarks/README.md | Reference new benchmark suites. |
| bindings/dotnet/benchmarks/DecentDB.AdoNetMicrobenchmarks/README.md | New microbenchmark suite documentation. |
| bindings/dotnet/benchmarks/DecentDB.AdoNetMicrobenchmarks/Program.cs | New BenchmarkDotNet-based ADO.NET hot-path microbenchmarks. |
| bindings/dotnet/benchmarks/DecentDB.AdoNetMicrobenchmarks/DecentDB.AdoNetMicrobenchmarks.csproj | New microbenchmark project file. |
| bindings/dart/native/decentdb.h | Refresh Dart binding header docs for typed-batch BOOLEAN signature. |
| bindings/dart/flutter/pubspec.yaml | Bump Flutter helper package version to 2.16.0. |
| bindings/dart/flutter/pubspec.lock | Bump Flutter lockfile version pin to 2.16.0. |
| bindings/dart/flutter/ios/decentdb_flutter.podspec | Bump iOS podspec version to 2.16.0. |
| bindings/dart/flutter/example/pubspec.yaml | Bump Flutter example version to 2.16.0. |
| bindings/dart/flutter/example/pubspec.lock | Bump Flutter example lockfile pins to 2.16.0. |
| bindings/dart/flutter/android/build.gradle | Bump Android Gradle version to 2.16.0. |
| bindings/dart/examples/flutter_desktop/pubspec.lock | Bump Dart desktop example lockfile pins to 2.16.0. |
| bindings/dart/examples/console/pubspec.lock | Bump Dart console example lockfile pins to 2.16.0. |
| bindings/dart/examples/console_complex/pubspec.lock | Bump Dart console_complex example lockfile pins to 2.16.0. |
| bindings/dart/dart/pubspec.yaml | Bump core Dart FFI package version to 2.16.0. |
| benchmarks/rust-baseline/Cargo.lock | Bump baseline benchmark lockfile DecentDB versions to 2.16.0. |
| .github/workflows/dotnet-crm-benchmark.yml | New workflow to run CRM benchmark smoke/nightly/release modes and upload artifacts. |
Files not reviewed (2)
- bindings/node/decentdb/package-lock.json: Generated file
- bindings/node/knex-decentdb/package-lock.json: Generated file
Comment on lines
+14
to
18
| "decentdb": 0.027341, | ||
| "decentdb_vs_sqlite": 4.99835466179159, | ||
| "direction": "lower_is_better", | ||
| "sqlite": 0.006733, | ||
| "sqlite": 0.00547, | ||
| "winner": "sqlite" |
Comment on lines
130
to
+133
| Future version values are planning buckets, not release commitments. The | ||
| current public release in this repository is `2.15.0`, and the current | ||
| current public release in this repository is `2.16.0`, and the current | ||
| planning release bucket in this repository is `2.15.0`. `vNext` means | ||
| the first release bucket after `2.15.0` only when scope is explicitly accepted. | ||
| the first release bucket after `2.16.0` only when scope is explicitly accepted. |
Contributor
There was a problem hiding this comment.
Fixed in the latest commit — updated the planning release bucket from 2.15.0 to 2.16.0 to align with the current public release.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added
documented ADR 0201 compatibility decision and refreshed public C headers for
downstream bindings.
typed batch tests, ADO.NET microbenchmarks, CRM comparison benchmarks,
benchmark matrix scripts, and a GitHub workflow for CRM benchmark runs.
design/2026-06-30_PERF_PLAN.mdimplementation plan covering thecompleted binding and DML performance work.
Changed
prepared-statement reuse, typed batch execution, cached result metadata, and
expanded API documentation.
write paths while preserving index maintenance and transaction semantics.
comparison output, and updated benchmark result artifacts.
Fixed
SQL identifier case-insensitivity, matching SQLite-compatible quoted-column
behavior in .NET tests.
persisted chunk metadata before locator caches and persistent primary-key
locators are rebuilt.
COUNT(*)execution so filtered counts fall back topredicate-aware evaluation instead of returning total persisted row counts.