motedb-python 0.16.0__tar.gz → 0.17.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/workflows/node-publish.yml +61 -4
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/workflows/release-smoke.yml +5 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/CAPABILITIES.md +1 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/CHANGELOG.md +439 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/Cargo.lock +27 -9
- {motedb_python-0.16.0 → motedb_python-0.17.0}/Cargo.toml +2 -2
- {motedb_python-0.16.0 → motedb_python-0.17.0}/PKG-INFO +1 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/README.md +1 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/Cargo.lock +26 -8
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/Cargo.toml +1 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/src/lib.rs +172 -31
- {motedb_python-0.16.0 → motedb_python-0.17.0}/deny.toml +14 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/01-quick-start.md +7 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/02-installation.md +3 -3
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/03-sql-operations.md +5 -2
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/14-api-reference.md +7 -4
- {motedb_python-0.16.0 → motedb_python-0.17.0}/pyproject.toml +1 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/python/motedb/mcp.py +14 -3
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/api.rs +44 -17
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/cache/row_cache.rs +13 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/config.rs +12 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/core.rs +144 -53
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/crud.rs +199 -19
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/persistence.rs +17 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/table.rs +33 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/transaction.rs +95 -65
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/ffi.rs +87 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/btree.rs +320 -59
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/btree_generic.rs +124 -3
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/cached_index.rs +14 -2
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/text_fts.rs +219 -18
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/text_types.rs +75 -26
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/vamana/diskann_index.rs +36 -21
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/evaluator.rs +142 -21
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/executor/agg.rs +67 -2
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/executor/join.rs +7 -3
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/executor/mod.rs +350 -133
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/executor/scan.rs +10 -2
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/parser.rs +20 -14
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/row_converter.rs +52 -51
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/vector_exec.rs +26 -10
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/col_segment/manifest.rs +6 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/col_segment/store.rs +239 -78
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/columnar.rs +74 -27
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/row_format.rs +21 -9
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/txn/coordinator.rs +8 -16
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/txn/version_store.rs +90 -54
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/txn/wal.rs +96 -12
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/types/mod.rs +51 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt2.rs +8 -2
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v102.rs +77 -27
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v103.rs +66 -22
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v104.rs +170 -66
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v105.rs +57 -19
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v106.rs +48 -20
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v107.rs +55 -23
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v108.rs +51 -18
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v110.rs +102 -28
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v111.rs +168 -77
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v112.rs +89 -25
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v113.rs +100 -34
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v114.rs +109 -31
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v115.rs +34 -13
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v116.rs +73 -23
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v14.rs +9 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v24.rs +9 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v5.rs +8 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v71.rs +8 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_comprehensive.rs +2 -1
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_concurrent_agg_consistency.rs +22 -23
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_crash_injection.rs +27 -10
- motedb_python-0.17.0/tests/test_drop_table_raw_api.rs +63 -0
- motedb_python-0.17.0/tests/test_ffi_panic_guard.rs +80 -0
- motedb_python-0.17.0/tests/test_fts_phrase_multi_flush.rs +200 -0
- motedb_python-0.17.0/tests/test_group_by_arith_semantics.rs +129 -0
- motedb_python-0.17.0/tests/test_insert_unknown_column.rs +97 -0
- motedb_python-0.17.0/tests/test_merge_placeholder_width.rs +308 -0
- motedb_python-0.17.0/tests/test_report_round3_regressions.rs +490 -0
- motedb_python-0.17.0/tests/test_report_round4_regressions.rs +316 -0
- motedb_python-0.17.0/tests/test_report_s1_regressions.rs +479 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_row_cache_delete_ghost.rs +6 -3
- motedb_python-0.17.0/tests/test_stability_round5.rs +678 -0
- motedb_python-0.17.0/tests/test_timestamp_index_duplicates.rs +275 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_txn_delete_reinsert.rs +40 -11
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_txn_read_your_writes.rs +31 -9
- motedb_python-0.17.0/tests/test_vector_knn_sql_uses_index.rs +115 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.cargo/config.toml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.devcontainer/devcontainer.json +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/FUNDING.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/ISSUE_TEMPLATE/install_problem.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/pull_request_template.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/workflows/ci.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/workflows/fuzz.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/workflows/perf-gate.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/workflows/publish.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/workflows/python-wheels.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.github/workflows/site.yml +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.gitignore +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.zcode/plans/plan-sess_abb2c954-05fb-477e-9d0a-3e22261e2449.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/.zcode/plans/plan-sess_b5937a06-b7bf-4471-9756-dbf2787b263c.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/CODE_OF_CONDUCT.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/CONTRIBUTING.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/GOVERNANCE.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/LICENSE +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/Makefile +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/RELEASE_NOTES.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/ROADMAP.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/SECURITY.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/VERSIONING.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/go/README.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/go/go.mod +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/go/motedb.go +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/go/motedb.h +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/go/motedb_test.go +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/README.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/README.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/adversarial_verify.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/bench_edge.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/compete_bench.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/compete_fts_industry.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/compete_scale.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/compete_spatial_ts.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/compete_vec_engines.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/compete_vec_industry.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/compete_writes.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/fts_probe_once.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/perf_ab.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/perf_overall.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/prof_ann.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/prof_fts.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/prof_insert.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/prof_point.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/prof_real.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/prof_scale.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/prof_scale_vec.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/prof_vec_parallel.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/resource_bench.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/resource_bench_2026-09_profile.json +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/resource_bench_v0.10.0.json +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/spatial_eval.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/text_eval.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/ts_eval.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/bench/vector_recall_eval.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/build.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/e2e/e2e_workload.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/e2e/test_durability_kwarg.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/e2e/test_mcp_stdio.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/e2e/test_snapshot_export.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/licenses/LICENSE +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/scripts/build_wheel.sh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/data/demo.mcap +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_backup.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_crash_recovery.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_e2e_cli.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_e2e_functional.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_feature_selfcheck.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_fetch_arrays.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_fuzz_bigtable.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_fuzz_differential.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_insert_arrays.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_mcap_import.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_parallel_ab.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_parquet_lerobot.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/bindings/python/tests/test_smoke.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/community/README.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/04-batch-operations.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/05-transactions.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/06-indexes-overview.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/07-column-index.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/08-vector-index.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/09-text-index.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/10-spatial-index.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/11-timestamp-index.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/12-performance.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/13-data-types.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/15-best-practices.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/16-faq.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/17-hybrid-arrow.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/18-install-troubleshooting.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/19-training-dataloader.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/20-mcp.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/README.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/api/public-api-baseline.txt +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/benchmark_methodology.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/design/2026-10-embodied-roadmap.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/design/2026-10-file-layout-plan.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/design/2026-10-file-layout.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/design/2026-10-good-first-issues.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/design/2026-10-industry-parity-plan.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/design/2026-10-order-by-internals.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/design/2026-10-traj-spike.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/design/2026-10-txn-fix-log.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/paper/README.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/docs/paper/motedb.tex +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_300k.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_autocommit_lock.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_disk.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_exec_only.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_insert_engine.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_layer.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_memory.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_multimodal_vs_competitors.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_point_read.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_profile_hot.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_scaling.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_stability.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/bench_vs_sqlite.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/corruption_fuzz.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/crud.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/differential_fuzz.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/file_layout_bench.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/gen_test_bag.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/hello_world.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/join_differential_fuzz.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/lerobot_interop.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/logging.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/parquet_interop.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/perf_smoke.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/probe_ckpt.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/probe_filter_decomp.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/probe_jemalloc.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/probe_memory_source.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/probe_tail_latency.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/text_rank_probe.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/torch_dataloader.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/traj_spike.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/examples/vector_recall_real.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/licenses/LICENSE +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/python/motedb/__init__.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/python/motedb/torch.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/Dockerfile.e2e +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/bench_industry.sh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/bench_report.py +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/check_public_api.sh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/compete.sh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/docker_e2e.sh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/gen_format_fixture.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/gen_format_fixtures.sh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/release_smoke.sh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/scripts/repro_point_query_gap.sh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/site/index.html +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/site/llms-full.txt +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/site/llms.txt +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/site/robots.txt +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/bin/motedb-cli.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/cache/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/catalog/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/catalog/registry.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/datasets.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/doctor.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/helpers.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/index_metadata.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/indexes/column.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/indexes/dashmap_migration.md +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/indexes/ioctree.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/indexes/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/indexes/text.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/indexes/timestamp.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/indexes/vector.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/mem_buffer.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/meta_store.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/pk_cache.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/snapshot.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/database/timeseries.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/distance/cosine.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/distance/euclidean.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/distance/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/error.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/export/lerobot.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/export/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/export/parquet.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/builder.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/column_value.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/fresh_graph.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/ioctree/leaf_store.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/ioctree/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/ioctree/node.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/ioctree/persistence.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/ioctree/search.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/primary_key.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/text_dictionary.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/text_encoding.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/text_query.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/tokenizers.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/vamana/config.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/vamana/disk_graph.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/vamana/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/vamana/pruner.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/vamana/sq8.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/index/vamana/sq8_vectors.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/lib.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/mcap_import.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/platform_io.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/ast.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/join/hash_join.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/join/index_join.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/join/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/lexer.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/optimizer.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/sql/token.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/checksum.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/col_segment/merge.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/col_segment/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/col_segment/segment.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/colbatch.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/columnar/column_encoding.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/columnar/config.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/columnar/gorilla.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/columnar/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/columnar/segment.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/columnar/segment_manager.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/columnar/store.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/columnar/write_buffer.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/file_manager.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/blobstore.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/bloom.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/compaction.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/engine.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/memtable.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/merging_iterator.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/sstable.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/lsm/unified_memtable.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/manifest/manifest.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/manifest/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/manifest/version.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/storage/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/txn/lock_manager.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/txn/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/txn/mvcc.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/txn/recovery.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/types/comp_sum.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/types/date.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/types/spatial.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/types/table.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/types/tensor.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/types/text.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/src/types/timestamp.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/acid_test.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_2m.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_acid.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_batch_ops.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_compare.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_comprehensive.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_concurrent.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_index_ops.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_multimodal.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_multimodal_full.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_multimodal_ops.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_perf_report.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_quick_baseline.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_release.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_report.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_resource.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_sql_queries.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_timeseries_index.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_v060_report.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_vs_sqlite_100k.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/bench_vs_sqlite_v05.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/common/mod.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/durability_probe.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/.lock +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/catalog.bin +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/columnar_ms/mig/0000000001.sst +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/columnar_ms/mig/MANIFEST +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/columnar_ms/mig_vec/0000000001.sst +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/columnar_ms/mig_vec/MANIFEST +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/fts_indexes.fresh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/indexes/timestamp.idx +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/lsm/blobs/00000001.blob +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/lsn_counter +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/wal/partition_0.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/wal/partition_1.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/wal/partition_2.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.12.9/db.mote/wal/partition_3.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/.lock +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/catalog.bin +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/columnar_ms/mig/0000000001.sst +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/columnar_ms/mig/MANIFEST +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/columnar_ms/mig_vec/0000000001.sst +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/columnar_ms/mig_vec/MANIFEST +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/fts_indexes.fresh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/indexes/timestamp.idx +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/lsm/blobs/00000001.blob +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/lsn_counter +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/wal/partition_0.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/wal/partition_1.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/wal/partition_2.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.13.0/db.mote/wal/partition_3.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/.lock +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/catalog.bin +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/columnar_ms/mig/0000000001.sst +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/columnar_ms/mig/MANIFEST +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/columnar_ms/mig_vec/0000000001.sst +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/columnar_ms/mig_vec/MANIFEST +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/fts_indexes.fresh +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/indexes/timestamp.idx +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/lsm/blobs/00000001.blob +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/lsn_counter +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/wal/partition_0.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/wal/partition_1.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/wal/partition_2.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.14.0/db.mote/wal/partition_3.wal +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.15.2/db.mote/.lock +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.15.2/db.mote/columnar_ms/MANIFEST +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.15.2/db.mote/columnar_ms/mig/0000000001.sst +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.15.2/db.mote/columnar_ms/mig_vec/0000000001.sst +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fixtures/formats/v0.15.2/db.mote/meta.bin +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/fts_probe.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/perf_test.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/repro_multirow_update_fts.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/repro_point_gap.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/stress_300k.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/stress_test.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_acid_audit.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_acid_comprehensive.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_advanced_hunt.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_api_correctness.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_asof_join.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_auto_checkpoint_segments.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_backup.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_blob_type.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_blob_where.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_btree_integrity.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt3.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt4.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt5.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt6.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt7.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v10.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v100.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v101.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v11.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v12.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v13.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v15.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v16.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v17_cte.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v18.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v19.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v2.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v20.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v21.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v22.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v23.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v25.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v26.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v27.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v28.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v29.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v3.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v30.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v31.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v32.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v33.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v34.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v35.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v36.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v38.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v39.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v4.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v40.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v43.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v45.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v48.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v49.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v50.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v51.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v52.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v53.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v54.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v55.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v56.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v57.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v58.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v59.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v6.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v60.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v61.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v62.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v63.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v64.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v65.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v66.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v67.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v68.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v69.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v7.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v70.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v72.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v73.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v74.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v75.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v76.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v77.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v78.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v79.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v8.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v80.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v81.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v82.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v83.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v84.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v85.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v86.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v87.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v88.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v89.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v9.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v90.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v91.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v92.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v93.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v94.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v95.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v96.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v97.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v98.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_bug_hunt_v99.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_col_segment.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_col_segment_fastpaths.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_columnar.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_columnar_acid.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_compact_storage.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_compaction_integrity.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_compiled_where_semantics.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_comprehensive_audit.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_concurrent_sql_features.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_concurrent_stress.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_concurrent_transfer_drift.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_concurrent_txn_ww.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_correlated_subquery.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_corruption_recovery.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_corruption_robustness.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_crash_recovery.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_data_types.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_datasets.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_date_type.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_db_path_hygiene.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_deadlock_stress.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_deep_edge.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_delete_persist.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_differential_correctness.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_disk_bloat.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_disk_usage.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_doctor.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_durability.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_e2e_crash_and_stress.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_edge_cases.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_edge_semantics.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_episodes.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_executemany.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_exists_subquery.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_explain.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_extreme_hunt.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_fast_paths.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_file_layout.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_format_migration.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_fts_recovery_staleness.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_fuzz_sql_combinations.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_global_manifest.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_groupby_first_query.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_hybrid_search.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_index_maintenance.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_index_reopen.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_index_robustness.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_indexed_query_semantics.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_insert_engine.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_insert_explicit_fastpath.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_insert_paths_index_maintenance.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_insert_select.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_ioctree.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_isolation_levels.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_join_count_fold.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_knn_parallel.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_large_rows.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_lerobot_export.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_like_escape.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_m5_mines.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_mcap_import.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_memory_leak.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_memory_linear.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_multimodal.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_multimodal_e2e.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_mvcc_isolation.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_mvcc_recovery.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_no_bloat.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_optimization_regression.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_order_by_expr_keys.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_parquet_roundtrip.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_parser_fuzz_regression.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_performance_guarantees.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_pk_change_semantics.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_prepared_dml.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_public_api.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_query_equivalence.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_quoted_vector_literal.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_range_count.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_release_readiness.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_repro12.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_round12_optimizations.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_round12b_edge.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_round12c_e2e_bugs.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_round13_bug_hunt.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_row_api.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_rrf_hybrid.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_savepoint_window.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_scalability.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_scan_integrity.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_semantic_edges.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_show_indexes_and_open_snapshot.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_snapshot.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_spatial_index.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_spatial_large_geometry.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_spatial_sql_semantics.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_advanced.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_correctness.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_correctness_part2.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_ddl_features.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_errors_edges.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_functions.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_groupby.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_joins.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_sql_scenarios.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_storage_integrity.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_stress.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_stress_hunt.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_text_ts_search_semantics.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_timeseries_index.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_timeseries_semantics.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_timestamp_recovery.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_transaction_semantics.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_ts_index_nonfirst.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_txn_ddl_and_nan_ordering.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_update_perf.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_upsert.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_v050_features.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vec_m0.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vec_m4.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vector_column_read_paths.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vector_durability.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vector_index_knobs.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vector_index_recall.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vector_null_scan.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vector_spatial_text.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_vector_visibility.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_wide_tables.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_window_frames.rs +0 -0
- {motedb_python-0.16.0 → motedb_python-0.17.0}/tests/test_write_concurrency.rs +0 -0
|
@@ -2,8 +2,17 @@ name: Node SDK publish (npm)
|
|
|
2
2
|
|
|
3
3
|
# Multi-platform prebuilt napi binaries → npmjs.org (unscoped):
|
|
4
4
|
# motedb (main, pure JS loader) + one platform package per target:
|
|
5
|
-
# motedb-darwin-arm64 / -darwin-x64 / -linux-x64-gnu / -linux-arm64-gnu
|
|
6
|
-
#
|
|
5
|
+
# motedb-darwin-arm64 / -darwin-x64 / -linux-x64-gnu / -linux-arm64-gnu
|
|
6
|
+
#
|
|
7
|
+
# 🔴 B-01: the win32-x64-msvc target is DISABLED — the platform package has
|
|
8
|
+
# never actually landed on npm (npm's anti-spam gate kept rejecting the
|
|
9
|
+
# brand-new package), while the root package declared it as an
|
|
10
|
+
# optionalDependency, so `npm i motedb` on Windows pulled a 404 and the
|
|
11
|
+
# install failed outright for three releases. Removed until a real
|
|
12
|
+
# motedb-win32-x64-msvc is on the registry: re-add the matrix entry below,
|
|
13
|
+
# the `x86_64-pc-windows-msvc` line in bindings/node/package.json
|
|
14
|
+
# (napi.targets + optionalDependencies), the npm/win32-x64-msvc dir, and
|
|
15
|
+
# the windows entry in release-smoke.yml's node matrix — TOGETHER.
|
|
7
16
|
# Triggers on v* tags (publish) and PRs touching the binding (build-only).
|
|
8
17
|
# 🔑 Publishing needs the NPM_TOKEN repository secret (an npmjs.org automation
|
|
9
18
|
# token with publish rights on the motedb* packages). The publish job fails
|
|
@@ -31,6 +40,7 @@ permissions:
|
|
|
31
40
|
contents: write
|
|
32
41
|
id-token: write
|
|
33
42
|
packages: write
|
|
43
|
+
issues: write
|
|
34
44
|
|
|
35
45
|
jobs:
|
|
36
46
|
build:
|
|
@@ -59,8 +69,6 @@ jobs:
|
|
|
59
69
|
# - os: ubuntu-latest
|
|
60
70
|
# target: aarch64-unknown-linux-musl
|
|
61
71
|
# docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
|
|
62
|
-
- os: windows-latest
|
|
63
|
-
target: x86_64-pc-windows-msvc
|
|
64
72
|
runs-on: ${{ matrix.os }}
|
|
65
73
|
steps:
|
|
66
74
|
- uses: actions/checkout@v4
|
|
@@ -302,3 +310,52 @@ jobs:
|
|
|
302
310
|
rc=0
|
|
303
311
|
for d in npm/*/; do pub "$d" || rc=1; sleep 120; done
|
|
304
312
|
exit $rc
|
|
313
|
+
|
|
314
|
+
report:
|
|
315
|
+
# 🔴 B-04: a red publish job must never be silent again. 0.15.1/0.15.2
|
|
316
|
+
# failures were caught by release-smoke's install check; 0.16.0's win32
|
|
317
|
+
# package was missing for three releases with no issue opened. Open (or
|
|
318
|
+
# bump) a tracking issue as soon as any job of a TAG publish run fails.
|
|
319
|
+
needs: [build, package, publish]
|
|
320
|
+
if: ${{ always() && contains(needs.*.result, 'failure') && (startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch') }}
|
|
321
|
+
runs-on: ubuntu-latest
|
|
322
|
+
steps:
|
|
323
|
+
- uses: actions/github-script@v7
|
|
324
|
+
env:
|
|
325
|
+
RESULTS: ${{ toJSON(needs) }}
|
|
326
|
+
with:
|
|
327
|
+
script: |
|
|
328
|
+
const results = JSON.parse(process.env.RESULTS);
|
|
329
|
+
const { owner, repo } = context.repo;
|
|
330
|
+
const runUrl = `${context.serverUrl}/${owner}/${repo}/actions/runs/${context.runId}`;
|
|
331
|
+
const version = (context.refName || '').replace(/^v/, '') || 'unknown';
|
|
332
|
+
const title = `Node npm publish failed for v${version}`;
|
|
333
|
+
const table = Object.entries(results)
|
|
334
|
+
.map(([name, r]) => `| ${name} | ${r.result} |`)
|
|
335
|
+
.join('\n');
|
|
336
|
+
const body = [
|
|
337
|
+
`The npm publish run for **v${version}** did not fully succeed.`,
|
|
338
|
+
'A red platform package means users cannot install the version —',
|
|
339
|
+
'the root loader declares platform packages as optionalDependencies,',
|
|
340
|
+
'and a missing one is an E404 at `npm install` time.',
|
|
341
|
+
'',
|
|
342
|
+
`Run: ${runUrl}`,
|
|
343
|
+
'',
|
|
344
|
+
'| job | result |', '|---|---|', table,
|
|
345
|
+
'',
|
|
346
|
+
'Fix forward with the version still unpublished for the affected platform:',
|
|
347
|
+
're-run the workflow (workflow_dispatch) after resolving, or drop the platform',
|
|
348
|
+
'from package.json + matrix so the remaining platforms ship clean.',
|
|
349
|
+
].join('\n');
|
|
350
|
+
const open = await github.paginate(github.rest.issues.listForRepo, {
|
|
351
|
+
owner, repo, state: 'open', per_page: 100,
|
|
352
|
+
});
|
|
353
|
+
const existing = open.find((i) => i.title === title && !i.pull_request);
|
|
354
|
+
if (existing) {
|
|
355
|
+
await github.rest.issues.createComment({
|
|
356
|
+
owner, repo, issue_number: existing.number,
|
|
357
|
+
body: `Failed again: ${runUrl}\n\n| job | result |\n|---|---|\n${table}`,
|
|
358
|
+
});
|
|
359
|
+
} else {
|
|
360
|
+
await github.rest.issues.create({ owner, repo, title, body });
|
|
361
|
+
}
|
|
@@ -79,7 +79,11 @@ jobs:
|
|
|
79
79
|
strategy:
|
|
80
80
|
fail-fast: false
|
|
81
81
|
matrix:
|
|
82
|
-
|
|
82
|
+
# windows: OFF until motedb-win32-x64-msvc actually ships (B-01) —
|
|
83
|
+
# the loader throws on Windows today, so this job would be red every
|
|
84
|
+
# release. Re-add windows-latest together with the package's return
|
|
85
|
+
# (see node-publish.yml header).
|
|
86
|
+
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest]
|
|
83
87
|
runs-on: ${{ matrix.os }}
|
|
84
88
|
steps:
|
|
85
89
|
- uses: actions/checkout@v4
|
|
@@ -159,6 +159,7 @@ Legend: `✅ supported` · `🟡 partial (see note)` · `❌ not supported` · `
|
|
|
159
159
|
| **Multi-user permission system** | In embedded deployments the host application owns that |
|
|
160
160
|
| **Array types** | Use BLOB, a separate table, or TEXT + JOIN |
|
|
161
161
|
| **`DECIMAL` / `DATE` types** | Planned |
|
|
162
|
+
| **SQL table-level composite `PRIMARY KEY (a, b)`** | Not parsed — single column-level PK only; composite keys via the raw `TableSchema` API (B-08) |
|
|
162
163
|
| **Cross-statement server-side cursors** | Planned |
|
|
163
164
|
|
|
164
165
|
---
|
|
@@ -1,5 +1,441 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.17.0] — 2026-11-03
|
|
4
|
+
|
|
5
|
+
> 第三轮(自查):上轮报告的 16 项确认发现全数处理——其中 **7 项是前两轮
|
|
6
|
+
> 修复自身引入或暴露的**(如实标注),5 项为 v0.16.0 原生、此前任何报告
|
|
7
|
+
> 都未实锤的重磅问题。新增回归测试 `tests/test_report_round3_regressions.rs`
|
|
8
|
+
> (11 用例)+ `tests/test_report_round4_regressions.rs`(4 用例)+
|
|
9
|
+
> `tests/test_stability_round5.rs`(稳定性专项 4 用例)+ btree/FTS 各 2 项 +
|
|
10
|
+
> B-16 残留 3 项;补遗一至五见文末。
|
|
11
|
+
|
|
12
|
+
### 🔴🔴 存储损坏 / 数据丢失类
|
|
13
|
+
|
|
14
|
+
- **🔴🔴 时间戳索引超过 ~18 万条后被 flush 自毁**(P7,v0.16.0 原生):
|
|
15
|
+
`LruCache::put`(capturing_put=false)**静默丢弃**被逐出的页 — 脏页在
|
|
16
|
+
逐出瞬间即丢;`flush()` 又只重写缓存内还活着的页并按它们重建页表 +
|
|
17
|
+
截断文件 → 被逐出页全部销毁。实测 25 万行时序表 backup + 重开后
|
|
18
|
+
`query_timestamp_range` 返回 **0 行**。四层修复: `put`→`push`(逐出
|
|
19
|
+
返回 victim)+ 逐出写回 flush_page + flush 前预加载遍收敛 + 全部缓冲
|
|
20
|
+
收集完再统一顺序写(旧顺序写会碾过写回追加区)。回归:
|
|
21
|
+
`flush_persists_pages_beyond_cache_capacity`
|
|
22
|
+
- **🔴 重开后 UPDATE 主键到已存在 PK 静默吞行**(P5,v0.16.0 原生):
|
|
23
|
+
pk 缓存对 ColSegmentStore 表**开箱即空**(只有 legacy LSM 表预热),
|
|
24
|
+
UPDATE-PK 查重只查缓存 → 重开后 `SET id=<已存在>` 直接通过,重定位
|
|
25
|
+
按最新时间戳顶掉原行 — 实测 10 行变 9 行、id=7 的值变成 v3。
|
|
26
|
+
UPDATE-PK 补存储回退(Integer PK 点查 + 非 Integer 走 query_by_column,
|
|
27
|
+
镜像事务路径);**autocommit INSERT 的同族冷缓存洞一并修**(
|
|
28
|
+
insert_if_absent 成功 ≠ 不存在)。回归: `update_pk_to_existing_value_
|
|
29
|
+
after_reopen_is_rejected` / `insert_existing_pk_after_reopen_is_rejected`
|
|
30
|
+
- **🔴 checkpoint 与并发 commit 无互斥 → 已确认事务可丢**(第三轮报告
|
|
31
|
+
表二#1,v0.16.0 原生): flush 段缓冲 → 截断 WAL 的窗口(含最长 2 秒的
|
|
32
|
+
FTS flush)内落盘的 commit,kill -9 后丢失。`checkpoint_impl` 现按
|
|
33
|
+
backup_to 的 BUG #35 纪律持有全部 autocommit 条带 + 全局写锁跨越
|
|
34
|
+
[缓冲 flush → WAL 截断 + LSN 持久化](写者为此阻塞 checkpoint 时长 —
|
|
35
|
+
不丢已确认提交的代价)
|
|
36
|
+
- **🔴 VECTOR 维度无上限 → 整列损坏**(P9,v0.16.0 原生):
|
|
37
|
+
`CREATE TABLE t (v VECTOR(70000))` 被接受,`dim as u16` 截断后顺序遍历
|
|
38
|
+
失步 — 实测 flush 后读回 dim=55575 乱数据。CREATE/ALTER/ raw
|
|
39
|
+
TableSchema 三处加 65535 上限校验,四处编码器 `as u16` 改显式报错。
|
|
40
|
+
回归: `oversized_vector_dims_are_rejected` /
|
|
41
|
+
`vector_at_boundary_dim_round_trips`
|
|
42
|
+
|
|
43
|
+
### 🟠 静默错误结果类
|
|
44
|
+
|
|
45
|
+
- **FTS 更新后 BM25 永久用旧词频**(P8,v0.16.0 原生,比原线索更糟):
|
|
46
|
+
shard 合并按升序 + 首遇优先 = 最旧 shard 的 tf 永久获胜;且合并的
|
|
47
|
+
`add_with_freq` 对已存在 doc 丢弃新 tf — 旧词频被水泥化。改为磁盘源
|
|
48
|
+
倒序(最新优先)+ 合并覆盖 tf。实测 tf=3→1 的更新后得分恢复一致。
|
|
49
|
+
回归: `bm25_uses_fresh_tf_after_update`
|
|
50
|
+
- **key=0 的重复时间戳 run 漏行/删不掉**(P1,**第一轮修复引入**):
|
|
51
|
+
`first_leaf_for_scan` 的 `saturating_sub(1)` 探测在 key=0 时失效 —
|
|
52
|
+
1970 前时间戳全部钳到 0,实测 300 行只返回 122。key=0 改从最左叶起扫。
|
|
53
|
+
回归: `key_zero_run_is_fully_visible`
|
|
54
|
+
- **raw `insert_rows` 恰在第 100 行行为分裂**(P3,我的补齐被快路径绕过):
|
|
55
|
+
≥100 行走 fast_batch_insert 跳过 coerce/padding — 99 行拿 DEFAULT、
|
|
56
|
+
100 行拿 NULL(NOT NULL 也失效)。coerce+补齐挪到闸门之前。回归:
|
|
57
|
+
`short_batch_rows_get_defaults_at_any_size`
|
|
58
|
+
- **`INSERT INTO t SELECT` 少列静默补默认**(P4,**我 B-17 改过头**):
|
|
59
|
+
SELECT 形式恢复精确列数(PostgreSQL/SQLite 都如此),仅 VALUES 允许
|
|
60
|
+
省略尾列。回归: `insert_select_short_source_is_rejected`
|
|
61
|
+
- **`60000000 - '2026-01-01'` 语义分裂**(P2,**我 B-03 修不全**):
|
|
62
|
+
补齐 (Integer, Date) 加法镜像臂;`(Integer, Text-as-timestamp)` 减法
|
|
63
|
+
在 positional 路径从静默 NULL 改为响亮 TypeError(该形状不可表示)。
|
|
64
|
+
回归: `timestamp_arithmetic_both_operand_orders`
|
|
65
|
+
- **0.15 中文 FTS 索引升级后全查不到**(表二#7,v0.16.0 原生):
|
|
66
|
+
元数据无分词器戳 — 0.15 空白分词器建的索引干净重开后用 Jieba 查询
|
|
67
|
+
全 miss。`TextFTSMetadata` 加 `tokenizer` 戳(serde default 兼容旧
|
|
68
|
+
文件),错配走现有 HARD RESET 重建通道
|
|
69
|
+
- **manifest v1 重放差一错**(表二#8,v0.16.0 原生): `data[pos-1]` 读到
|
|
70
|
+
count 字段高位 → 所有 v1 manifest 重放为空,migrate_to_global 删旧文件
|
|
71
|
+
后仅靠孤儿领养兜底(VERSIONING.md 明文承诺 0.12→0.15→1.x 迁移)。
|
|
72
|
+
一行修复 `data[pos]; pos += 1`
|
|
73
|
+
|
|
74
|
+
### 🟡 可用性 / 事务
|
|
75
|
+
|
|
76
|
+
- **commit 失败后缓冲写永久丢弃**(表二#2,v0.16.0 原生): `mem::take`
|
|
77
|
+
排空 pending 在 WW 校验之前;错误文案建议 "retry" — 但重试会静默提交
|
|
78
|
+
空事务。现冲突时回滚本次写入的 stamp 并明确 "ROLLBACK and replay";
|
|
79
|
+
回滚本身曾有嵌套 DashMap 守卫自锁(开发中实测死锁后重构为守卫出域再
|
|
80
|
+
回滚),SQL COMMIT 失败路径补 clear_txn_context(不再卡幽灵事务)
|
|
81
|
+
- **row_cache put_if_absent 复活已删行**(表二#6,v0.16.0 原生): 墓碑
|
|
82
|
+
检查与插入之间放锁 — DELETE 可在间隙完成"插墓碑+弹条目",读回填把
|
|
83
|
+
已删行装回缓存。shard 锁内复查墓碑
|
|
84
|
+
- **非 2 幂 `num_partitions` 导致不确定恢复**(表二#5,v0.16.0 原生):
|
|
85
|
+
autocommit 按 composite_key 分区、事务按 row_id 分区,仅 2 幂时一致 —
|
|
86
|
+
`validate()` 现要求 2 幂
|
|
87
|
+
|
|
88
|
+
### 🟢 次要 / 一致性
|
|
89
|
+
|
|
90
|
+
- B-09 文案其余 4 处 "MOTESNAP container" 改如实表述(上轮只改了 1/5)
|
|
91
|
+
- row_format 变宽列 16 槽上限 → 64(编码器写 64,三处解码读 16 — 17+
|
|
92
|
+
列按扫描路径返回不同数据)
|
|
93
|
+
- ALTER ADD COLUMN 的 VECTOR DEFAULT '[…]' 回填解析为真值(此前旧行
|
|
94
|
+
NULL、新行有值的不对称)
|
|
95
|
+
- ColumnIndex `try_invalidate` 加 3 次让步重试(竞争放弃 → 单值点查
|
|
96
|
+
可能长期陈旧)
|
|
97
|
+
- contains_entry 两段式: 先降到 key 自己的叶(仅当叶首 == key 才全链
|
|
98
|
+
走查)— 逐插入全链走查在相同时间戳批量导入上是 O(N²)
|
|
99
|
+
|
|
100
|
+
### 第三轮补遗(遗留项落地 + 新实锤)
|
|
101
|
+
|
|
102
|
+
- **🔴🔴 批量导入路径(≥100 行 fast_batch)三重索引缺口**(新实锤,
|
|
103
|
+
v0.16.0 原生):
|
|
104
|
+
1. 时间戳索引**完全不维护** — 宣传的 197K rows/s `insert_rows` 批量
|
|
105
|
+
导入后 `query_timestamp_range` 返回 **0 行**(实测 5000 行导入 0 条;
|
|
106
|
+
只有逐行 SQL 插入被索引)
|
|
107
|
+
2. 列索引/二级索引按 zip 配对 row_id,但 store_rows 先按 key 排序 —
|
|
108
|
+
**乱序显式 PK 批次把值绑到错误的 row_id**(实测倒序 150 行批次后
|
|
109
|
+
`WHERE tag='tag0'` 查空,而全表扫数据正确)
|
|
110
|
+
3. 统一修复: 全部改为从排序后的 key 低 32 位还原 row_id + 补时间戳
|
|
111
|
+
索引。回归: `bulk_insert_maintains_timestamp_and_column_indexes_for_
|
|
112
|
+
shuffled_pks`(乱序显式 PK + AUTO_INCREMENT 双快路径)
|
|
113
|
+
- **version store 跨表误报冲突落地**(上轮回退项): 键从裸 row_id 改为
|
|
114
|
+
`(table, row_id)` — 两表 Integer PK 同值时不再互相误报 "Write-write
|
|
115
|
+
conflict"(生产写入路径为 coordinator.commit;MVCC 读路径确认为死
|
|
116
|
+
代码后一并改键)。回归: 50×2 并发跨表提交零冲突
|
|
117
|
+
- **wal_group_barrier 真实同步**(上轮遗留项): 旧实现"队列空 + 2ms
|
|
118
|
+
sleep" — gc 线程取走但未 fsync 的批次既不在队列也无人等待,批量
|
|
119
|
+
UPDATE/DELETE 在持久化前返回成功。新增 in_flight 计数(持队列锁
|
|
120
|
+
drain 时 +1,全部 done 信号后 -1 并唤醒),barrier 等待
|
|
121
|
+
[队列空 且 in_flight==0],10s 超时兜底。崩溃注入/持久化套件验证
|
|
122
|
+
|
|
123
|
+
### 第三轮补遗二(B-07 排查中的新实锤 + 收尾)
|
|
124
|
+
|
|
125
|
+
- **🔴🔴 `CREATE INDEX` 百万级构建被自己的超块碾压**(新实锤,v0.16.0
|
|
126
|
+
原生): bulk_load 把页写在固定 128KB `SUPERBLOCK_RESERVE` 之后,收尾的
|
|
127
|
+
`sync_superblock` 从偏移 0 写入**带全量页偏移表**的超块 — 百万条目
|
|
128
|
+
(74B key ⇒ 49 键/叶)≈ 21K 页 ⇒ 偏移表 ~171KB **超过预留区**,开头
|
|
129
|
+
~11 个页被静默碾掉;下次 flush 以 "skipping corrupt page 1..11" 告警并
|
|
130
|
+
**把坏页从重写中丢弃**(索引丢条目),doctor FAIL。实测复现于 100 万
|
|
131
|
+
行 `CREATE INDEX` + checkpoint + 重开。修复: 页按相对偏移构建、按
|
|
132
|
+
"页数×8B" 精确推导超块实际长度后再定基地址(超块恰好填满预留区);
|
|
133
|
+
`sync_superblock` 加碾压防御闸(超块长度 > 盘上最小页偏移 ⇒ 响亮
|
|
134
|
+
Corruption 而非静默毁数据);打开路径的 "超块 >64KB 即荒谬" 上限改为
|
|
135
|
+
按文件长度校验。回归: `bulk_load_offsets_table_fits_its_reserve`
|
|
136
|
+
(512B 宽 key × 11.5 万条 ⇒ 16.5K 页,恰越门槛;旧代码上实测被防御闸
|
|
137
|
+
拦截/损坏)。开发中顺带修掉自己引入的 bulk_load 双重 page_offsets
|
|
138
|
+
写锁自死锁(复用原守卫)
|
|
139
|
+
- **Vector 值相等性**: `Value::PartialEq` 无 Vector 分支 — 向量永远
|
|
140
|
+
互不相等,GROUP BY/DISTINCT 对 VECTOR 列静默产出全单例组。补位级相等
|
|
141
|
+
分支(`-0.0`/NaN 与 Hash 的 Debug-string 语义精确一致)。实测 GROUP BY
|
|
142
|
+
3+1 分组、COUNT(DISTINCT)=2。(后续: IN 列表向量字面量与全部向量谓词
|
|
143
|
+
形状已于补遗三一并落地)
|
|
144
|
+
- **FTS df 双计清零**(上条遗留落地): 磁盘侧在 posting_cache 填入时
|
|
145
|
+
一次 k 路合并算出**唯一** df;pending 侧经有序 seek 对齐扣除与磁盘
|
|
146
|
+
重叠的文档 — 被更新重发的文档从此只计一次,IDF 不再漂移。回归:
|
|
147
|
+
`df_counts_reposted_docs_once`(重发前后 BM25 分数稳定)
|
|
148
|
+
- **B-07 复核结论 — 未复现,记录为闭环**: 修复后的树上(100 万行、1%
|
|
149
|
+
选择性、取行)列索引路径 37ms vs 全表扫 107ms(快 ~3 倍);报告的
|
|
150
|
+
"慢 5~6 倍"可能测自旧构建或冷缓存形态。真正的 5~6 倍问题其实是上面
|
|
151
|
+
的超块碾压(坏页被跳过 ⇒ 索引残缺退化为扫描+告警)
|
|
152
|
+
- **B-15 向量索引构建进度**: 进度原本全走默认编译掉的 debug_log,且批内
|
|
153
|
+
"Progress" 计数器从未被实际工作线程递增(死循环假报)。改为真实
|
|
154
|
+
stderr: 阶段(向量落盘/选 medoid 建图/完成)+ 每批一行带已完成数与
|
|
155
|
+
ETA(>1 批才输出)
|
|
156
|
+
|
|
157
|
+
### 第三轮补遗三(收尾:SQL KNN 索引路由 / 向量谓词 / B-16 残留 / Node 对齐)
|
|
158
|
+
|
|
159
|
+
- **🔴 B-06 · SQL KNN 从不走 DiskANN 索引**(v0.16.0 原生):
|
|
160
|
+
`ORDER BY emb <-> q LIMIT k` 的执行器被一个 `EXACT_SCAN_MAX_ROWS =
|
|
161
|
+
200_000` 硬门槛锁死在 SIMD 暴力扫描 — 建了向量索引的表在 20 万行以内
|
|
162
|
+
一律不用它(`EXPLAIN` 看得到 strategy)。改为 `MOTE_VEC_INDEX_MIN_ROWS`
|
|
163
|
+
(默认 20_000)以上索引优先: 索引取 ×4 候选 + 精确距离 rerank(候选
|
|
164
|
+
不足再 ×4 加深),索引缺失/小表仍走暴力精确扫。回归:
|
|
165
|
+
`tests/test_vector_knn_sql_uses_index.rs`(索引路径 top-k 与暴力扫逐
|
|
166
|
+
项一致)
|
|
167
|
+
- **🔴 向量字面量谓词全线失效**(上条"已知边角"的完整根因,v0.16.0
|
|
168
|
+
原生): 词法器没有向量字面量 token,`'[1.0, 2.0]'` 在 WHERE 里是 TEXT;
|
|
169
|
+
而每一层求值器都各自比较 — `=` / `!=` / `<` / `IN` / `NOT IN` /
|
|
170
|
+
AND 复合 / `COUNT(*)` / `SUM` / `GROUP BY ... WHERE emb = '[…]'` 在
|
|
171
|
+
checkpoint 前后分别由 **9 条不同路径**服务(try_fast_select、单谓词
|
|
172
|
+
投影扫描、CompiledWhere、eval_expr_simple、VecPred、聚合下推、段层
|
|
173
|
+
过滤解码…),每条都在某处丢了 Text→Vector 转换: 裸 `=` 在 checkpoint
|
|
174
|
+
后恒 0 行,`COUNT(*) WHERE emb = '[…]'` 返回**空行**(连 0 都没有),
|
|
175
|
+
`SUM` 返回 0。统一修复: 按列类型在各入口把方括号文本解析为 Vector;
|
|
176
|
+
`scan_projected_filtered` 对 VECTOR/SPATIAL 过滤列改走通用逐行解码
|
|
177
|
+
(此前按 TEXT 读 → 永远 `""`);`Value::PartialOrd` 补 Vector 字典序
|
|
178
|
+
分支;聚合快路径对触及 VECTOR/SPATIAL 列的 WHERE 一律让位物化路径
|
|
179
|
+
(原始字节比较器不解码变宽列)。回归:
|
|
180
|
+
`vector_comparisons_agree_before_and_after_checkpoint`(12 种形状 ×
|
|
181
|
+
写缓冲/checkpoint 后/混合三阶段)+ `in_list_matches_bracketed_vector_
|
|
182
|
+
literals`。顺带移除了调试期留在逐行比较热路径上的 env 查询
|
|
183
|
+
- **🔴 B-16 残留 · 坏目录全扫幽灵行 — 真因与修复**(0.16.0 "遗留限制"
|
|
184
|
+
落地): 用真实 0.16.0 二进制复刻坏目录后实测,根因**不是**"同 key+ts
|
|
185
|
+
两份",而是崩溃关库时 builder 已越界 panic、析构再 `finish()` 写出的
|
|
186
|
+
**完整可解析段文件里 row_map 条目从未追加 — 行的 key=0 / ts=0**。
|
|
187
|
+
key 0 不可能属于任何表(key = `table_id<<32 | row_id`),按 key 去重
|
|
188
|
+
永远合不掉它: 全扫 / COUNT(*) / GROUP BY 多一行,PK 点查正常,而一次
|
|
189
|
+
checkpoint 会把幽灵行**合并进真段永久化**(已用 0.17 预览版开过坏库
|
|
190
|
+
的用户正处于这种混合段状态)。修复三层: ① 开库时按段首/尾 key(已
|
|
191
|
+
排序,两次读取、不加载全量 key)检测"外表 key",命中则做一次过滤全量
|
|
192
|
+
合并修复 ② 合并永不输出外表 key 行(之后每次 compaction 自愈)③ WAL
|
|
193
|
+
回放的旧宽度行按列 DEFAULT 补齐(与 ALTER 回填一致,此前补 NULL)。
|
|
194
|
+
回归: `bricked_directory_ghost_rows_are_dropped_on_open`(按真实盘上
|
|
195
|
+
形态植入 key=0 孤儿段;关掉过滤实测复现 6 行含 ghost)
|
|
196
|
+
- **B-05 · Node 绑定补齐 Python 同款 API**: `executeMany`(单批多行
|
|
197
|
+
INSERT、一次 WAL fsync)/ `insertArrays`(列式批量插入: 按列名对位、
|
|
198
|
+
缺列 NULL、未知列/参差列显式报错)/ `hybridSearch`(BM25 + KNN RRF
|
|
199
|
+
融合,行附 `__rrf__ / __bm25__ / __distance__`)/ `begin / commit /
|
|
200
|
+
rollback`(无参作用于最近 begin)。typings + README + api-reference
|
|
201
|
+
同步,`smoke_ci.js` 覆盖全部六项;Node crate 版本对齐 0.17.0
|
|
202
|
+
- B-15 补充: 批进度首批完成数为 0 时 ETA 显示 "estimating…" 而非除零
|
|
203
|
+
伪值
|
|
204
|
+
|
|
205
|
+
### 第三轮补遗四(对抗性复测:DML / JOIN / 距离算子里的向量谓词 + B-16 退化形态)
|
|
206
|
+
|
|
207
|
+
- **🔴 `DELETE … WHERE emb = '[…]'` 一行都删不掉,`<>` 删光**(v0.16.0
|
|
208
|
+
原生): DELETE 的扫描路径用 `ExprEvaluator::eval_binary_op`,它的
|
|
209
|
+
`=`/`<>` 是裸 `partial_cmp` — Text vs Vector 永远不等(UPDATE 走位置
|
|
210
|
+
求值器,所以同一谓词 UPDATE 能改、DELETE 删不掉)。`eval_binary_op`
|
|
211
|
+
现在在 Bool/Int 转换之后同样做"Vector 旁的方括号文本 → Vector"转换,
|
|
212
|
+
六个比较算子和三个距离算子一并受益
|
|
213
|
+
- **🔴 JOIN 里的向量谓词按表的位置/写法分别失效**(v0.16.0 原生):
|
|
214
|
+
`a JOIN b … WHERE a.emb = '[…]'` 能查,`b JOIN a`(右表连接列是 PK
|
|
215
|
+
→ 通用 join)和 `FROM b, a WHERE …`(逗号连接 → 慢路径)返回 0 行、
|
|
216
|
+
`<>` 返回全部。四处各自比较: 物化路径的内存点查过滤(裸 `==`,连
|
|
217
|
+
`flag = 1` 的 Bool/Int 转换也没有)、`compile_simple_comparison`
|
|
218
|
+
(裸 `==`/partial_cmp,且 `col <> x` 放过 NULL 行)、`eval_with_
|
|
219
|
+
materialized`(内联 `==`/`<`)、join 下推谓词生产者(`map_pushdown_
|
|
220
|
+
preds` / `residual_single_table` / `parse_simple_comparison_where` 原样
|
|
221
|
+
传 Text)。统一: 前两者改走 `values_equal_coerced`(并对 NULL 行按
|
|
222
|
+
三值逻辑不匹配)、第三者委托 `eval_binary_op`、生产者按列类型预解析
|
|
223
|
+
一次 + 消费者 `apply_op_value` 兜底。回归:
|
|
224
|
+
`join_with_vector_predicates_all_shapes`(6 种 `=` 形状 + 3 种 `<>`
|
|
225
|
+
+ join 聚合,写缓冲/checkpoint 两阶段)、`dml_with_vector_predicates`
|
|
226
|
+
- **🟠 `emb <-> '[…]'` 在投影 / WHERE 阈值里恒 NULL**(v0.16.0 原生):
|
|
227
|
+
`SELECT id, emb <-> '[1,2]' AS d` 每行 NULL,`WHERE emb <-> '[1,2]' <
|
|
228
|
+
0.5` 空集 — 两个位置求值器的距离算子拿到 (Vector, Text)。两处在求值
|
|
229
|
+
操作数后补同一转换。回归: `distance_operator_with_quoted_vector_literal`
|
|
230
|
+
(L2 / 余弦 / 字面量在左)
|
|
231
|
+
- **B-16 退化形态补齐**: 段里**全部** key 都不属于本表(纯崩溃残渣)时
|
|
232
|
+
过滤合并无行可写(builder 对 0 行不落文件 → `Segment::open` 报错,
|
|
233
|
+
残渣继续可见)。现按段首尾 key 三分: 干净 / 混合(才走过滤合并)/
|
|
234
|
+
全外表(不加载: 孤儿直接删文件,manifest 在册的排 GC)。回归:
|
|
235
|
+
`bricked_directory_ghost_only_table_opens_empty`、
|
|
236
|
+
`bricked_directory_mixed_segment_is_healed_on_open`(预览版 checkpoint
|
|
237
|
+
把幽灵行并进真段后的形态)
|
|
238
|
+
- 顺带: `compile_simple_comparison` / `apply_op_value` 的 `<>` 对 NULL 行
|
|
239
|
+
不再为真(SQL 三值逻辑);物化点查过滤获得与 `=` 一致的 Bool/Int 转换
|
|
240
|
+
|
|
241
|
+
### 第三轮补遗五(稳定性专项:崩溃注入 × 二级索引 × 反复循环)
|
|
242
|
+
|
|
243
|
+
- **新增稳定性套件 `tests/test_stability_round5.rs`(3 项,均通过)**,
|
|
244
|
+
填补既有 kill-9 套件(裸表 WAL 前缀/持久性)与并发套件之间的空白:
|
|
245
|
+
1. **kill -9 × 三种二级索引 × 周期 checkpoint,同目录连续 6 个
|
|
246
|
+
崩溃→重开→续写循环**: 子进程按确定性序做 INSERT/UPDATE/DELETE +
|
|
247
|
+
每 50 行 checkpoint(列索引/向量索引/FTS 全程维护),父进程随机
|
|
248
|
+
时刻 SIGKILL 后重开,按 journal 精确重建期望状态(含"至多一条
|
|
249
|
+
已执行未落账 op"的恢复语义,验证后回记账本),逐循环校验:
|
|
250
|
+
全扫行集与模型逐行相等、COUNT、列索引点查与全扫一致、**索引路由
|
|
251
|
+
的 SQL KNN**(MOTE_VEC_INDEX_MIN_ROWS=100 强制走 DiskANN)自查
|
|
252
|
+
top-1、FTS 唯一词命中且不复活已删行、doctor 无 FAIL;随后在重开
|
|
253
|
+
的句柄上继续写入再验——目录在反复崩溃下持续可写可查
|
|
254
|
+
2. **反复开关库卫生**: 40 个 open→200 插入→checkpoint→close 循环后
|
|
255
|
+
段文件数保持在压缩阈值内、manifest 有界(<256KB)、开关库耗时不
|
|
256
|
+
退化
|
|
257
|
+
3. **并发混合负载 + 周期 checkpoint**: 4 个转账写者 + 审计表插入/删除
|
|
258
|
+
搅动 + 2 个读者 + checkpoint 线程并发 3 秒 — 总额守恒、无负余额、
|
|
259
|
+
重开后不变量保持
|
|
260
|
+
- **本轮未发现引擎缺陷**(如实记录): 开发中三次红灯均为测试自身建模
|
|
261
|
+
错误 — ① tagX 续写行的期望向量按 [id,2id,3id,1] 模型生成而实际插入
|
|
262
|
+
'[9,9,9,9]',追查到底层时靠把查询向量打进 trace 才发现引擎返回的
|
|
263
|
+
恰是该查询的正确最近邻;② 父进程续写行在 journal 里复用 "I" 操作
|
|
264
|
+
导致下一循环模型错位(新增 "X" 操作);③ 一条写反的断言在并行测试
|
|
265
|
+
抢 CPU、kill 早于首条 ack 时误报。引擎在全部 6 个循环中状态、索引、
|
|
266
|
+
doctor 一致
|
|
267
|
+
|
|
268
|
+
### 未能落地(如实记录)
|
|
269
|
+
|
|
270
|
+
- ~~version store 键控 / wal_group_barrier~~(两项已于补遗落地)
|
|
271
|
+
- ~~FTS df 对多 shard 同 doc 双计~~(已于补遗二 "FTS df 双计清零" 落地)
|
|
272
|
+
- ~~IN 列表向量字面量不匹配~~(已于补遗三落地,连同全部向量谓词形状)
|
|
273
|
+
|
|
274
|
+
## [0.16.0] — 2026-10-30
|
|
275
|
+
|
|
276
|
+
### S1 · 数据损坏 / 崩溃类(B-02 + B-16,同根同验)
|
|
277
|
+
|
|
278
|
+
- **🔴 ALTER 后改存量行:非事务报错、事务崩溃并写坏目录**: `ALTER TABLE
|
|
279
|
+
ADD COLUMN` 扩了 schema 宽度,但旧宽度的行照旧写进新宽度的段 builder —
|
|
280
|
+
非事务 UPDATE 被 "Column count mismatch: expected N, got N-1" 拦下
|
|
281
|
+
(B-02,Node/Python 双复现);事务里的 UPDATE 则在 **close 时**于
|
|
282
|
+
`flush_buffer_locked` panic(越界切片)→ 析构中 abort(exit 134),
|
|
283
|
+
半写状态落盘,**重开同目录再次 abort**(B-16,0.16 回归,0.15.2 是
|
|
284
|
+
静默写坏)。两层修复:
|
|
285
|
+
1. `ColumnarSSTableBuilder::add_values/add_row` 改为按 **builder 的列数**
|
|
286
|
+
遍历,缺的尾列按各 tag 的 NULL 编码补齐 — 窄行不再撕开列缓冲
|
|
287
|
+
(整个 panic 类随之消灭)
|
|
288
|
+
2. `coerce_row_to_schema` 先把短行补齐到 schema 宽度(缺列取 DEFAULT,
|
|
289
|
+
与 ALTER 回填一致)— 覆盖 UPDATE 自动提交、事务缓冲(`coerce` 在
|
|
290
|
+
`record_pending_update` 前调用)与 raw API 插入
|
|
291
|
+
验收: 子进程跑完整 txn→commit→close 序列(abort 会带走测试进程),
|
|
292
|
+
再重开验证数据;坏目录用旧代码复刻、新代码实测可打开。回归:
|
|
293
|
+
`tests/test_report_s1_regressions.rs`(旧代码上实测 SIGABRT)
|
|
294
|
+
- **🔴 附带**: 被 B-16 写坏的 0.16.0 目录,升级后可直接打开(数据可读);
|
|
295
|
+
遗留限制: 崩溃瞬间的行可能以重复形式存在(孤儿段 + WAL 重放),PK
|
|
296
|
+
点查已去重、全扫会看到重复 — 用 DELETE 清理(**0.17.0 已根治**:
|
|
297
|
+
真因为 key=0/ts=0 幽灵行,见 0.17.0 补遗三)
|
|
298
|
+
|
|
299
|
+
### S1 · 静默错误结果类
|
|
300
|
+
|
|
301
|
+
- **B-03 · `TIMESTAMP ± INTEGER` 字面量侧静默 0 行**(CHANGELOG 声称已修
|
|
302
|
+
的遗漏面): round-26 只补了 (Timestamp, Integer) 臂;`'2026-01-01
|
|
303
|
+
00:00:00' + 60000` 这种 TEXT 字面量在 WHERE 的 positional 求值器里折叠
|
|
304
|
+
成 NULL → 比较恒 false。`positional_add/sub` 与 `add_values/sub_values`
|
|
305
|
+
均补 TEXT(ISO)/DATE→Timestamp 臂(非时间戳文本保持良性 NULL)。回归:
|
|
306
|
+
`timestamp_arithmetic_with_iso_text_literal`(含 BETWEEN 内字面量算术)
|
|
307
|
+
|
|
308
|
+
### S1 · 分发类(repo 侧)
|
|
309
|
+
|
|
310
|
+
- **B-01 · Windows 平台包从未发布、根包却声明它**: win32 从 napi targets、
|
|
311
|
+
optionalDependencies、npm 目录、发布矩阵**整体摘除** — 声明了不存在
|
|
312
|
+
的平台包 = Windows 用户 `npm i motedb` 直接 404 安装失败(0.15.1 起三个
|
|
313
|
+
版本)。Windows 现走源码编译,README/docs 同步改口径;真发包时按
|
|
314
|
+
workflow 头部清单四处一起加回
|
|
315
|
+
- **B-04 · npm 发布失败不再静默**: `node-publish.yml` 新增 report job —
|
|
316
|
+
tag 发布任一 job 红 → 自动开/顶追踪 issue(0.15.1/0.15.2 的 bot issue
|
|
317
|
+
来自 release-smoke 的安装冒烟,0.16.0 的漏网正是本条的直接后果);
|
|
318
|
+
release-smoke 的 node 矩阵同步摘除 windows(win32 包上架前必红)
|
|
319
|
+
|
|
320
|
+
### SQL 兼容性
|
|
321
|
+
|
|
322
|
+
- **B-17 · 位置式 INSERT 省略末列填 DEFAULT**(SQLite/PostgreSQL 语义):
|
|
323
|
+
`INSERT INTO h VALUES (1,'a')` 在 4 列表上此前报 Column count mismatch,
|
|
324
|
+
现按 DEFAULT/NULL 补齐;显式列列表仍须精确匹配,值多于列数、
|
|
325
|
+
NOT NULL 无默认仍然报错。回归: `positional_insert_fills_trailing_defaults`
|
|
326
|
+
|
|
327
|
+
### Python 绑定
|
|
328
|
+
|
|
329
|
+
- **B-13 · numpy 整数 2D 数组进 VECTOR 列被拒**: `decode_array_bytes` 补
|
|
330
|
+
2D 整数(i1..i8/u1..u8,符号正确扩展)与 2D f64 → 向量;1D 整数补齐
|
|
331
|
+
各宽度 → Integer。**顺带**(上轮报告遗留): 大端('>')dtype 从静默按
|
|
332
|
+
小端解码改为响亮报错
|
|
333
|
+
- **B-12 · `insert_arrays` 文档/签名/实现不一致**: 接受列式 dict 之外再收
|
|
334
|
+
(列, 值) 二元组序列;其他类型报错写明期望形态。docstring 同步
|
|
335
|
+
- **B-14 · 无参 `rollback()`/`commit()` 抛 TypeError**: 记录最近一次
|
|
336
|
+
begin() 的 tx id,sqlite3 风格的无参回滚/提交可用;无事务时报错文案
|
|
337
|
+
指路
|
|
338
|
+
|
|
339
|
+
### MCP
|
|
340
|
+
|
|
341
|
+
- **B-09 · 只读门拒写文案误称 "MOTESNAP container"**: 引擎侧文案改为
|
|
342
|
+
如实的 "database is opened read-only — writes are disabled"(两种只读
|
|
343
|
+
来由共用)
|
|
344
|
+
- **B-10 · `list_tables` 对 LLM 不友好**: 改为 `{"tables": [{"name", "rows"}]}`
|
|
345
|
+
结构化摘要(含行数),一次往返可用;顺带修 `doctor` 工具把 dict 直接塞进
|
|
346
|
+
MCP `text` 字段(协议要求字符串)— JSON 序列化
|
|
347
|
+
|
|
348
|
+
### 文档止损
|
|
349
|
+
|
|
350
|
+
- **B-08 · 复合 PRIMARY KEY**: 实测 SQL 层四种表级语法全部解析失败;
|
|
351
|
+
CHANGELOG 的"验证钉住"指 raw API 路径 — 三处文档改为如实声明
|
|
352
|
+
(CHANGELOG 加 ⚠️、docs/03 Known gaps、CAPABILITIES "不支持"表)
|
|
353
|
+
- **B-18 · 库路径后缀静默改写**: quick-start 写明 — 库是**目录**,无
|
|
354
|
+
`.mote` 后缀会静默追加(`myapp` → `myapp.mote/`),备份需整目录
|
|
355
|
+
|
|
356
|
+
### 第一轮(修复会话产物:9 类缺陷,其中 2 个经最小复现实证、1 个修复
|
|
357
|
+
### 过程中顺带挖出,全部带回归测试,`tests/test_*.rs` 新增 7 个文件)
|
|
358
|
+
|
|
359
|
+
### 数据损坏类
|
|
360
|
+
|
|
361
|
+
- **🔴 DATE 列在段合并后整列变 NULL**: `encode_column_raw` 无
|
|
362
|
+
`Value::Date` 分支,合并时每个日期走"存储 NULL"占位符(且宽度错:
|
|
363
|
+
2 字节 vs 布局 8 字节/行),旧段合并后被 GC → 不可逆。回归:
|
|
364
|
+
`test_merge_placeholder_width`(存储层 + SQL 层 + 对照组)
|
|
365
|
+
- **🔴 同类**: 合并墓碑占位符对 BLOB 用 2 字节(应为 u32 前缀)→ 合并段
|
|
366
|
+
内后续所有 blob 错位读空。宽度逻辑三处合一为 `null_placeholder()`
|
|
367
|
+
- **🔴 UPDATE 写 TIMESTAMP 列静默归零**: `UPDATE … SET ts = 3000000`(或
|
|
368
|
+
ISO 串)落库成 epoch — 共享的 `coerce_row_to_schema` 缺
|
|
369
|
+
Integer/Text→Timestamp 转换(列名 INSERT 路径有、UPDATE 没有)
|
|
370
|
+
- ALTER ADD COLUMN 的 DEFAULT 回填改为按**列声明类型**编码
|
|
371
|
+
(`encode_default_for_column`): `ADD COLUMN d DATE DEFAULT '2024-01-01'`
|
|
372
|
+
此前把 TEXT 布局写进 8 字节定宽缓冲,破坏该列每一行
|
|
373
|
+
|
|
374
|
+
### 静默错误结果类
|
|
375
|
+
|
|
376
|
+
- INSERT 列名不存在不再静默丢值存 NULL(`affected_rows` 还报 1)——
|
|
377
|
+
与 v0.16 的 WHERE 校验同类,现在报 `ColumnNotFound`。
|
|
378
|
+
回归: `test_insert_unknown_column`
|
|
379
|
+
- 向量化 GROUP BY 的整数 `%`/`/` 与行式求值器语义分叉: `%` 用了
|
|
380
|
+
`rem_euclid`(负数键并错桶:-7%5=3),`/` 不整除时返回 Float
|
|
381
|
+
(`GROUP BY v/10, w` 与 `GROUP BY v/10` 分组不同)。统一为截断余数/
|
|
382
|
+
截断除法,溢出回退通用求值器。回归: `test_group_by_arith_semantics`
|
|
383
|
+
(execute 与 prepared 双路径)
|
|
384
|
+
- 短语查询在每次索引 flush 后丢失此前 flush 的文档: 位置 blob(每词
|
|
385
|
+
一个 key)被本批次覆盖。改为追加自包含段(解码循环读段、新段覆盖
|
|
386
|
+
同 doc),shard 合并时压缩为单段并剔除已删文档
|
|
387
|
+
- **短语查询在有未 flush 文档时整体失明**: `search_phrase` 对每个词
|
|
388
|
+
"要么 pending 要么磁盘"二选一——只要该词有等待 flush 的新文档,
|
|
389
|
+
磁盘上所有文档都被跳过。新增 `PostingList::overlay`(pending 覆盖
|
|
390
|
+
磁盘,同 doc 以新为准)。回归: `test_fts_phrase_multi_flush`
|
|
391
|
+
- 短格式 `MATCH(col, '"a b"')` 强制 `phrase: false`——引号短语静默
|
|
392
|
+
退化为 `a AND b`。与 `MATCH … AGAINST` 共用 `split_match_phrase`
|
|
393
|
+
- **时间戳索引一微秒只留一行**: `BTreeConfig::unique_keys` 从未被读取,
|
|
394
|
+
叶子插入对已存在 key 一律覆盖;且全库无任何 remove 调用,
|
|
395
|
+
DELETE/UPDATE 后 `query_timestamp_range` 永久返回幽灵 row_id。
|
|
396
|
+
B-tree 支持非唯一键(同 key 多 value、精确 `remove_entry`、range/
|
|
397
|
+
remove 从 key-1 的叶子起扫防跨页漏键),删除/更新/事务提交经
|
|
398
|
+
`unindex_row_timestamp` 维护。回归: `test_timestamp_index_duplicates`
|
|
399
|
+
- B-tree 内部节点: 插入遇分隔键相等时向左下降(search/range/remove 向右)
|
|
400
|
+
→ 同 key 二次插入在左叶子生成 `get` 永远看不见的第二条目;子节点分裂
|
|
401
|
+
后用 `binary_search(split_key)` 定位(重复分隔键时 children 与叶子链
|
|
402
|
+
错序)——均改为右降/按下降位置插入
|
|
403
|
+
- WAL 恢复重建时间戳索引只认第 0 列(写路径已支持任意列),且不处理
|
|
404
|
+
Delete/Update 记录 → 恢复后幽灵/漏索引。对齐写路径(任意列 + 增删改)
|
|
405
|
+
|
|
406
|
+
### 持久性类
|
|
407
|
+
|
|
408
|
+
- **显式事务的 COMMIT 标记在 GroupCommit(默认)下不 fsync**: 数据记录
|
|
409
|
+
走 `batch_append`(fsync),标记走 `log_commit` → `append` 只到页缓存,
|
|
410
|
+
group-commit 线程只 fsync 本批次分区。掉电窗口内已确认事务整笔回滚。
|
|
411
|
+
`log_commit` 现对 GroupCommit 直接 `sync_flush`
|
|
412
|
+
- **commit 吞掉段存储 append 失败**: `append_txn_ops` 的 Err 只
|
|
413
|
+
`eprintln!("@@APPEND-FAIL…")` 然后返回 Ok——提交成功但行对所有
|
|
414
|
+
segment-store 读者不可见,checkpoint 截断 WAL 后永久丢失。现返回
|
|
415
|
+
带恢复指引的错误
|
|
416
|
+
|
|
417
|
+
### API 一致性
|
|
418
|
+
|
|
419
|
+
- raw API `drop_table()` 不清理 ColSegmentStore/segment 文件(SQL DROP
|
|
420
|
+
TABLE 有)→ 删表重建同名表旧行复活、重启后恢复程序重新认领旧段目录。
|
|
421
|
+
清理移入 `MoteDB::drop_table`,SQL 路径去重。回归:
|
|
422
|
+
`test_drop_table_raw_api`
|
|
423
|
+
|
|
424
|
+
### FFI 安全
|
|
425
|
+
|
|
426
|
+
- **C ABI 全面 panic 防护**: 13 个 `extern "C"` 入口此前无 `catch_unwind`,
|
|
427
|
+
panic 跨界 = 进程 abort(实测 `INSERT INTO t VALUES (中文)` 经 Go 绑定
|
|
428
|
+
直接 SIGABRT)。panic 现转为 `motedb_last_error` 文本。触发点本身也修了:
|
|
429
|
+
fast-insert 字面量预解析的 `s[start..start+4]` 字节切片改为字节比较。
|
|
430
|
+
回归: `test_ffi_panic_guard`(旧代码上实测 SIGABRT)
|
|
431
|
+
|
|
432
|
+
### 审查后确认无需修改
|
|
433
|
+
|
|
434
|
+
- "SELECT 结果默认静默截断 10 万行"——`max_result_rows` 在标量/向量表、
|
|
435
|
+
execute/prepared、有/无 ORDER BY、显式 1000 上限下均不生效,不成立
|
|
436
|
+
- 词法器"反斜杠 + 多字节字符损坏字符串"——`'C:\桌面'`、`'\é'` 存取正确,
|
|
437
|
+
不成立
|
|
438
|
+
|
|
3
439
|
## [0.16.0] — 2026-10-30
|
|
4
440
|
|
|
5
441
|
> 28 轮系统性猎虫与验证后的正确性版本。**42 个缺陷修复**(含 1 个数据
|
|
@@ -41,6 +477,9 @@
|
|
|
41
477
|
全部死于误导性解析错误;别名可在 ORDER BY/GROUP BY/HAVING 引用
|
|
42
478
|
- 验证钉住: 复合 PRIMARY KEY(重复拒绝/双键点查/复合 upsert/重开强制)、
|
|
43
479
|
列 DEFAULT 值、NOT NULL 双路径强制、LIMIT ?/OFFSET ? 绑定参数
|
|
480
|
+
(⚠️ 复合 PRIMARY KEY 仅指 raw API 的 `TableSchema` 路径;SQL 层的
|
|
481
|
+
表级 `PRIMARY KEY (a, b)` 约束目前**解析失败**,见 CAPABILITIES.md —
|
|
482
|
+
B-08 报告指出该文案曾被误读为 SQL 已支持)
|
|
44
483
|
|
|
45
484
|
### 语义钉住(文档化,防止引擎间歧义)
|
|
46
485
|
|
|
@@ -894,7 +894,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
894
894
|
checksum = "74783a9ed407e844e99d5e7a57bd650acbfa124cf6e97ffd790ba59d8ab8e7ff"
|
|
895
895
|
dependencies = [
|
|
896
896
|
"libflate",
|
|
897
|
-
"zstd",
|
|
897
|
+
"zstd 0.13.3",
|
|
898
898
|
]
|
|
899
899
|
|
|
900
900
|
[[package]]
|
|
@@ -1117,7 +1117,7 @@ dependencies = [
|
|
|
1117
1117
|
|
|
1118
1118
|
[[package]]
|
|
1119
1119
|
name = "motedb"
|
|
1120
|
-
version = "0.
|
|
1120
|
+
version = "0.17.0"
|
|
1121
1121
|
dependencies = [
|
|
1122
1122
|
"arc-swap",
|
|
1123
1123
|
"arrow-array",
|
|
@@ -1149,7 +1149,7 @@ dependencies = [
|
|
|
1149
1149
|
"thiserror 1.0.69",
|
|
1150
1150
|
"tikv-jemalloc-ctl",
|
|
1151
1151
|
"tikv-jemallocator",
|
|
1152
|
-
"zstd",
|
|
1152
|
+
"zstd 0.14.3",
|
|
1153
1153
|
]
|
|
1154
1154
|
|
|
1155
1155
|
[[package]]
|
|
@@ -1280,7 +1280,7 @@ dependencies = [
|
|
|
1280
1280
|
"seq-macro",
|
|
1281
1281
|
"snap",
|
|
1282
1282
|
"twox-hash",
|
|
1283
|
-
"zstd",
|
|
1283
|
+
"zstd 0.13.3",
|
|
1284
1284
|
]
|
|
1285
1285
|
|
|
1286
1286
|
[[package]]
|
|
@@ -2054,23 +2054,41 @@ version = "0.13.3"
|
|
|
2054
2054
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2055
2055
|
checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
|
|
2056
2056
|
dependencies = [
|
|
2057
|
-
"zstd-safe",
|
|
2057
|
+
"zstd-safe 7.3.0",
|
|
2058
|
+
]
|
|
2059
|
+
|
|
2060
|
+
[[package]]
|
|
2061
|
+
name = "zstd"
|
|
2062
|
+
version = "0.14.3"
|
|
2063
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2064
|
+
checksum = "db3ae9bf90af6e40197bef767eeefc46ad6397420fe873830bd85e5fbbfb3c70"
|
|
2065
|
+
dependencies = [
|
|
2066
|
+
"zstd-safe 8.2.0",
|
|
2067
|
+
]
|
|
2068
|
+
|
|
2069
|
+
[[package]]
|
|
2070
|
+
name = "zstd-safe"
|
|
2071
|
+
version = "7.3.0"
|
|
2072
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2073
|
+
checksum = "64d80649ab6db9d9f6f9c80a40becd948eda4714a0a5ac8c4d157a32231c7882"
|
|
2074
|
+
dependencies = [
|
|
2075
|
+
"zstd-sys",
|
|
2058
2076
|
]
|
|
2059
2077
|
|
|
2060
2078
|
[[package]]
|
|
2061
2079
|
name = "zstd-safe"
|
|
2062
|
-
version = "
|
|
2080
|
+
version = "8.2.0"
|
|
2063
2081
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2064
|
-
checksum = "
|
|
2082
|
+
checksum = "ded520f16b29e1a9b771c722221b2b0a0398c2316d9bb3c42b458a5414d7434b"
|
|
2065
2083
|
dependencies = [
|
|
2066
2084
|
"zstd-sys",
|
|
2067
2085
|
]
|
|
2068
2086
|
|
|
2069
2087
|
[[package]]
|
|
2070
2088
|
name = "zstd-sys"
|
|
2071
|
-
version = "2.
|
|
2089
|
+
version = "2.1.2+zstd.1.5.7"
|
|
2072
2090
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2073
|
-
checksum = "
|
|
2091
|
+
checksum = "481ada9c543b2323cbb7bbdbb5249177fbf0188ed959ed2c15e4b22421c84ed3"
|
|
2074
2092
|
dependencies = [
|
|
2075
2093
|
"cc",
|
|
2076
2094
|
"pkg-config",
|