motedb-python 0.15.1__tar.gz → 0.16.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/.github/FUNDING.yml +11 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/workflows/ci.yml +52 -8
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/workflows/node-publish.yml +23 -11
- motedb_python-0.16.0/CAPABILITIES.md +178 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/CHANGELOG.md +118 -0
- motedb_python-0.16.0/CODE_OF_CONDUCT.md +105 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/Cargo.lock +362 -3
- {motedb_python-0.15.1 → motedb_python-0.16.0}/Cargo.toml +11 -2
- motedb_python-0.16.0/GOVERNANCE.md +153 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/Makefile +7 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/PKG-INFO +1 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/README.md +16 -3
- motedb_python-0.16.0/ROADMAP.md +151 -0
- motedb_python-0.16.0/VERSIONING.md +49 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/Cargo.lock +505 -4
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/Cargo.toml +2 -1
- motedb_python-0.16.0/bindings/python/bench/compete_vec_engines.py +344 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/e2e/e2e_workload.py +40 -0
- motedb_python-0.16.0/bindings/python/e2e/test_mcp_stdio.py +98 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/src/lib.rs +40 -2
- motedb_python-0.16.0/bindings/python/tests/test_parquet_lerobot.py +159 -0
- motedb_python-0.16.0/community/README.md +160 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/01-quick-start.md +1 -1
- motedb_python-0.16.0/docs/03-sql-operations.md +361 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/05-transactions.md +14 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/08-vector-index.md +49 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/09-text-index.md +30 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/10-spatial-index.md +9 -10
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/13-data-types.md +28 -7
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/14-api-reference.md +52 -1
- motedb_python-0.16.0/docs/17-hybrid-arrow.md +52 -0
- motedb_python-0.16.0/docs/19-training-dataloader.md +49 -0
- motedb_python-0.16.0/docs/20-mcp.md +40 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/README.md +4 -1
- motedb_python-0.16.0/docs/api/public-api-baseline.txt +9480 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/design/2026-10-industry-parity-plan.md +109 -15
- motedb_python-0.16.0/docs/design/2026-10-order-by-internals.md +248 -0
- motedb_python-0.16.0/docs/design/2026-10-txn-fix-log.md +170 -0
- motedb_python-0.16.0/examples/lerobot_interop.rs +55 -0
- motedb_python-0.16.0/examples/parquet_interop.rs +81 -0
- motedb_python-0.16.0/examples/torch_dataloader.py +60 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/pyproject.toml +1 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/python/motedb/__init__.py +53 -0
- motedb_python-0.16.0/python/motedb/mcp.py +204 -0
- motedb_python-0.16.0/python/motedb/torch.py +87 -0
- motedb_python-0.16.0/scripts/bench_industry.sh +26 -0
- motedb_python-0.16.0/scripts/bench_report.py +63 -0
- motedb_python-0.16.0/scripts/check_public_api.sh +49 -0
- motedb_python-0.16.0/scripts/gen_format_fixture.rs +57 -0
- motedb_python-0.16.0/scripts/gen_format_fixtures.sh +32 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/api.rs +17 -7
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/bin/motedb-cli.rs +4 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/cache/row_cache.rs +64 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/catalog/registry.rs +42 -2
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/core.rs +53 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/crud.rs +158 -75
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/indexes/timestamp.rs +7 -7
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/indexes/vector.rs +53 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/snapshot.rs +12 -2
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/transaction.rs +208 -89
- motedb_python-0.16.0/src/export/lerobot.rs +707 -0
- motedb_python-0.16.0/src/export/mod.rs +8 -0
- motedb_python-0.16.0/src/export/parquet.rs +625 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/cached_index.rs +1 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/text_fts.rs +4 -2
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/tokenizers.rs +46 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/vamana/config.rs +9 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/vamana/disk_graph.rs +57 -15
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/vamana/diskann_index.rs +32 -13
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/vamana/sq8_vectors.rs +33 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/lib.rs +3 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/ast.rs +117 -6
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/evaluator.rs +133 -34
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/executor/agg.rs +5 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/executor/mod.rs +1306 -238
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/executor/scan.rs +77 -14
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/lexer.rs +26 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/parser.rs +394 -10
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/row_converter.rs +7 -54
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/vector_exec.rs +43 -9
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/col_segment/merge.rs +25 -31
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/col_segment/segment.rs +9 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/col_segment/store.rs +506 -150
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/colbatch.rs +16 -1
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/columnar.rs +263 -3
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/row_format.rs +56 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/txn/coordinator.rs +30 -0
- motedb_python-0.16.0/src/types/date.rs +146 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/types/mod.rs +42 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/types/table.rs +70 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/types/timestamp.rs +44 -9
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/.lock +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/catalog.bin +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/columnar_ms/mig/0000000001.sst +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/columnar_ms/mig/MANIFEST +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/columnar_ms/mig_vec/0000000001.sst +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/columnar_ms/mig_vec/MANIFEST +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/fts_indexes.fresh +1 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/indexes/timestamp.idx +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/lsm/blobs/00000001.blob +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/lsn_counter +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/wal/partition_0.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/wal/partition_1.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/wal/partition_2.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.12.9/db.mote/wal/partition_3.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/.lock +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/catalog.bin +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/columnar_ms/mig/0000000001.sst +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/columnar_ms/mig/MANIFEST +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/columnar_ms/mig_vec/0000000001.sst +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/columnar_ms/mig_vec/MANIFEST +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/fts_indexes.fresh +1 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/indexes/timestamp.idx +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/lsm/blobs/00000001.blob +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/lsn_counter +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/wal/partition_0.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/wal/partition_1.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/wal/partition_2.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.13.0/db.mote/wal/partition_3.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/.lock +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/catalog.bin +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/columnar_ms/mig/0000000001.sst +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/columnar_ms/mig/MANIFEST +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/columnar_ms/mig_vec/0000000001.sst +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/columnar_ms/mig_vec/MANIFEST +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/fts_indexes.fresh +1 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/indexes/timestamp.idx +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/lsm/blobs/00000001.blob +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/lsn_counter +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/wal/partition_0.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/wal/partition_1.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/wal/partition_2.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.14.0/db.mote/wal/partition_3.wal +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.15.2/db.mote/.lock +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.15.2/db.mote/columnar_ms/MANIFEST +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.15.2/db.mote/columnar_ms/mig/0000000001.sst +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.15.2/db.mote/columnar_ms/mig_vec/0000000001.sst +0 -0
- motedb_python-0.16.0/tests/fixtures/formats/v0.15.2/db.mote/meta.bin +0 -0
- motedb_python-0.16.0/tests/test_blob_where.rs +156 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v102.rs +279 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v103.rs +201 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v104.rs +332 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v105.rs +272 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v106.rs +201 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v107.rs +228 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v108.rs +242 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v110.rs +432 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v111.rs +459 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v112.rs +366 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v113.rs +410 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v114.rs +269 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v115.rs +317 -0
- motedb_python-0.16.0/tests/test_bug_hunt_v116.rs +297 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v18.rs +8 -7
- motedb_python-0.16.0/tests/test_concurrent_agg_consistency.rs +329 -0
- motedb_python-0.16.0/tests/test_concurrent_transfer_drift.rs +118 -0
- motedb_python-0.16.0/tests/test_concurrent_txn_ww.rs +230 -0
- motedb_python-0.16.0/tests/test_correlated_subquery.rs +145 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_corruption_robustness.rs +5 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_crash_injection.rs +198 -1
- motedb_python-0.16.0/tests/test_date_type.rs +212 -0
- motedb_python-0.16.0/tests/test_format_migration.rs +131 -0
- motedb_python-0.16.0/tests/test_lerobot_export.rs +234 -0
- motedb_python-0.16.0/tests/test_like_escape.rs +155 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_no_bloat.rs +15 -5
- motedb_python-0.16.0/tests/test_parquet_roundtrip.rs +208 -0
- motedb_python-0.16.0/tests/test_quoted_vector_literal.rs +114 -0
- motedb_python-0.16.0/tests/test_row_cache_delete_ghost.rs +103 -0
- motedb_python-0.16.0/tests/test_show_indexes_and_open_snapshot.rs +85 -0
- motedb_python-0.16.0/tests/test_ts_index_nonfirst.rs +102 -0
- motedb_python-0.16.0/tests/test_txn_delete_reinsert.rs +132 -0
- motedb_python-0.16.0/tests/test_txn_read_your_writes.rs +104 -0
- motedb_python-0.16.0/tests/test_vector_index_knobs.rs +86 -0
- motedb_python-0.16.0/tests/test_vector_null_scan.rs +95 -0
- motedb_python-0.16.0/tests/test_window_frames.rs +385 -0
- motedb_python-0.15.1/docs/03-sql-operations.md +0 -570
- motedb_python-0.15.1/docs/17-hybrid-arrow.md +0 -50
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.cargo/config.toml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.devcontainer/devcontainer.json +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/ISSUE_TEMPLATE/install_problem.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/pull_request_template.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/workflows/fuzz.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/workflows/perf-gate.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/workflows/publish.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/workflows/python-wheels.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/workflows/release-smoke.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.github/workflows/site.yml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.gitignore +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.zcode/plans/plan-sess_abb2c954-05fb-477e-9d0a-3e22261e2449.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/.zcode/plans/plan-sess_b5937a06-b7bf-4471-9756-dbf2787b263c.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/CONTRIBUTING.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/LICENSE +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/RELEASE_NOTES.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/SECURITY.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/go/README.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/go/go.mod +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/go/motedb.go +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/go/motedb.h +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/go/motedb_test.go +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/README.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/README.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/adversarial_verify.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/bench_edge.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/compete_bench.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/compete_fts_industry.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/compete_scale.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/compete_spatial_ts.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/compete_vec_industry.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/compete_writes.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/fts_probe_once.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/perf_ab.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/perf_overall.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/prof_ann.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/prof_fts.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/prof_insert.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/prof_point.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/prof_real.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/prof_scale.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/prof_scale_vec.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/prof_vec_parallel.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/resource_bench.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/resource_bench_2026-09_profile.json +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/resource_bench_v0.10.0.json +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/spatial_eval.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/text_eval.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/ts_eval.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/bench/vector_recall_eval.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/build.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/e2e/test_durability_kwarg.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/e2e/test_snapshot_export.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/licenses/LICENSE +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/scripts/build_wheel.sh +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/data/demo.mcap +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_backup.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_crash_recovery.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_e2e_cli.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_e2e_functional.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_feature_selfcheck.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_fetch_arrays.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_fuzz_bigtable.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_fuzz_differential.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_insert_arrays.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_mcap_import.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_parallel_ab.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/bindings/python/tests/test_smoke.py +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/deny.toml +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/02-installation.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/04-batch-operations.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/06-indexes-overview.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/07-column-index.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/11-timestamp-index.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/12-performance.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/15-best-practices.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/16-faq.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/18-install-troubleshooting.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/benchmark_methodology.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/design/2026-10-embodied-roadmap.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/design/2026-10-file-layout-plan.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/design/2026-10-file-layout.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/design/2026-10-good-first-issues.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/design/2026-10-traj-spike.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/paper/README.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/docs/paper/motedb.tex +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_300k.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_autocommit_lock.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_disk.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_exec_only.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_insert_engine.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_layer.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_memory.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_multimodal_vs_competitors.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_point_read.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_profile_hot.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_scaling.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_stability.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/bench_vs_sqlite.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/corruption_fuzz.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/crud.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/differential_fuzz.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/file_layout_bench.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/gen_test_bag.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/hello_world.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/join_differential_fuzz.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/logging.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/perf_smoke.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/probe_ckpt.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/probe_filter_decomp.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/probe_jemalloc.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/probe_memory_source.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/probe_tail_latency.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/text_rank_probe.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/traj_spike.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/examples/vector_recall_real.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/licenses/LICENSE +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/scripts/Dockerfile.e2e +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/scripts/compete.sh +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/scripts/docker_e2e.sh +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/scripts/release_smoke.sh +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/scripts/repro_point_query_gap.sh +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/site/index.html +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/site/llms-full.txt +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/site/llms.txt +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/site/robots.txt +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/cache/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/catalog/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/config.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/datasets.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/doctor.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/helpers.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/index_metadata.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/indexes/column.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/indexes/dashmap_migration.md +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/indexes/ioctree.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/indexes/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/indexes/text.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/mem_buffer.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/meta_store.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/persistence.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/pk_cache.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/table.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/database/timeseries.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/distance/cosine.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/distance/euclidean.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/distance/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/error.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/ffi.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/btree.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/btree_generic.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/builder.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/column_value.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/fresh_graph.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/ioctree/leaf_store.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/ioctree/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/ioctree/node.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/ioctree/persistence.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/ioctree/search.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/primary_key.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/text_dictionary.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/text_encoding.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/text_query.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/text_types.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/vamana/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/vamana/pruner.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/index/vamana/sq8.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/mcap_import.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/platform_io.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/executor/join.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/join/hash_join.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/join/index_join.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/join/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/optimizer.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/sql/token.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/checksum.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/col_segment/manifest.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/col_segment/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/columnar/column_encoding.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/columnar/config.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/columnar/gorilla.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/columnar/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/columnar/segment.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/columnar/segment_manager.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/columnar/store.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/columnar/write_buffer.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/file_manager.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/blobstore.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/bloom.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/compaction.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/engine.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/memtable.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/merging_iterator.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/sstable.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/lsm/unified_memtable.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/manifest/manifest.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/manifest/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/manifest/version.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/storage/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/txn/lock_manager.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/txn/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/txn/mvcc.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/txn/recovery.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/txn/version_store.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/txn/wal.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/types/comp_sum.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/types/spatial.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/types/tensor.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/src/types/text.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/acid_test.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_2m.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_acid.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_batch_ops.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_compare.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_comprehensive.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_concurrent.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_index_ops.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_multimodal.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_multimodal_full.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_multimodal_ops.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_perf_report.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_quick_baseline.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_release.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_report.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_resource.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_sql_queries.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_timeseries_index.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_v060_report.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_vs_sqlite_100k.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/bench_vs_sqlite_v05.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/common/mod.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/durability_probe.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/fts_probe.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/perf_test.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/repro_multirow_update_fts.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/repro_point_gap.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/stress_300k.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/stress_test.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_acid_audit.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_acid_comprehensive.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_advanced_hunt.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_api_correctness.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_asof_join.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_auto_checkpoint_segments.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_backup.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_blob_type.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_btree_integrity.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt2.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt3.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt4.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt5.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt6.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt7.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v10.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v100.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v101.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v11.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v12.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v13.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v14.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v15.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v16.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v17_cte.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v19.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v2.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v20.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v21.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v22.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v23.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v24.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v25.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v26.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v27.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v28.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v29.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v3.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v30.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v31.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v32.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v33.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v34.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v35.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v36.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v38.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v39.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v4.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v40.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v43.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v45.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v48.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v49.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v5.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v50.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v51.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v52.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v53.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v54.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v55.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v56.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v57.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v58.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v59.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v6.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v60.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v61.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v62.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v63.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v64.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v65.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v66.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v67.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v68.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v69.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v7.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v70.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v71.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v72.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v73.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v74.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v75.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v76.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v77.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v78.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v79.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v8.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v80.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v81.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v82.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v83.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v84.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v85.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v86.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v87.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v88.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v89.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v9.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v90.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v91.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v92.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v93.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v94.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v95.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v96.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v97.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v98.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_bug_hunt_v99.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_col_segment.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_col_segment_fastpaths.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_columnar.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_columnar_acid.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_compact_storage.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_compaction_integrity.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_compiled_where_semantics.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_comprehensive.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_comprehensive_audit.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_concurrent_sql_features.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_concurrent_stress.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_corruption_recovery.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_crash_recovery.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_data_types.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_datasets.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_db_path_hygiene.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_deadlock_stress.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_deep_edge.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_delete_persist.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_differential_correctness.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_disk_bloat.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_disk_usage.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_doctor.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_durability.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_e2e_crash_and_stress.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_edge_cases.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_edge_semantics.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_episodes.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_executemany.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_exists_subquery.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_explain.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_extreme_hunt.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_fast_paths.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_file_layout.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_fts_recovery_staleness.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_fuzz_sql_combinations.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_global_manifest.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_groupby_first_query.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_hybrid_search.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_index_maintenance.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_index_reopen.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_index_robustness.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_indexed_query_semantics.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_insert_engine.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_insert_explicit_fastpath.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_insert_paths_index_maintenance.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_insert_select.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_ioctree.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_isolation_levels.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_join_count_fold.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_knn_parallel.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_large_rows.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_m5_mines.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_mcap_import.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_memory_leak.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_memory_linear.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_multimodal.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_multimodal_e2e.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_mvcc_isolation.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_mvcc_recovery.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_optimization_regression.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_order_by_expr_keys.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_parser_fuzz_regression.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_performance_guarantees.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_pk_change_semantics.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_prepared_dml.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_public_api.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_query_equivalence.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_range_count.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_release_readiness.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_repro12.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_round12_optimizations.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_round12b_edge.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_round12c_e2e_bugs.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_round13_bug_hunt.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_row_api.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_rrf_hybrid.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_savepoint_window.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_scalability.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_scan_integrity.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_semantic_edges.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_snapshot.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_spatial_index.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_spatial_large_geometry.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_spatial_sql_semantics.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_advanced.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_correctness.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_correctness_part2.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_ddl_features.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_errors_edges.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_functions.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_groupby.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_joins.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_sql_scenarios.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_storage_integrity.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_stress.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_stress_hunt.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_text_ts_search_semantics.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_timeseries_index.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_timeseries_semantics.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_timestamp_recovery.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_transaction_semantics.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_txn_ddl_and_nan_ordering.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_update_perf.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_upsert.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_v050_features.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_vec_m0.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_vec_m4.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_vector_column_read_paths.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_vector_durability.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_vector_index_recall.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_vector_spatial_text.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_vector_visibility.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_wide_tables.rs +0 -0
- {motedb_python-0.15.1 → motedb_python-0.16.0}/tests/test_write_concurrency.rs +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# MoteDB is maintained by one person, on evenings and weekends.
|
|
2
|
+
# If MoteDB saved you time, or if you depend on it to run a robot in
|
|
3
|
+
# production, a small GitHub Sponsors contribution is what keeps it going.
|
|
4
|
+
#
|
|
5
|
+
# See the community page for everything else:
|
|
6
|
+
# https://github.com/motedb/motedb/blob/main/community/README.md
|
|
7
|
+
|
|
8
|
+
github: [motedb]
|
|
9
|
+
# Once a second funding route exists (or if you prefer not to use GitHub
|
|
10
|
+
# Sponsors), replace the line above with:
|
|
11
|
+
# custom: ["<your-funding-url>"]
|
|
@@ -32,6 +32,15 @@ jobs:
|
|
|
32
32
|
- name: cargo clippy (advisory — warnings do not fail the job)
|
|
33
33
|
run: cargo clippy --all-targets --all-features --no-deps
|
|
34
34
|
continue-on-error: true
|
|
35
|
+
# e3ebb24 shipped a mid-match wildcard in BOTH bindings: every concrete
|
|
36
|
+
# arm after it became unreachable (a warn-only lint) and Python returned
|
|
37
|
+
# None for every value. The root-crate clippy above never sees the
|
|
38
|
+
# binding crates — they are not workspace members. Deny the lint here.
|
|
39
|
+
- name: bindings check — unreachable_patterns denied
|
|
40
|
+
run: |
|
|
41
|
+
for m in bindings/python/Cargo.toml bindings/node/Cargo.toml; do
|
|
42
|
+
RUSTFLAGS="-D unreachable_patterns" cargo check --manifest-path "$m" --quiet
|
|
43
|
+
done
|
|
35
44
|
|
|
36
45
|
# ── Supply-chain: vulnerability + license gate (cargo-deny) ──────────────
|
|
37
46
|
# Fails on any NEW RustSec advisory (vulnerability/unsound). Four known
|
|
@@ -131,6 +140,7 @@ jobs:
|
|
|
131
140
|
# hardware-speed assumptions shared runners can't meet. Tracked in
|
|
132
141
|
# BENCHMARK.md instead.
|
|
133
142
|
run: |
|
|
143
|
+
set +e
|
|
134
144
|
cargo test --workspace --all-features -- \
|
|
135
145
|
--test-threads=1 \
|
|
136
146
|
--skip bench_ --skip stress_ --skip perf_ \
|
|
@@ -150,13 +160,29 @@ jobs:
|
|
|
150
160
|
--skip test_scalability_latency \
|
|
151
161
|
--skip test_scalability_memory \
|
|
152
162
|
--skip test_durability_large_dataset_checkpoint_recovery \
|
|
153
|
-
--skip test_performance_guarantees
|
|
163
|
+
--skip test_performance_guarantees \
|
|
164
|
+
> /tmp/ci-test.log 2>&1
|
|
165
|
+
rc=$?
|
|
166
|
+
if [ $rc -ne 0 ]; then
|
|
167
|
+
# 🔑 Anonymous-readable failure surface: the trailing `Running
|
|
168
|
+
# tests/…` line before the failure block names the failing
|
|
169
|
+
# binary. (The separate diagnostics step proved unreliable — its
|
|
170
|
+
# `{ } || …` grouping suppressed set -e and silently skipped.)
|
|
171
|
+
grep -E "Running (tests|unittests)|FAILED|panicked at|^failures:" /tmp/ci-test.log \
|
|
172
|
+
| tail -8 | while IFS= read -r line; do
|
|
173
|
+
echo "::error title=integration-fail::$line"
|
|
174
|
+
done
|
|
175
|
+
echo "---- tail of test log ----"
|
|
176
|
+
tail -30 /tmp/ci-test.log
|
|
177
|
+
fi
|
|
178
|
+
exit $rc
|
|
154
179
|
- name: cargo test (workspace, hardware-threshold tests skipped) [attempt 2]
|
|
155
180
|
id: ci2
|
|
156
181
|
if: steps.ci1.outcome == 'failure'
|
|
157
182
|
env:
|
|
158
183
|
CI: "1"
|
|
159
184
|
run: |
|
|
185
|
+
set +e
|
|
160
186
|
cargo test --workspace --all-features -- \
|
|
161
187
|
--test-threads=1 \
|
|
162
188
|
--skip bench_ --skip stress_ --skip perf_ \
|
|
@@ -176,7 +202,22 @@ jobs:
|
|
|
176
202
|
--skip test_scalability_latency \
|
|
177
203
|
--skip test_scalability_memory \
|
|
178
204
|
--skip test_durability_large_dataset_checkpoint_recovery \
|
|
179
|
-
--skip test_performance_guarantees
|
|
205
|
+
--skip test_performance_guarantees \
|
|
206
|
+
> /tmp/ci-test.log 2>&1
|
|
207
|
+
rc=$?
|
|
208
|
+
if [ $rc -ne 0 ]; then
|
|
209
|
+
# 🔑 Anonymous-readable failure surface: the trailing `Running
|
|
210
|
+
# tests/…` line before the failure block names the failing
|
|
211
|
+
# binary. (The separate diagnostics step proved unreliable — its
|
|
212
|
+
# `{ } || …` grouping suppressed set -e and silently skipped.)
|
|
213
|
+
grep -E "Running (tests|unittests)|FAILED|panicked at|^failures:" /tmp/ci-test.log \
|
|
214
|
+
| tail -8 | while IFS= read -r line; do
|
|
215
|
+
echo "::error title=integration-fail::$line"
|
|
216
|
+
done
|
|
217
|
+
echo "---- tail of test log ----"
|
|
218
|
+
tail -30 /tmp/ci-test.log
|
|
219
|
+
fi
|
|
220
|
+
exit $rc
|
|
180
221
|
- name: verdict
|
|
181
222
|
if: always()
|
|
182
223
|
run: |
|
|
@@ -191,8 +232,12 @@ jobs:
|
|
|
191
232
|
# 🔑 K-debug: cargo 顶层一次跑时,crashing binary 会以 exit 101
|
|
192
233
|
# 中断整个套件且不留 FAILED 行。逐 bin 运行并把每个 bin 的退出码
|
|
193
234
|
# 通过 ::error:: annotations 上报(匿名可读)。
|
|
235
|
+
# 2026-10-21 修复: 曾有一行多余的 `} || echo …`(未配对大括号)
|
|
236
|
+
# 让本步骤自身以 exit 2 崩溃,逐 bin 上报从未生效过;同时对
|
|
237
|
+
# rc=101(真实测试失败,有 FAILED 行)也提取失败测试名,不再只
|
|
238
|
+
# 处理非 101 的编译错误。
|
|
194
239
|
{
|
|
195
|
-
echo "###
|
|
240
|
+
echo "### integration per-binary status ($RUNNER_OS)"
|
|
196
241
|
BINS=$(cargo test --workspace --all-features -- --list 2>/dev/null \
|
|
197
242
|
| grep -E "^Running|^ " >/dev/null; cargo test --workspace \
|
|
198
243
|
--all-features --no-run 2>&1 | grep -oE "Executable tests/[a-z0-9_]+\.rs" \
|
|
@@ -213,14 +258,13 @@ jobs:
|
|
|
213
258
|
--skip test_performance_guarantees --no-fail-fast \
|
|
214
259
|
> /tmp/one.log 2>&1
|
|
215
260
|
rc=$?
|
|
216
|
-
echo "::error title=
|
|
217
|
-
if [ $rc -ne 0 ]
|
|
218
|
-
grep -E "panicked at
|
|
261
|
+
echo "::error title=integration-$RUNNER_OS::$t exit=$rc"
|
|
262
|
+
if [ $rc -ne 0 ]; then
|
|
263
|
+
grep -E "^test .* FAILED|^failures:|panicked at" /tmp/one.log | head -8 \
|
|
219
264
|
| while read -r line; do echo "::error ::$line"; done
|
|
220
265
|
fi
|
|
221
266
|
done
|
|
222
267
|
} || echo "per-binary diagnostics done" >> "$GITHUB_STEP_SUMMARY"
|
|
223
|
-
} || echo "diagnostics pass done" >> "$GITHUB_STEP_SUMMARY"
|
|
224
268
|
|
|
225
269
|
|
|
226
270
|
# ── Cross-compile: aarch64-unknown-linux-gnu (build only) ────────────────
|
|
@@ -287,7 +331,7 @@ jobs:
|
|
|
287
331
|
args: --release
|
|
288
332
|
- name: Install wheel
|
|
289
333
|
run: pip install bindings/python/target/wheels/*.whl
|
|
290
|
-
- name: Run E2E workload (
|
|
334
|
+
- name: Run E2E workload (12 suites)
|
|
291
335
|
env:
|
|
292
336
|
MOTE_CLI: ${{ github.workspace }}/target/release/motedb-cli
|
|
293
337
|
run: python bindings/python/e2e/e2e_workload.py --root /tmp/e2e
|
|
@@ -256,17 +256,19 @@ jobs:
|
|
|
256
256
|
# root loader whose optionalDependencies point at them). Auth comes
|
|
257
257
|
# from setup-node's .npmrc + NODE_AUTH_TOKEN. `napi pre-publish` is
|
|
258
258
|
# deliberately NOT used: it assumes a GitHub release flow we don't run.
|
|
259
|
-
# Idempotent + burst-safe: skips
|
|
259
|
+
# Idempotent + burst-safe: skips versions already on the registry
|
|
260
260
|
# (EPUBLISHCONFLICT would otherwise abort the loop on re-runs) and
|
|
261
|
-
# paces publishes
|
|
262
|
-
# heuristics reject rapid-fire new-package creation from new accounts
|
|
261
|
+
# paces publishes with escalating retries — npm's anti-spam
|
|
262
|
+
# heuristics reject rapid-fire new-package creation from new accounts
|
|
263
|
+
# (v0.15.1 tag run: the one brand-new platform package burned all 3
|
|
264
|
+
# fast retries; a cooldown + re-dispatch is the recovery path).
|
|
263
265
|
working-directory: bindings/node
|
|
264
266
|
env:
|
|
265
267
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
266
268
|
run: |
|
|
267
269
|
set -e
|
|
268
270
|
pub() {
|
|
269
|
-
local d="$1" name ver try
|
|
271
|
+
local d="$1" name ver try wait
|
|
270
272
|
name=$(jq -r .name "$d/package.json")
|
|
271
273
|
ver=$(jq -r .version "$d/package.json")
|
|
272
274
|
# Compare the PINNED version, not mere existence: after a version
|
|
@@ -276,17 +278,27 @@ jobs:
|
|
|
276
278
|
if npm view "$name@$ver" version >/dev/null 2>&1; then
|
|
277
279
|
echo " $name@$ver already on npm — skip"; return 0
|
|
278
280
|
fi
|
|
279
|
-
|
|
280
|
-
|
|
281
|
+
# Escalating backoff: anti-spam blocks clear after a cooldown,
|
|
282
|
+
# not immediately — fast retries just burn the attempts.
|
|
283
|
+
for try in 1 2 3 4 5; do
|
|
284
|
+
echo "::group::publish $name@$ver (attempt $try)"
|
|
281
285
|
if (cd "$d" && npm publish --access public); then
|
|
282
|
-
echo "::endgroup::"; echo " published $name"; return 0
|
|
286
|
+
echo "::endgroup::"; echo " published $name@$ver"; return 0
|
|
283
287
|
fi
|
|
284
288
|
echo "::endgroup::"
|
|
285
|
-
[ "$try" =
|
|
286
|
-
|
|
289
|
+
[ "$try" = 5 ] && break
|
|
290
|
+
case "$try" in
|
|
291
|
+
1) wait=120 ;; 2) wait=300 ;; 3) wait=600 ;; *) wait=900 ;;
|
|
292
|
+
esac
|
|
293
|
+
echo " retry in ${wait}s (npm anti-spam/rate heuristics)"; sleep "$wait"
|
|
287
294
|
done
|
|
288
|
-
echo "::error::gave up publishing $name after
|
|
295
|
+
echo "::error::gave up publishing $name@$ver after 5 attempts"
|
|
289
296
|
return 1
|
|
290
297
|
}
|
|
291
|
-
|
|
298
|
+
# 主包最优先 — 它是 `npm install motedb` 的入口; 平台包是
|
|
299
|
+
# optionalDependencies, 单个被 npm 反垃圾拦截不应拖死主包
|
|
300
|
+
# (失败让 job 标红以便跟踪, 但其余包继续发)。
|
|
292
301
|
pub . || exit 1
|
|
302
|
+
rc=0
|
|
303
|
+
for d in npm/*/; do pub "$d" || rc=1; sleep 120; done
|
|
304
|
+
exit $rc
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Capability Manifest
|
|
2
|
+
|
|
3
|
+
> This file is the **single source of truth** for what MoteDB can do.
|
|
4
|
+
> The website, the README, blog posts and any external material should cite
|
|
5
|
+
> this manifest rather than restating feature claims.
|
|
6
|
+
> The point: every line below should map to an implementation and a test.
|
|
7
|
+
|
|
8
|
+
**Version baseline:** v0.15.2 · **Last verified:** 2026-10-24
|
|
9
|
+
|
|
10
|
+
Legend: `✅ supported` · `🟡 partial (see note)` · `❌ not supported` · `🟢 differentiator`
|
|
11
|
+
|
|
12
|
+
> If you find a line here that does not match actual behaviour, please open an
|
|
13
|
+
> issue — **those are the ones we triage first**.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. SQL engine
|
|
18
|
+
|
|
19
|
+
| Capability | Status | Notes |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `CREATE TABLE` / `CREATE INDEX` / `DROP TABLE [IF EXISTS]` / `DROP INDEX` | ✅ | Column, vector, text, spatial, timestamp index variants |
|
|
22
|
+
| `ALTER TABLE` | ✅ | `ADD COLUMN`, `AUTO_INCREMENT = N` |
|
|
23
|
+
| `INSERT` (incl. `INSERT ... SELECT`) | ✅ | |
|
|
24
|
+
| `UPDATE` / `DELETE` | ✅ | |
|
|
25
|
+
| `SELECT` with `WHERE` | ✅ | |
|
|
26
|
+
| `JOIN` — INNER / LEFT / RIGHT / FULL | ✅ | |
|
|
27
|
+
| Subqueries in `WHERE`, derived tables (`FROM (SELECT ...)`) | ✅ | |
|
|
28
|
+
| `GROUP BY` | ✅ | Columns, expressions (`id % 5`), and SELECT aliases |
|
|
29
|
+
| `HAVING` | ✅ | Incl. aggregate aliases |
|
|
30
|
+
| `ORDER BY` | ✅ | Multi-key, expressions, non-projected columns, `NULLS FIRST/LAST` |
|
|
31
|
+
| `LIMIT` / `OFFSET` | ✅ | |
|
|
32
|
+
| `DISTINCT` (rows) / `COUNT(DISTINCT col)` | ✅ | |
|
|
33
|
+
| Aggregates: `COUNT` `SUM` `AVG` `MIN` `MAX` `STDDEV` `VARIANCE` | ✅ | |
|
|
34
|
+
| `UNION` / `UNION ALL` | ✅ | |
|
|
35
|
+
| `CASE WHEN ... THEN ... ELSE ... END` | ✅ | |
|
|
36
|
+
| `WITH` / CTEs, incl. `WITH RECURSIVE` | ✅ | Semi-naive fixed-point iteration, `UNION ALL` bodies, chained CTEs |
|
|
37
|
+
| Window functions: `ROW_NUMBER` `RANK` `DENSE_RANK` `NTILE` `LAG` `LEAD` `FIRST_VALUE` `LAST_VALUE` + aggregates | ✅ | `OVER (PARTITION BY … ORDER BY …)` |
|
|
38
|
+
| Explicit window frames (`ROWS` / `RANGE BETWEEN <bound> AND <bound>`) | ✅ 🟢 | ROWS = physical rows; RANGE = peer groups, or value intervals (`RANGE BETWEEN 10 PRECEDING AND 10 FOLLOWING`) on a numeric/timestamp order key. Default frame is the RANGE peer-group frame. Tested in `tests/test_window_frames.rs` |
|
|
39
|
+
| Scalar functions: `UPPER` `LOWER` `LENGTH` `TRIM` `SUBSTR` `REPLACE` `CONCAT` `INSTR` `COALESCE` `ROUND` `ABS` + arithmetic | ✅ | `CONCAT` skips NULL args (SQLite/Postgres semantics); `\|\|` propagates NULL; `ROUND` is binary-exact decimal rounding |
|
|
40
|
+
| `EXPORT TABLE t TO 'x.parquet'` / `IMPORT PARQUET 'x' INTO t` | ✅ 🟢 | Columnar dump / batch load through the insert pipeline; pyarrow / pandas / DuckDB round-trip |
|
|
41
|
+
| `EXPORT LEROBOT <table> TO 'dir/' [FPS n] [TASKS col]` | ✅ 🟢 | Writes a LeRobot v3 dataset on disk that the official `LeRobotDataset` (lerobot ≥ 0.6) loads directly |
|
|
42
|
+
| `DECIMAL` / `DATE` types | ❌ | Planned — see [ROADMAP](./ROADMAP.md) |
|
|
43
|
+
| Cross-statement server-side cursors | ❌ | Planned — see [ROADMAP](./ROADMAP.md) |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 2. Multimodal types
|
|
48
|
+
|
|
49
|
+
| Type | Status | Notes |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `VECTOR(n)` | ✅ 🟢 | Index-accelerated KNN; `ORDER BY emb <-> '[…]'` (L2) or `<~>` (cosine) |
|
|
52
|
+
| `BLOB` | 🟡 | Byte-exact round-trip, **16 MiB cap per value** |
|
|
53
|
+
| `TIMESTAMP` | ✅ 🟢 | Microsecond precision; `TIMESERIES(ts)` adds time-series semantics |
|
|
54
|
+
| `TEXT` | ✅ | Built-in tokenizer (jieba and others configurable) |
|
|
55
|
+
| Spatial coordinates | ✅ 🟢 | R-Tree index; `ST_POINT` / `ST_WITHIN` / `ST_DISTANCE` / `ST_KNN`, and `loc <-> ST_POINT(x, y)` distance ordering |
|
|
56
|
+
| Array types (`TEXT[]` / `ARRAY<FLOAT>`) | ❌ | Use BLOB, a separate table, or TEXT + JOIN |
|
|
57
|
+
|
|
58
|
+
### ⚠️ Known BLOB gaps (unchanged since v0.13)
|
|
59
|
+
|
|
60
|
+
- Scalar functions over BLOB columns (e.g. `LENGTH(payload)`) are **not wired through all executor paths**
|
|
61
|
+
- BLOB output under `ORDER BY` is **not wired through all executor paths**
|
|
62
|
+
- **Verified working:** bare projection, equality (`WHERE payload = X'…'`), time-window scans, parameter binding
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 3. Indexes
|
|
67
|
+
|
|
68
|
+
| Index | Status | Notes |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| Column index | ✅ 🟢 | Equality / range |
|
|
71
|
+
| Vector index | ✅ 🟢 | **DiskANN** (FreshDiskANN + rerank). **Not** HNSW, not IVF |
|
|
72
|
+
| Full-text index | ✅ 🟢 | BM25 ranking + snippet; `MATCH(col) AGAINST('q')`; multi-word defaults to AND (SQLite FTS5-compatible), explicit `a OR b` unions |
|
|
73
|
+
| Spatial index | ✅ 🟢 | R-Tree |
|
|
74
|
+
| Time-series index | ✅ 🟢 | Range scan + compaction + `TIME_BUCKET` aggregation + TTL |
|
|
75
|
+
|
|
76
|
+
> 📌 **Correction notice.** Older material describing the vector index as
|
|
77
|
+
> "HNSW / IVF" is out of date. The current implementation is **DiskANN**.
|
|
78
|
+
> This file and `docs/08-vector-index.md` are authoritative.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 4. Transactions & consistency
|
|
83
|
+
|
|
84
|
+
| Capability | Status | Notes |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| `BEGIN` / `COMMIT` / `ROLLBACK` | ✅ | |
|
|
87
|
+
| Savepoints | ✅ | |
|
|
88
|
+
| Read-your-writes inside a transaction | ✅ | Scans, aggregates, point lookups |
|
|
89
|
+
| MVCC | ✅ | |
|
|
90
|
+
| WAL group commit | ✅ 🟢 | |
|
|
91
|
+
| `LATEST BY` on tables > 1M rows | 🟡 | Performance not yet optimized (large-table merge path) |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 5. Retrieval
|
|
96
|
+
|
|
97
|
+
| Capability | Status | Notes |
|
|
98
|
+
|---|---|---|
|
|
99
|
+
| Vector KNN | ✅ 🟢 | `ORDER BY emb <-> '[…]'`, index-accelerated |
|
|
100
|
+
| Full-text search | ✅ 🟢 | BM25 ranking |
|
|
101
|
+
| **Hybrid search (BM25 × KNN, RRF fusion)** | ✅ 🟢 | One call — you don't implement score calibration yourself |
|
|
102
|
+
| Time-series window aggregation | ✅ 🟢 | `TIME_BUCKET` + TTL |
|
|
103
|
+
| Spatial range / KNN | ✅ 🟢 | `ST_WITHIN` / `ST_DISTANCE` / `ST_KNN` |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 6. Data shapes & deployment
|
|
108
|
+
|
|
109
|
+
| Capability | Status | Notes |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| Collection: high-performance directory | ✅ 🟢 | Atomic publish via temp + fsync + rename, plus WAL group commit |
|
|
112
|
+
| Transport: single-file snapshot | ✅ 🟢 | `EXPORT DB TO '…'`; per-file CRC32, optional zstd, incremental re-export |
|
|
113
|
+
| Deployment: read-only container | ✅ 🟢 | All write paths rejected, multiple concurrent readers |
|
|
114
|
+
| MCAP import | ✅ 🟢 | |
|
|
115
|
+
| Index self-healing | ✅ 🟢 | Rebuilds a corrupt index from source data |
|
|
116
|
+
| Crash recovery | ✅ 🟢 | WAL replay + segment migration + orphan segment adoption |
|
|
117
|
+
| `for_edge()` low-memory profile | ✅ | Tuned for small-memory devices |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 7. Interop & SDKs
|
|
122
|
+
|
|
123
|
+
| Surface | Status | Notes |
|
|
124
|
+
|---|---|---|
|
|
125
|
+
| Rust crate | ✅ | `cargo add motedb` (Rust ≥ 1.87) |
|
|
126
|
+
| Python | ✅ | `pip install motedb-python` — imported as `motedb`. The `motedb` name on PyPI is **not yet claimed**; use `motedb-python` |
|
|
127
|
+
| Arrow | ✅ 🟢 | `query_arrow()` → canonical `pyarrow.Table`, vector columns as `FixedSizeList<float32>` |
|
|
128
|
+
| pandas | ✅ | `query_pandas()` |
|
|
129
|
+
| numpy bulk load | ✅ | `insert_arrays()` |
|
|
130
|
+
| Node.js | 🟡 | npm package **is published** (`motedb@0.15.2`). Prebuilt binaries cover macOS (arm64/x64) and Linux (x64/arm64, glibc); **musl and Windows prebuilds are not published yet**, so `npm install motedb` on Windows currently yields no native binary |
|
|
131
|
+
| Go | 🟡 | Binding lives in `bindings/go` (with `go.mod`), but is **not published as a tagged Go module** yet — the module proxy only resolves a pseudo-version off the default branch |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 8. Engineering quality
|
|
136
|
+
|
|
137
|
+
| Practice | Status | Notes |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| Crash-injection tests | ✅ 🟢 | Resident in CI |
|
|
140
|
+
| Differential fuzzing (SQLite as oracle) | ✅ 🟢 | Permanent regression suite, including JOIN diffing |
|
|
141
|
+
| Corruption-recovery tests | ✅ 🟢 | |
|
|
142
|
+
| Machine-independent performance gate | ✅ 🟢 | A complexity regression turns CI red |
|
|
143
|
+
| `cargo fmt --check` strict gate | ✅ 🟢 | Whole tree is fmt-clean |
|
|
144
|
+
| cargo-deny supply-chain audit | ✅ 🟢 | Vulnerabilities + licenses |
|
|
145
|
+
| clippy | 🟡 advisory | CI runs clippy in advisory mode (`continue-on-error`); a backlog of style lints is being cleared. **New commits must not introduce new warnings** |
|
|
146
|
+
| Prebuilt binaries | 🟡 | macOS (arm64/x64) and Linux (x64/arm64) prebuilt. Windows works through `cargo add motedb` (source build); a Windows prebuild is on the way |
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 9. Explicitly not supported
|
|
151
|
+
|
|
152
|
+
> Written down so you don't have to discover it the hard way.
|
|
153
|
+
|
|
154
|
+
| Capability | Why |
|
|
155
|
+
|---|---|
|
|
156
|
+
| **Built-in inference engine / ONNX** | MoteDB is a storage and query layer, not an inference runtime. We invest in **Arrow interop** and leave inference in your own stack |
|
|
157
|
+
| **Distributed / multi-node replication** | The current target is single-machine edge |
|
|
158
|
+
| **Server mode / multi-process concurrent writes** | Contradicts the "embedded, zero-ops" positioning |
|
|
159
|
+
| **Multi-user permission system** | In embedded deployments the host application owns that |
|
|
160
|
+
| **Array types** | Use BLOB, a separate table, or TEXT + JOIN |
|
|
161
|
+
| **`DECIMAL` / `DATE` types** | Planned |
|
|
162
|
+
| **Cross-statement server-side cursors** | Planned |
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 10. Performance methodology
|
|
167
|
+
|
|
168
|
+
Full benchmark data: [`BENCHMARK.md`](./BENCHMARK.md),
|
|
169
|
+
[`PERFORMANCE_REPORT.md`](./PERFORMANCE_REPORT.md), and
|
|
170
|
+
[`docs/benchmark_methodology.md`](./docs/benchmark_methodology.md).
|
|
171
|
+
|
|
172
|
+
> ⚠️ **Citation rule.** Every performance number published anywhere must carry
|
|
173
|
+
> its **machine configuration, data scale, comparison baseline, and measurement
|
|
174
|
+
> method**. Numbers without that context should not be released.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
*Found something here that does not match real behaviour? Open an issue.*
|
|
@@ -1,5 +1,123 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.16.0] — 2026-10-30
|
|
4
|
+
|
|
5
|
+
> 28 轮系统性猎虫与验证后的正确性版本。**42 个缺陷修复**(含 1 个数据
|
|
6
|
+
> 损坏级、多个"静默错误结果"类),SQL 兼容性大幅提升(隐式别名、复合
|
|
7
|
+
> 主键验证、中文全文检索、时间戳算术),四层 API(Rust/Node/Go/Python)
|
|
8
|
+
> 与 MCP 全部在当前引擎上端到端验证。全面性能 A/B 对照确认无回归
|
|
9
|
+
> (ORDER BY 快 ~28%,查询内存省 18%,其余持平)。
|
|
10
|
+
|
|
11
|
+
### 静默错误结果类(最关键)
|
|
12
|
+
|
|
13
|
+
- **🔴🔴 数据损坏**: 向量列在 UPDATE+DELETE+段合并后读成 65535 维全零
|
|
14
|
+
向量 — 列段合并的墓碑/ALTER 占位写裸 [0xFFFF],逐行 [dim:u16] 编码里
|
|
15
|
+
是合法非空维度且无载荷 → 顺序走读者错位、同列后续全雪崩。占位改
|
|
16
|
+
[0x0000] (dim 0 = NULL)。回归: KNN 与暴力扫描全阶段逐 id 一致
|
|
17
|
+
- WHERE 未知列被静默吞掉 — 单表 SELECT/UPDATE/DELETE 拼错列名返回
|
|
18
|
+
0 行/affected_rows: 0 无提示;语句入口 schema 绑定校验立即报
|
|
19
|
+
ColumnNotFound
|
|
20
|
+
- SHOW TABLES / DESCRIBE 流式分发丢弃结果行(db.query 返回 []、
|
|
21
|
+
MCP list_tables 空)——行数据流经完整路径
|
|
22
|
+
- 日期函数对 DATE 列返回 NULL(YEAR/MONTH/DAY_OF_MONTH/DATEDIFF)
|
|
23
|
+
- CAST(x AS TEXT) 泄漏 Rust Debug 串(`Date { days: 19753 }`)——
|
|
24
|
+
现按 SQL 文本形态渲染(新增 Timestamp::to_iso)
|
|
25
|
+
- ISO 时间戳小数秒被丢弃('…12:00:00.5' 的 .5 消失,schema-order
|
|
26
|
+
INSERT 路径)——解析到 µs,双实现去重
|
|
27
|
+
- 中文 MATCH 恒不命中 — FTS 索引与逐行 MATCH 都硬编码空白分词器;
|
|
28
|
+
新增 AutoTokenizer(CJK→Jieba,其余→空白)两路径统一
|
|
29
|
+
- TIMESTAMP ± INTEGER(µs) 算术 TypeError 被吞 → WHERE 静默空
|
|
30
|
+
- TIMESTAMP 列 BETWEEN 文本字面量恒空(vector_exec 预解析缺口,
|
|
31
|
+
`>= AND <=` 却正常)——同一 col_lit 预解析
|
|
32
|
+
- GROUP BY 表达式 + ORDER BY 同表达式乱序(快路径丢键 + full_row
|
|
33
|
+
zip 错位配对)——表达式键读分组投影值,不可解析则明确报错
|
|
34
|
+
- NULLS FIRST/LAST 被四条排序路径中的三条静默忽略——全路径统一
|
|
35
|
+
- 0x 十六进制字面量静默返回 0(词法器缺十六进制 + 隐式别名吞噬)
|
|
36
|
+
- MCP describe 工具返回 DESCRIBE 表头而非 schema(行被丢弃)
|
|
37
|
+
|
|
38
|
+
### SQL 兼容性
|
|
39
|
+
|
|
40
|
+
- **SELECT 列表隐式别名**(`SELECT v x`、`SELECT COUNT(*) c`)——此前
|
|
41
|
+
全部死于误导性解析错误;别名可在 ORDER BY/GROUP BY/HAVING 引用
|
|
42
|
+
- 验证钉住: 复合 PRIMARY KEY(重复拒绝/双键点查/复合 upsert/重开强制)、
|
|
43
|
+
列 DEFAULT 值、NOT NULL 双路径强制、LIMIT ?/OFFSET ? 绑定参数
|
|
44
|
+
|
|
45
|
+
### 语义钉住(文档化,防止引擎间歧义)
|
|
46
|
+
|
|
47
|
+
- 除零: 整型/浮点除数一律 DivisionByZero(PostgreSQL 语义)
|
|
48
|
+
- LIKE 与 = 一致大小写敏感;表名大小写敏感/列名不敏感
|
|
49
|
+
- CONCAT 忽略 NULL(PG 风格),|| 按标准传播 NULL;DATEDIFF = a−b 秒
|
|
50
|
+
- 同进程二次 open() 附着同一引擎(共享句柄注册表,docs/14);跨进程
|
|
51
|
+
flock 互斥
|
|
52
|
+
- DDL 非事务(CREATE 留存+行回滚,事务内 DROP 被拒)
|
|
53
|
+
- 圆整 ROUND(x,-n) half-away;DATE 函数表(docs/13);已知限制:
|
|
54
|
+
WHERE 中除零静默 0 行(v0.16+ 候选修复)
|
|
55
|
+
|
|
56
|
+
### 质量与验证
|
|
57
|
+
|
|
58
|
+
- clippy 双 feature 集零警告(默认集 + node 最小集——后者此前从未
|
|
59
|
+
被门禁覆盖)
|
|
60
|
+
- 绑定层全面验证: Node smoke 双绿、Go 6/6 首跑、Python 13/13、
|
|
61
|
+
MCP stdio e2e 6/6(round-20/22 修复的端到端确认)
|
|
62
|
+
- 性能 A/B(round-19 基线 vs 0.16.0,同机背靠背): 无回归;ORDER BY
|
|
63
|
+
快 ~28%,查询后 RSS 省 18%,其余持平
|
|
64
|
+
- 新增回归: test_bug_hunt_v110~v116(57 项)、MCP e2e
|
|
65
|
+
|
|
66
|
+
### 此前积累(0.15.2 后、猎虫前)
|
|
67
|
+
|
|
68
|
+
- 向量索引旋钮 SQL 化: CREATE VECTOR INDEX ... WITH (metric=, max_degree=,
|
|
69
|
+
build_search_list=, search_list=);构建期精确 f32 快照
|
|
70
|
+
- ORDER BY emb <-> '带引号向量' 三拼写回归;CREATE INDEX WITH 子句
|
|
71
|
+
死代码复活
|
|
72
|
+
|
|
73
|
+
## [0.15.2] — 2026-10-22
|
|
74
|
+
|
|
75
|
+
### 功能测试轮修复 (2026-10-22 外部功能测试 24/27 → 全绿)
|
|
76
|
+
|
|
77
|
+
- **🔴 P0 Node 浮点参数静默截断**: `arr.get::<i64>` 对 JS double 不报错而是
|
|
78
|
+
向零截断(9.9→9, 1e-7→0, 123.456→123), f64 分支不可达 — 任何 `?` 传入的
|
|
79
|
+
非整数 number 全部损坏(FLOAT/DOUBLE 列通杀)。BigInt 更写 9 读 null。
|
|
80
|
+
修复 = f64 先探(napi 严格语义对非 number 干净失败)按 fract() 分流
|
|
81
|
+
Integer/Float(≤2^53), BigInt 走 get_i64 无损转换(超范围显式报错)。
|
|
82
|
+
smoke_ci.js 回归: 9.9/-2.75/1e-7/2.0/123n 逐值断言
|
|
83
|
+
- **快照往还(ENOENT / already exists)**: resolve_open_path 的目录判定标记
|
|
84
|
+
还是旧布局(lsm/||wal/) — P1 惰性布局的解包快照(首写前无 wal/)判定不中,
|
|
85
|
+
落到"兄弟 .mote"规则打开不存在的路径。Python 的 import_snapshot 同中
|
|
86
|
+
(观感即"Python 没有快照 API")。修复 = 标记集扩为 meta.bin/columnar_ms/
|
|
87
|
+
lsm/wal; unpack 接受已存在的**空** dest 目录(mkdir-then-import 自然用法),
|
|
88
|
+
非空仍拒。Node openSnapshot/Python import_snapshot/Rust open_snapshot 三路
|
|
89
|
+
往返回归全绿; Python 加 export_snapshot 别名(与 Node/Rust 命名对齐,
|
|
90
|
+
原生名 export_to 保留)
|
|
91
|
+
- **SHOW INDEXES [FROM t]**: 引擎语法新增(parser 原只认 SHOW TABLES), 数据
|
|
92
|
+
源为权威的 index_registry(TableSchema::indexes 不维护); 输出
|
|
93
|
+
Table/Index/Column/Type 四列
|
|
94
|
+
|
|
95
|
+
### 训练生态互操作 (Phase 1 §5/§6, docs/design/2026-10-industry-parity-plan.md)
|
|
96
|
+
|
|
97
|
+
- **🔑 Parquet 双向**: `EXPORT TABLE t TO 'x.parquet'` / `IMPORT PARQUET 'x'
|
|
98
|
+
INTO t` — 全类型往返(INT/FLOAT/BOOL/TEXT/TIMESTAMP/VECTOR→FixedSizeList<
|
|
99
|
+
f32>/BLOB→Binary), NULL 保留, 按列名映射(乱序/子集/缺列补 NULL), 有损方向
|
|
100
|
+
报错; arrow-array/schema/parquet 59.3.1(MSRV 1.85), feature `parquet`
|
|
101
|
+
默认开(default-edge 可关)。pyarrow 双向互认实测。Python: `export_parquet` /
|
|
102
|
+
`import_parquet`
|
|
103
|
+
- **🔑 EXPORT LEROBOT**: EPISODE 表 → LeRobot v3 数据集目录(官方 writer 逐文件
|
|
104
|
+
定标), 官方 `LeRobotDataset` 加载互认实测 — MCAP→SQL→训练管线打通。Python:
|
|
105
|
+
`export_lerobot(table, dir, fps, tasks=)`
|
|
106
|
+
- **修复(数据丢失级)**: 含 NULL 向量的表, 无 WHERE 全表扫描整列静默变 NULL,
|
|
107
|
+
且 compaction 将丢失永久写回 — read_vectors/read_spatial 的 7 处只前进线性
|
|
108
|
+
归并改为 `scatter_by_row_id` 精确散射; 回归测试 ×2
|
|
109
|
+
- **PyTorch DataLoader**: `from motedb.torch import MoteDataset` — 列式一次
|
|
110
|
+
载入 + 逐行零拷贝视图, fork-safe; docs/19 + examples/torch_dataloader.py
|
|
111
|
+
- **🔑 MCP server (§8)**: `python -m motedb.mcp <db>` — stdio JSON-RPC,
|
|
112
|
+
6 个 tools(list_tables/describe/query/vector_search/episodes/doctor);
|
|
113
|
+
引擎级只读门(Database(read_only=True), 写被引擎拒绝而非字符串嗅探),
|
|
114
|
+
多读者共存。docs/20-mcp.md; pyo3 构造器新增 read_only kwarg
|
|
115
|
+
- **🔑 多引擎公开基准 (§7)**: `make bench-industry` — MoteDB vs FAISS/
|
|
116
|
+
LanceDB/sqlite-vec/DuckDB-VSS/usearch, 同语料同暴力 ground truth,
|
|
117
|
+
N/DIM 规模参数化, 方法学随数据发布(含不利行)。220K×384 实测: MoteDB
|
|
118
|
+
DiskANN recall@10 1.0000 / p50 0.57ms。docs/benchmark_report_2026-10-21.md
|
|
119
|
+
- CI: 测试步骤失败时直接发逐行注解(替代从未生效的独立诊断步骤)
|
|
120
|
+
|
|
3
121
|
## [0.15.1] — 2026-10-20
|
|
4
122
|
|
|
5
123
|
发布渠道与安装体验 patch(docs/design/2026-10-industry-parity-plan.md Phase 0)。
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and maintainers pledge to make participation in
|
|
6
|
+
this project a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity and
|
|
10
|
+
orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Our standards
|
|
18
|
+
|
|
19
|
+
### Behaviour that contributes to a positive environment
|
|
20
|
+
|
|
21
|
+
- Demonstrating empathy and kindness toward other people
|
|
22
|
+
- Being respectful of differing opinions, viewpoints, and experiences
|
|
23
|
+
- Giving and gracefully accepting constructive feedback
|
|
24
|
+
- Accepting responsibility, apologising to those affected by our mistakes, and
|
|
25
|
+
learning from the experience
|
|
26
|
+
- Focusing on what is best for the overall community
|
|
27
|
+
|
|
28
|
+
### Behaviour that is unacceptable
|
|
29
|
+
|
|
30
|
+
- The use of sexualised language or imagery, and sexual attention or advances
|
|
31
|
+
of any kind
|
|
32
|
+
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
33
|
+
- Public or private harassment
|
|
34
|
+
- Publishing others' private information, such as a physical or email address,
|
|
35
|
+
without their explicit permission
|
|
36
|
+
- Other conduct which could reasonably be considered inappropriate in a
|
|
37
|
+
professional setting
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Scope
|
|
42
|
+
|
|
43
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
|
44
|
+
an individual is officially representing the community in public spaces.
|
|
45
|
+
Community spaces currently include:
|
|
46
|
+
|
|
47
|
+
- The project's GitHub repository — issues, pull requests, discussions, commits,
|
|
48
|
+
and code review
|
|
49
|
+
- The project's website and any space created in the project's name
|
|
50
|
+
- Public events where the project is represented
|
|
51
|
+
|
|
52
|
+
Any space the project opens later — a mailing list, a newsletter, or a chat
|
|
53
|
+
channel — is covered by this Code of Conduct from the day it opens.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Enforcement
|
|
58
|
+
|
|
59
|
+
Instances of abusive, harassing, or otherwise unacceptable behaviour may be
|
|
60
|
+
reported to the maintainers through any of these channels:
|
|
61
|
+
|
|
62
|
+
- **GitHub issue or discussion**, mentioning `@meluo`
|
|
63
|
+
- **GitHub private message** to [@meluo](https://github.com/meluo)
|
|
64
|
+
- **Email** to <motedb@126.com> with the subject `[motedb conduct]`
|
|
65
|
+
|
|
66
|
+
All complaints will be reviewed and investigated promptly and fairly. The
|
|
67
|
+
project maintainer is obligated to respect the privacy and security of the
|
|
68
|
+
reporter of any incident.
|
|
69
|
+
|
|
70
|
+
**Our commitments:**
|
|
71
|
+
|
|
72
|
+
- Reports are handled confidentially
|
|
73
|
+
- The identity of the reporter is not disclosed publicly
|
|
74
|
+
- The maintainer responds to reports within 48 hours
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Enforcement guidelines
|
|
79
|
+
|
|
80
|
+
The project maintainers are responsible for clarifying and enforcing these
|
|
81
|
+
standards, and will take appropriate and fair corrective action in response to
|
|
82
|
+
any behaviour they deem inappropriate, threatening, offensive, or harmful.
|
|
83
|
+
Enforcement actions may include:
|
|
84
|
+
|
|
85
|
+
1. **Correction** — a private, written warning from the maintainers, providing
|
|
86
|
+
clarity around the nature of the violation and an explanation of why the
|
|
87
|
+
behaviour was inappropriate
|
|
88
|
+
2. **Warning** — a warning with consequences for continued behaviour, including
|
|
89
|
+
a period of no interaction with the people involved
|
|
90
|
+
3. **Temporary ban** — a temporary ban from any sort of interaction or public
|
|
91
|
+
communication with the community
|
|
92
|
+
4. **Permanent ban** — a permanent ban from any sort of public interaction
|
|
93
|
+
within the community
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Attribution
|
|
98
|
+
|
|
99
|
+
This Code of Conduct is adapted from the
|
|
100
|
+
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1, and
|
|
101
|
+
also draws on the
|
|
102
|
+
[Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct).
|
|
103
|
+
|
|
104
|
+
Questions or suggestions about this Code of Conduct belong in a discussion or
|
|
105
|
+
an issue on this repository.
|