v2.17.1 PR - #61
Merged
Merged
Conversation
- Introduced a new Cargo.toml for fuzz testing with dependencies on libfuzzer-sys and decentdb. - Implemented fuzz target for record/row decoding to ensure it does not panic on malformed input. - Created fuzz target for WAL recovery that validates recovery from fuzz-generated WALs without panicking. - Added multiple JSON scenarios for grouped commit operations, including cases for successful commits, crashes after sync, and failures during commit and flush operations.
There was a problem hiding this comment.
Pull request overview
This PR updates DecentDB to release version 2.17.1 and includes a broad set of release engineering, testing, and documentation changes (CI additions, new fuzz targets, new harness scenarios, version propagation across bindings/docs, and cleanup of generated Python packaging artifacts).
Changes:
- Bump workspace and binding versions to 2.17.1 and update related docs/locks.
- Add new validation coverage: grouped-commit fault-injection harness scenarios, coverage-guided fuzz targets, and additional CI jobs (MSRV, supply-chain, coverage).
- Clean up / stop tracking generated Python
*.egg-infoartifacts (and expand ignore rules).
Reviewed changes
Copilot reviewed 77 out of 99 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| VERSION | Bump repository version to 2.17.1 |
| Cargo.toml | Workspace version bump + set MSRV (rust-version = 1.88) |
| Cargo.lock | Dependency/version updates consistent with 2.17.1 release |
| crates/decentdb/Cargo.toml | Inherit workspace rust-version; add fuzz-internals feature |
| crates/decentdb/src/lib.rs | Add fuzzing module behind fuzz-internals feature |
| crates/decentdb/src/record/row.rs | Harden row decode against oversized field counts + regression test |
| crates/decentdb/src/planner/mod.rs | Widen visibility for internal planner helpers (crate-only) |
| crates/decentdb/src/exec/table_data.rs | New extracted exec submodule (table row storage helpers) |
| crates/decentdb/src/exec/manifest.rs | New extracted exec submodule (paged manifest/directory code) |
| crates/decentdb/src/exec/indexes.rs | New extracted exec submodule (runtime index build/update) |
| crates/decentdb/src/exec/grouped.rs | New extracted exec submodule (grouped query helpers/paths) |
| crates/decentdb/src/db/reactive_ops.rs | New extracted db submodule (reactive watch/query APIs) |
| crates/decentdb/src/db/pragmas.rs | New extracted db submodule (PRAGMA handling) |
| crates/decentdb/src/db/branch_ops.rs | New extracted db submodule (branch operations APIs) |
| crates/decentdb-cli/Cargo.toml | Inherit workspace rust-version |
| crates/decentdb-benchmark/Cargo.toml | Inherit workspace rust-version |
| crates/decentdb-migrate/Cargo.toml | Inherit workspace rust-version |
| crates/libpg_query_sys/Cargo.toml | Inherit workspace rust-version |
| fuzz/Cargo.toml | Add independent cargo-fuzz workspace crate + targets |
| fuzz/.gitignore | Ignore fuzz build/corpus/artifacts outputs |
| fuzz/fuzz_targets/wal_recovery.rs | Add fuzz target for WAL recovery robustness |
| fuzz/fuzz_targets/record_decode.rs | Add fuzz target for record/row decode robustness |
| deny.toml | Add cargo-deny configuration for supply-chain checks |
| tests/harness/grouped_commit_fault_injection_plan.md | Document grouped-commit fault-injection scenarios and wiring |
| tests/harness/scenarios/grouped_commit_all_commit.json | New harness scenario for grouped-commit baseline |
| tests/harness/scenarios/grouped_commit_fail_during_second_commit.json | New harness scenario for failure during second commit |
| tests/harness/scenarios/grouped_commit_fail_sync_before_flush.json | New harness scenario for fsync failure window |
| tests/harness/scenarios/grouped_commit_crash_after_sync.json | New harness scenario for crash window after sync |
| scripts/do-pre-commit-checks.py | Add stage-5 grouped-commit harness check |
| scripts/bump_version.sh | Extend version bumping to web binding package metadata |
| .github/workflows/ci.yml | Add MSRV and supply-chain CI jobs |
| .github/workflows/coverage-nightly.yml | Add nightly llvm-cov coverage workflow |
| .github/workflows/memory-safety-nightly.yml | Add coverage-guided fuzzing matrix job |
| .github/workflows/release.yml | Add grouped-commit harnesses + web binding smoke to release validation |
| bindings/web/package.json | Align web package version to 2.17.1 |
| bindings/web/package-lock.json | Align web lockfile version to 2.17.1 |
| bindings/README.md | Add binding inventory updates + feature coverage matrix |
| bindings/python/pyproject.toml | Bump Python package version to 2.17.1 |
| bindings/python/decentdb.egg-info/PKG-INFO | Remove generated Python packaging artifact from repo |
| bindings/python/decentdb.egg-info/SOURCES.txt | Remove generated Python packaging artifact from repo |
| bindings/python/decentdb.egg-info/dependency_links.txt | Remove generated Python packaging artifact from repo |
| bindings/python/decentdb.egg-info/entry_points.txt | Remove generated Python packaging artifact from repo |
| bindings/python/decentdb.egg-info/requires.txt | Remove generated Python packaging artifact from repo |
| bindings/python/decentdb.egg-info/top_level.txt | Remove generated Python packaging artifact from repo |
| .gitignore | Ignore Python *.egg-info artifacts (and related paths) |
| bindings/python/.tmp/bench_complex_results.json | Updates to generated benchmark output (should not be tracked) |
| bindings/node/decentdb/package.json | Bump Node native package version to 2.17.1 |
| bindings/node/decentdb/package-lock.json | Bump Node native lockfile version to 2.17.1 |
| bindings/node/knex-decentdb/package.json | Bump Knex binding package version to 2.17.1 |
| bindings/node/knex-decentdb/package-lock.json | Bump Knex binding lockfile version to 2.17.1 |
| bindings/java/driver/src/main/java/com/decentdb/jdbc/DecentDBDriver.java | Bump JDBC driver version string to 2.17.1 |
| bindings/java/driver/build.gradle | Bump Java driver version to 2.17.1 |
| bindings/java/dbeaver-extension/META-INF/MANIFEST.MF | Bump DBeaver extension bundle and jar reference versions |
| bindings/java/dbeaver-extension/build.gradle | Bump DBeaver extension version to 2.17.1 |
| bindings/dart/dart/pubspec.yaml | Bump Dart package version to 2.17.1 |
| bindings/dart/flutter/pubspec.yaml | Bump Flutter helper package version to 2.17.1 |
| bindings/dart/flutter/pubspec.lock | Update Flutter lockfile DecentDB version to 2.17.1 |
| bindings/dart/flutter/example/pubspec.yaml | Bump Flutter example version to 2.17.1 |
| bindings/dart/flutter/example/pubspec.lock | Update Flutter example lockfile DecentDB versions |
| bindings/dart/flutter/ios/decentdb_flutter.podspec | Bump iOS podspec version to 2.17.1 |
| bindings/dart/flutter/android/build.gradle | Bump Android gradle version to 2.17.1 |
| bindings/dart/examples/flutter_desktop/pubspec.lock | Update desktop example lockfile DecentDB version |
| bindings/dart/examples/console/pubspec.lock | Update console example lockfile DecentDB version |
| bindings/dart/examples/console_complex/pubspec.lock | Update console_complex example lockfile DecentDB version |
| tests/bindings/dart/pubspec.lock | Update dart binding test lockfile DecentDB version |
| benchmarks/rust-baseline/Cargo.lock | Update baseline lockfile DecentDB versions |
| docs/about/changelog.md | Add 2.17.1 changelog entry |
| docs/user-guide/benchmarks.md | Update DecentDB benchmark version stamp to 2.17.1 |
| design/VERSIONING_GUIDE.md | Document web binding versioning + bump checklist updates |
| design/SPEC.md | Update ADR reference to renumbered parser ADR |
| design/FUTURE_WINS.md | Update “current public release” and planning bucket to 2.17.1 |
| design/adr/0214-integer-primary-key.md | Update ADR title header format (renumbered ADR) |
| design/adr/0213-sql-parser-libpg-query.md | Add renumbered parser ADR content |
| design/adr/0212-bulk-load-api-specification.md | Add renumbered bulk-load ADR content |
| design/adr/0207-inline-runtime-encoded-index-keys.md | Update reference to renumbered integer PK ADR |
| design/adr/0205-compact-paged-row-directory.md | Update reference to renumbered integer PK ADR |
| design/adr/0203-compact-dense-runtime-int64-index.md | Update reference to renumbered integer PK ADR |
| design/adr/0123-phase1-table-btree-foundation.md | Update reference to renumbered integer PK ADR |
| design/adr/0107-recursive-cte-execution.md | Update reference to renumbered parser ADR |
| design/adr/0085-after-triggers-v0.md | Update reference to renumbered parser ADR |
| design/adr/0078-cte-non-recursive-scope-v0.md | Update reference to renumbered parser ADR |
| design/adr/0074-exists-subquery-surface-v0.md | Update reference to renumbered parser ADR |
| design/adr/0071-sql-null-three-valued-logic.md | Update reference to renumbered parser ADR |
| design/adr/0049-constraint-index-deduplication.md | Update reference to renumbered integer PK ADR |
| AGENTS.md | Update repo inventory to include fuzz + web binding details |
Files not reviewed (3)
- bindings/node/decentdb/package-lock.json: Generated file
- bindings/node/knex-decentdb/package-lock.json: Generated file
- bindings/web/package-lock.json: Generated file
| @@ -1 +1 @@ | |||
| 2.17.0 | |||
| 2.17.1 | |||
Comment on lines
620
to
627
| "status": "skipped" | ||
| } | ||
| }, | ||
| "generated_at": "2026-08-02T13:28:31.230674+00:00", | ||
| "generated_at": "2026-08-06T14:16:08.781649+00:00", | ||
| "python": { | ||
| "executable": "/usr/bin/python3", | ||
| "executable": "/usr/bin/python", | ||
| "version": "3.14.6" | ||
| }, |
Comment on lines
+39
to
+60
| fs::create_dir_all(&dir).expect("create template dir"); | ||
| let db_path = dir.join("template.ddb"); | ||
|
|
||
| let config = DbConfig { | ||
| wal_sync_mode: WalSyncMode::TestingOnlyUnsafeNoSync, | ||
| ..DbConfig::default() | ||
| }; | ||
| { | ||
| let db = Db::create(&db_path, config).expect("create template db"); | ||
| db.execute("CREATE TABLE t(id INT64, val TEXT, amount FLOAT64)") | ||
| .expect("create table"); | ||
| for i in 0..25 { | ||
| db.execute(&format!( | ||
| "INSERT INTO t VALUES ({i}, 'row-{i}', {i}.5)" | ||
| )) | ||
| .expect("seed row"); | ||
| } | ||
| db.checkpoint_wal().expect("checkpoint template"); | ||
| } | ||
|
|
||
| let db_bytes = fs::read(&db_path).expect("read template db"); | ||
| let _ = fs::remove_dir_all(&dir); |
- git rm --cached bindings/python/.tmp/bench_complex_results.json (generated artifact was tracked; .gitignore already covers .tmp/) - fuzz/fuzz_targets/wal_recovery.rs: replace all expect() calls in build_template() with graceful error handling; return empty Template on any setup failure instead of panicking; skip fuzz iteration when template is empty to avoid false-positive libFuzzer crashes Co-authored-by: sphildreth <193334+sphildreth@users.noreply.github.com>
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.
This pull request introduces several CI improvements, documentation updates, and version bumps across the project and all language bindings. The most important changes are the addition of new CI workflows for coverage and supply chain checks, expanded test coverage for grouped commit scenarios and web bindings, and improved documentation for the web binding and feature coverage matrix.
CI/CD Improvements:
.github/workflows/coverage-nightly.ymlto run Rust coverage reports usingcargo-llvm-covand upload the results as artifacts..github/workflows/ci.ymlwith new jobs:msrv(checks minimum supported Rust version) andsupply-chain(runscargo denyfor dependency auditing).coverage-guided-fuzzjob to.github/workflows/memory-safety-nightly.ymlfor running libFuzzer-based fuzzing on key engine targets..github/workflows/release.ymlto include grouped commit fault-injection harnesses, web binding smoke tests (WASM + browser OPFS), and to build/test for thewasm32-unknown-unknowntarget. [1] [2] [3]Documentation Updates:
bindings/README.mdandAGENTS.mdto document the new web binding, its architecture, and added a feature coverage matrix comparing all language bindings. Also clarified the location and nature of fuzz targets. [1] [2] [3] [4]Version Bumps:
2.17.1inCargo.toml,VERSION, and all language binding manifests (Dart, Java, Node.js) to ensure consistency with the new release. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]These changes improve CI reliability, expand test coverage (especially for web and grouped commit scenarios), and ensure documentation and versioning remain up to date.