motedb-python 0.12.6__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.12.6/.cargo/config.toml +8 -0
- motedb_python-0.12.6/.devcontainer/devcontainer.json +31 -0
- motedb_python-0.12.6/.github/workflows/ci.yml +293 -0
- motedb_python-0.12.6/.github/workflows/fuzz.yml +47 -0
- motedb_python-0.12.6/.github/workflows/perf-gate.yml +34 -0
- motedb_python-0.12.6/.github/workflows/publish.yml +95 -0
- motedb_python-0.12.6/.github/workflows/python-wheels.yml +204 -0
- motedb_python-0.12.6/.gitignore +35 -0
- motedb_python-0.12.6/.zcode/plans/plan-sess_abb2c954-05fb-477e-9d0a-3e22261e2449.md +44 -0
- motedb_python-0.12.6/.zcode/plans/plan-sess_b5937a06-b7bf-4471-9756-dbf2787b263c.md +32 -0
- motedb_python-0.12.6/CHANGELOG.md +1955 -0
- motedb_python-0.12.6/Cargo.lock +1567 -0
- motedb_python-0.12.6/Cargo.toml +177 -0
- motedb_python-0.12.6/LICENSE +21 -0
- motedb_python-0.12.6/Makefile +34 -0
- motedb_python-0.12.6/PKG-INFO +109 -0
- motedb_python-0.12.6/README.md +283 -0
- motedb_python-0.12.6/RELEASE_NOTES.md +20 -0
- motedb_python-0.12.6/bindings/python/Cargo.lock +1003 -0
- motedb_python-0.12.6/bindings/python/Cargo.toml +28 -0
- motedb_python-0.12.6/bindings/python/README.md +75 -0
- motedb_python-0.12.6/bindings/python/bench/README.md +1764 -0
- motedb_python-0.12.6/bindings/python/bench/adversarial_verify.py +428 -0
- motedb_python-0.12.6/bindings/python/bench/bench_edge.py +186 -0
- motedb_python-0.12.6/bindings/python/bench/compete_bench.py +314 -0
- motedb_python-0.12.6/bindings/python/bench/compete_fts_industry.py +141 -0
- motedb_python-0.12.6/bindings/python/bench/compete_scale.py +171 -0
- motedb_python-0.12.6/bindings/python/bench/compete_spatial_ts.py +247 -0
- motedb_python-0.12.6/bindings/python/bench/compete_vec_industry.py +171 -0
- motedb_python-0.12.6/bindings/python/bench/compete_writes.py +601 -0
- motedb_python-0.12.6/bindings/python/bench/fts_probe_once.py +46 -0
- motedb_python-0.12.6/bindings/python/bench/perf_ab.py +69 -0
- motedb_python-0.12.6/bindings/python/bench/perf_overall.py +453 -0
- motedb_python-0.12.6/bindings/python/bench/prof_ann.py +159 -0
- motedb_python-0.12.6/bindings/python/bench/prof_fts.py +190 -0
- motedb_python-0.12.6/bindings/python/bench/prof_insert.py +81 -0
- motedb_python-0.12.6/bindings/python/bench/prof_point.py +113 -0
- motedb_python-0.12.6/bindings/python/bench/prof_real.py +62 -0
- motedb_python-0.12.6/bindings/python/bench/prof_scale.py +169 -0
- motedb_python-0.12.6/bindings/python/bench/prof_scale_vec.py +117 -0
- motedb_python-0.12.6/bindings/python/bench/prof_vec_parallel.py +79 -0
- motedb_python-0.12.6/bindings/python/bench/resource_bench.py +333 -0
- motedb_python-0.12.6/bindings/python/bench/resource_bench_2026-09_profile.json +1 -0
- motedb_python-0.12.6/bindings/python/bench/resource_bench_v0.10.0.json +66 -0
- motedb_python-0.12.6/bindings/python/bench/spatial_eval.py +401 -0
- motedb_python-0.12.6/bindings/python/bench/text_eval.py +391 -0
- motedb_python-0.12.6/bindings/python/bench/ts_eval.py +247 -0
- motedb_python-0.12.6/bindings/python/bench/vector_recall_eval.py +383 -0
- motedb_python-0.12.6/bindings/python/build.rs +11 -0
- motedb_python-0.12.6/bindings/python/e2e/e2e_workload.py +607 -0
- motedb_python-0.12.6/bindings/python/e2e/test_durability_kwarg.py +44 -0
- motedb_python-0.12.6/bindings/python/licenses/LICENSE +21 -0
- motedb_python-0.12.6/bindings/python/scripts/build_wheel.sh +73 -0
- motedb_python-0.12.6/bindings/python/src/lib.rs +995 -0
- motedb_python-0.12.6/bindings/python/tests/test_backup.py +71 -0
- motedb_python-0.12.6/bindings/python/tests/test_e2e_cli.py +95 -0
- motedb_python-0.12.6/bindings/python/tests/test_e2e_functional.py +301 -0
- motedb_python-0.12.6/bindings/python/tests/test_feature_selfcheck.py +207 -0
- motedb_python-0.12.6/bindings/python/tests/test_fetch_arrays.py +121 -0
- motedb_python-0.12.6/bindings/python/tests/test_fuzz_bigtable.py +289 -0
- motedb_python-0.12.6/bindings/python/tests/test_fuzz_differential.py +347 -0
- motedb_python-0.12.6/bindings/python/tests/test_insert_arrays.py +123 -0
- motedb_python-0.12.6/bindings/python/tests/test_parallel_ab.py +128 -0
- motedb_python-0.12.6/bindings/python/tests/test_smoke.py +67 -0
- motedb_python-0.12.6/deny.toml +83 -0
- motedb_python-0.12.6/docs/01-quick-start.md +274 -0
- motedb_python-0.12.6/docs/02-installation.md +351 -0
- motedb_python-0.12.6/docs/03-sql-operations.md +570 -0
- motedb_python-0.12.6/docs/04-batch-operations.md +408 -0
- motedb_python-0.12.6/docs/05-transactions.md +103 -0
- motedb_python-0.12.6/docs/06-indexes-overview.md +375 -0
- motedb_python-0.12.6/docs/07-column-index.md +91 -0
- motedb_python-0.12.6/docs/08-vector-index.md +114 -0
- motedb_python-0.12.6/docs/09-text-index.md +100 -0
- motedb_python-0.12.6/docs/10-spatial-index.md +93 -0
- motedb_python-0.12.6/docs/11-timestamp-index.md +94 -0
- motedb_python-0.12.6/docs/12-performance.md +107 -0
- motedb_python-0.12.6/docs/13-data-types.md +116 -0
- motedb_python-0.12.6/docs/14-api-reference.md +759 -0
- motedb_python-0.12.6/docs/15-best-practices.md +70 -0
- motedb_python-0.12.6/docs/16-faq.md +56 -0
- motedb_python-0.12.6/docs/17-hybrid-arrow.md +50 -0
- motedb_python-0.12.6/docs/README.md +124 -0
- motedb_python-0.12.6/docs/benchmark_methodology.md +112 -0
- motedb_python-0.12.6/docs/paper/README.md +31 -0
- motedb_python-0.12.6/docs/paper/motedb.tex +382 -0
- motedb_python-0.12.6/examples/bench_300k.rs +177 -0
- motedb_python-0.12.6/examples/bench_autocommit_lock.rs +70 -0
- motedb_python-0.12.6/examples/bench_disk.rs +174 -0
- motedb_python-0.12.6/examples/bench_exec_only.rs +43 -0
- motedb_python-0.12.6/examples/bench_insert_engine.rs +116 -0
- motedb_python-0.12.6/examples/bench_layer.rs +67 -0
- motedb_python-0.12.6/examples/bench_memory.rs +269 -0
- motedb_python-0.12.6/examples/bench_multimodal_vs_competitors.rs +639 -0
- motedb_python-0.12.6/examples/bench_point_read.rs +63 -0
- motedb_python-0.12.6/examples/bench_profile_hot.rs +80 -0
- motedb_python-0.12.6/examples/bench_scaling.rs +207 -0
- motedb_python-0.12.6/examples/bench_stability.rs +133 -0
- motedb_python-0.12.6/examples/bench_vs_sqlite.rs +528 -0
- motedb_python-0.12.6/examples/corruption_fuzz.rs +177 -0
- motedb_python-0.12.6/examples/crud.rs +74 -0
- motedb_python-0.12.6/examples/differential_fuzz.rs +537 -0
- motedb_python-0.12.6/examples/hello_world.rs +42 -0
- motedb_python-0.12.6/examples/join_differential_fuzz.rs +336 -0
- motedb_python-0.12.6/examples/logging.rs +45 -0
- motedb_python-0.12.6/examples/perf_smoke.rs +101 -0
- motedb_python-0.12.6/examples/probe_filter_decomp.rs +76 -0
- motedb_python-0.12.6/examples/probe_jemalloc.rs +110 -0
- motedb_python-0.12.6/examples/probe_memory_source.rs +128 -0
- motedb_python-0.12.6/examples/probe_tail_latency.rs +161 -0
- motedb_python-0.12.6/examples/text_rank_probe.rs +91 -0
- motedb_python-0.12.6/examples/vector_recall_real.rs +182 -0
- motedb_python-0.12.6/licenses/LICENSE +21 -0
- motedb_python-0.12.6/pyproject.toml +62 -0
- motedb_python-0.12.6/python/motedb/__init__.py +76 -0
- motedb_python-0.12.6/scripts/Dockerfile.e2e +36 -0
- motedb_python-0.12.6/scripts/compete.sh +130 -0
- motedb_python-0.12.6/scripts/docker_e2e.sh +81 -0
- motedb_python-0.12.6/scripts/repro_point_query_gap.sh +44 -0
- motedb_python-0.12.6/src/api.rs +4087 -0
- motedb_python-0.12.6/src/bin/motedb-cli.rs +436 -0
- motedb_python-0.12.6/src/cache/mod.rs +5 -0
- motedb_python-0.12.6/src/cache/row_cache.rs +455 -0
- motedb_python-0.12.6/src/catalog/mod.rs +4 -0
- motedb_python-0.12.6/src/catalog/registry.rs +656 -0
- motedb_python-0.12.6/src/config.rs +824 -0
- motedb_python-0.12.6/src/database/core.rs +3057 -0
- motedb_python-0.12.6/src/database/crud.rs +4807 -0
- motedb_python-0.12.6/src/database/doctor.rs +338 -0
- motedb_python-0.12.6/src/database/helpers.rs +306 -0
- motedb_python-0.12.6/src/database/index_metadata.rs +347 -0
- motedb_python-0.12.6/src/database/indexes/column.rs +663 -0
- motedb_python-0.12.6/src/database/indexes/dashmap_migration.md +72 -0
- motedb_python-0.12.6/src/database/indexes/ioctree.rs +226 -0
- motedb_python-0.12.6/src/database/indexes/mod.rs +18 -0
- motedb_python-0.12.6/src/database/indexes/text.rs +361 -0
- motedb_python-0.12.6/src/database/indexes/timestamp.rs +328 -0
- motedb_python-0.12.6/src/database/indexes/vector.rs +473 -0
- motedb_python-0.12.6/src/database/mem_buffer.rs +629 -0
- motedb_python-0.12.6/src/database/mod.rs +46 -0
- motedb_python-0.12.6/src/database/persistence.rs +712 -0
- motedb_python-0.12.6/src/database/pk_cache.rs +194 -0
- motedb_python-0.12.6/src/database/table.rs +323 -0
- motedb_python-0.12.6/src/database/timeseries.rs +23 -0
- motedb_python-0.12.6/src/database/transaction.rs +546 -0
- motedb_python-0.12.6/src/distance/cosine.rs +767 -0
- motedb_python-0.12.6/src/distance/euclidean.rs +468 -0
- motedb_python-0.12.6/src/distance/mod.rs +103 -0
- motedb_python-0.12.6/src/error.rs +94 -0
- motedb_python-0.12.6/src/ffi.rs +110 -0
- motedb_python-0.12.6/src/index/btree.rs +1800 -0
- motedb_python-0.12.6/src/index/btree_generic.rs +2908 -0
- motedb_python-0.12.6/src/index/builder.rs +60 -0
- motedb_python-0.12.6/src/index/cached_index.rs +339 -0
- motedb_python-0.12.6/src/index/column_value.rs +1826 -0
- motedb_python-0.12.6/src/index/fresh_graph.rs +725 -0
- motedb_python-0.12.6/src/index/ioctree/leaf_store.rs +434 -0
- motedb_python-0.12.6/src/index/ioctree/mod.rs +491 -0
- motedb_python-0.12.6/src/index/ioctree/node.rs +188 -0
- motedb_python-0.12.6/src/index/ioctree/persistence.rs +465 -0
- motedb_python-0.12.6/src/index/ioctree/search.rs +252 -0
- motedb_python-0.12.6/src/index/mod.rs +29 -0
- motedb_python-0.12.6/src/index/primary_key.rs +264 -0
- motedb_python-0.12.6/src/index/text_dictionary.rs +466 -0
- motedb_python-0.12.6/src/index/text_encoding.rs +478 -0
- motedb_python-0.12.6/src/index/text_fts.rs +2727 -0
- motedb_python-0.12.6/src/index/text_query.rs +140 -0
- motedb_python-0.12.6/src/index/text_types.rs +1741 -0
- motedb_python-0.12.6/src/index/tokenizers.rs +370 -0
- motedb_python-0.12.6/src/index/vamana/config.rs +118 -0
- motedb_python-0.12.6/src/index/vamana/disk_graph.rs +1162 -0
- motedb_python-0.12.6/src/index/vamana/diskann_index.rs +2068 -0
- motedb_python-0.12.6/src/index/vamana/mod.rs +14 -0
- motedb_python-0.12.6/src/index/vamana/pruner.rs +197 -0
- motedb_python-0.12.6/src/index/vamana/sq8.rs +880 -0
- motedb_python-0.12.6/src/index/vamana/sq8_vectors.rs +868 -0
- motedb_python-0.12.6/src/lib.rs +225 -0
- motedb_python-0.12.6/src/platform_io.rs +64 -0
- motedb_python-0.12.6/src/sql/ast.rs +618 -0
- motedb_python-0.12.6/src/sql/evaluator.rs +3398 -0
- motedb_python-0.12.6/src/sql/executor/agg.rs +2661 -0
- motedb_python-0.12.6/src/sql/executor/join.rs +2957 -0
- motedb_python-0.12.6/src/sql/executor/mod.rs +25401 -0
- motedb_python-0.12.6/src/sql/executor/scan.rs +2731 -0
- motedb_python-0.12.6/src/sql/join/hash_join.rs +307 -0
- motedb_python-0.12.6/src/sql/join/index_join.rs +168 -0
- motedb_python-0.12.6/src/sql/join/mod.rs +6 -0
- motedb_python-0.12.6/src/sql/lexer.rs +640 -0
- motedb_python-0.12.6/src/sql/mod.rs +32 -0
- motedb_python-0.12.6/src/sql/optimizer.rs +1463 -0
- motedb_python-0.12.6/src/sql/parser.rs +3147 -0
- motedb_python-0.12.6/src/sql/row_converter.rs +361 -0
- motedb_python-0.12.6/src/sql/token.rs +268 -0
- motedb_python-0.12.6/src/sql/vector_exec.rs +3153 -0
- motedb_python-0.12.6/src/storage/checksum.rs +380 -0
- motedb_python-0.12.6/src/storage/col_segment/manifest.rs +216 -0
- motedb_python-0.12.6/src/storage/col_segment/merge.rs +274 -0
- motedb_python-0.12.6/src/storage/col_segment/mod.rs +23 -0
- motedb_python-0.12.6/src/storage/col_segment/segment.rs +972 -0
- motedb_python-0.12.6/src/storage/col_segment/store.rs +5393 -0
- motedb_python-0.12.6/src/storage/colbatch.rs +644 -0
- motedb_python-0.12.6/src/storage/columnar/column_encoding.rs +338 -0
- motedb_python-0.12.6/src/storage/columnar/config.rs +105 -0
- motedb_python-0.12.6/src/storage/columnar/gorilla.rs +826 -0
- motedb_python-0.12.6/src/storage/columnar/mod.rs +31 -0
- motedb_python-0.12.6/src/storage/columnar/segment.rs +1217 -0
- motedb_python-0.12.6/src/storage/columnar/segment_manager.rs +638 -0
- motedb_python-0.12.6/src/storage/columnar/store.rs +2720 -0
- motedb_python-0.12.6/src/storage/columnar/write_buffer.rs +718 -0
- motedb_python-0.12.6/src/storage/file_manager.rs +297 -0
- motedb_python-0.12.6/src/storage/lsm/blobstore.rs +584 -0
- motedb_python-0.12.6/src/storage/lsm/bloom.rs +314 -0
- motedb_python-0.12.6/src/storage/lsm/columnar.rs +4048 -0
- motedb_python-0.12.6/src/storage/lsm/compaction.rs +1316 -0
- motedb_python-0.12.6/src/storage/lsm/engine.rs +2494 -0
- motedb_python-0.12.6/src/storage/lsm/memtable.rs +345 -0
- motedb_python-0.12.6/src/storage/lsm/merging_iterator.rs +410 -0
- motedb_python-0.12.6/src/storage/lsm/mod.rs +432 -0
- motedb_python-0.12.6/src/storage/lsm/sstable.rs +2328 -0
- motedb_python-0.12.6/src/storage/lsm/unified_memtable.rs +805 -0
- motedb_python-0.12.6/src/storage/manifest/manifest.rs +353 -0
- motedb_python-0.12.6/src/storage/manifest/mod.rs +13 -0
- motedb_python-0.12.6/src/storage/manifest/version.rs +150 -0
- motedb_python-0.12.6/src/storage/mod.rs +19 -0
- motedb_python-0.12.6/src/storage/row_format.rs +2575 -0
- motedb_python-0.12.6/src/txn/coordinator.rs +1022 -0
- motedb_python-0.12.6/src/txn/lock_manager.rs +398 -0
- motedb_python-0.12.6/src/txn/mod.rs +14 -0
- motedb_python-0.12.6/src/txn/mvcc.rs +8 -0
- motedb_python-0.12.6/src/txn/recovery.rs +5 -0
- motedb_python-0.12.6/src/txn/version_store.rs +1024 -0
- motedb_python-0.12.6/src/txn/wal.rs +2894 -0
- motedb_python-0.12.6/src/types/comp_sum.rs +44 -0
- motedb_python-0.12.6/src/types/mod.rs +383 -0
- motedb_python-0.12.6/src/types/spatial.rs +307 -0
- motedb_python-0.12.6/src/types/table.rs +567 -0
- motedb_python-0.12.6/src/types/tensor.rs +114 -0
- motedb_python-0.12.6/src/types/text.rs +103 -0
- motedb_python-0.12.6/src/types/timestamp.rs +181 -0
- motedb_python-0.12.6/tests/acid_test.rs +770 -0
- motedb_python-0.12.6/tests/bench_2m.rs +276 -0
- motedb_python-0.12.6/tests/bench_acid.rs +718 -0
- motedb_python-0.12.6/tests/bench_batch_ops.rs +677 -0
- motedb_python-0.12.6/tests/bench_compare.rs +1167 -0
- motedb_python-0.12.6/tests/bench_comprehensive.rs +984 -0
- motedb_python-0.12.6/tests/bench_concurrent.rs +729 -0
- motedb_python-0.12.6/tests/bench_index_ops.rs +632 -0
- motedb_python-0.12.6/tests/bench_multimodal.rs +559 -0
- motedb_python-0.12.6/tests/bench_multimodal_full.rs +618 -0
- motedb_python-0.12.6/tests/bench_multimodal_ops.rs +482 -0
- motedb_python-0.12.6/tests/bench_perf_report.rs +131 -0
- motedb_python-0.12.6/tests/bench_quick_baseline.rs +163 -0
- motedb_python-0.12.6/tests/bench_release.rs +395 -0
- motedb_python-0.12.6/tests/bench_report.rs +649 -0
- motedb_python-0.12.6/tests/bench_resource.rs +678 -0
- motedb_python-0.12.6/tests/bench_sql_queries.rs +780 -0
- motedb_python-0.12.6/tests/bench_timeseries_index.rs +299 -0
- motedb_python-0.12.6/tests/bench_v060_report.rs +617 -0
- motedb_python-0.12.6/tests/bench_vs_sqlite_100k.rs +423 -0
- motedb_python-0.12.6/tests/bench_vs_sqlite_v05.rs +357 -0
- motedb_python-0.12.6/tests/common/mod.rs +150 -0
- motedb_python-0.12.6/tests/durability_probe.rs +48 -0
- motedb_python-0.12.6/tests/fts_probe.rs +61 -0
- motedb_python-0.12.6/tests/perf_test.rs +430 -0
- motedb_python-0.12.6/tests/repro_point_gap.rs +91 -0
- motedb_python-0.12.6/tests/stress_300k.rs +668 -0
- motedb_python-0.12.6/tests/stress_test.rs +522 -0
- motedb_python-0.12.6/tests/test_acid_audit.rs +508 -0
- motedb_python-0.12.6/tests/test_acid_comprehensive.rs +944 -0
- motedb_python-0.12.6/tests/test_advanced_hunt.rs +493 -0
- motedb_python-0.12.6/tests/test_api_correctness.rs +325 -0
- motedb_python-0.12.6/tests/test_auto_checkpoint_segments.rs +86 -0
- motedb_python-0.12.6/tests/test_backup.rs +226 -0
- motedb_python-0.12.6/tests/test_btree_integrity.rs +197 -0
- motedb_python-0.12.6/tests/test_bug_hunt.rs +940 -0
- motedb_python-0.12.6/tests/test_bug_hunt2.rs +752 -0
- motedb_python-0.12.6/tests/test_bug_hunt3.rs +224 -0
- motedb_python-0.12.6/tests/test_bug_hunt4.rs +255 -0
- motedb_python-0.12.6/tests/test_bug_hunt5.rs +1201 -0
- motedb_python-0.12.6/tests/test_bug_hunt6.rs +384 -0
- motedb_python-0.12.6/tests/test_bug_hunt7.rs +359 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v10.rs +499 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v100.rs +282 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v101.rs +532 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v11.rs +572 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v12.rs +335 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v13.rs +557 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v14.rs +396 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v15.rs +477 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v16.rs +523 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v17_cte.rs +673 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v18.rs +802 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v19.rs +615 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v2.rs +595 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v20.rs +590 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v21.rs +544 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v22.rs +512 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v23.rs +566 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v24.rs +562 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v25.rs +1004 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v26.rs +468 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v27.rs +720 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v28.rs +712 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v29.rs +728 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v3.rs +512 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v30.rs +1035 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v31.rs +390 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v32.rs +246 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v33.rs +264 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v34.rs +188 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v35.rs +235 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v36.rs +244 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v38.rs +210 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v39.rs +205 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v4.rs +512 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v40.rs +142 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v43.rs +113 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v45.rs +378 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v48.rs +117 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v49.rs +290 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v5.rs +548 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v50.rs +196 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v51.rs +274 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v52.rs +361 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v53.rs +286 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v54.rs +387 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v55.rs +347 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v56.rs +230 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v57.rs +517 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v58.rs +457 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v59.rs +507 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v6.rs +441 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v60.rs +645 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v61.rs +350 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v62.rs +404 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v63.rs +504 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v64.rs +415 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v65.rs +358 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v66.rs +403 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v67.rs +281 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v68.rs +381 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v69.rs +366 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v7.rs +387 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v70.rs +333 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v71.rs +319 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v72.rs +447 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v73.rs +370 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v74.rs +343 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v75.rs +442 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v76.rs +438 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v77.rs +397 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v78.rs +402 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v79.rs +460 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v8.rs +562 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v80.rs +467 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v81.rs +434 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v82.rs +438 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v83.rs +445 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v84.rs +471 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v85.rs +406 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v86.rs +557 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v87.rs +507 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v88.rs +378 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v89.rs +481 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v9.rs +431 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v90.rs +319 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v91.rs +452 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v92.rs +471 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v93.rs +410 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v94.rs +353 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v95.rs +458 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v96.rs +460 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v97.rs +464 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v98.rs +445 -0
- motedb_python-0.12.6/tests/test_bug_hunt_v99.rs +489 -0
- motedb_python-0.12.6/tests/test_col_segment.rs +188 -0
- motedb_python-0.12.6/tests/test_col_segment_fastpaths.rs +358 -0
- motedb_python-0.12.6/tests/test_columnar.rs +233 -0
- motedb_python-0.12.6/tests/test_columnar_acid.rs +354 -0
- motedb_python-0.12.6/tests/test_compact_storage.rs +104 -0
- motedb_python-0.12.6/tests/test_compaction_integrity.rs +947 -0
- motedb_python-0.12.6/tests/test_compiled_where_semantics.rs +162 -0
- motedb_python-0.12.6/tests/test_comprehensive.rs +1180 -0
- motedb_python-0.12.6/tests/test_comprehensive_audit.rs +608 -0
- motedb_python-0.12.6/tests/test_concurrent_sql_features.rs +213 -0
- motedb_python-0.12.6/tests/test_concurrent_stress.rs +209 -0
- motedb_python-0.12.6/tests/test_corruption_recovery.rs +102 -0
- motedb_python-0.12.6/tests/test_corruption_robustness.rs +149 -0
- motedb_python-0.12.6/tests/test_crash_injection.rs +972 -0
- motedb_python-0.12.6/tests/test_crash_recovery.rs +342 -0
- motedb_python-0.12.6/tests/test_data_types.rs +590 -0
- motedb_python-0.12.6/tests/test_db_path_hygiene.rs +73 -0
- motedb_python-0.12.6/tests/test_deadlock_stress.rs +316 -0
- motedb_python-0.12.6/tests/test_deep_edge.rs +634 -0
- motedb_python-0.12.6/tests/test_delete_persist.rs +79 -0
- motedb_python-0.12.6/tests/test_differential_correctness.rs +364 -0
- motedb_python-0.12.6/tests/test_disk_bloat.rs +138 -0
- motedb_python-0.12.6/tests/test_disk_usage.rs +166 -0
- motedb_python-0.12.6/tests/test_doctor.rs +132 -0
- motedb_python-0.12.6/tests/test_durability.rs +511 -0
- motedb_python-0.12.6/tests/test_e2e_crash_and_stress.rs +741 -0
- motedb_python-0.12.6/tests/test_edge_cases.rs +220 -0
- motedb_python-0.12.6/tests/test_edge_semantics.rs +461 -0
- motedb_python-0.12.6/tests/test_executemany.rs +120 -0
- motedb_python-0.12.6/tests/test_exists_subquery.rs +126 -0
- motedb_python-0.12.6/tests/test_explain.rs +109 -0
- motedb_python-0.12.6/tests/test_extreme_hunt.rs +544 -0
- motedb_python-0.12.6/tests/test_fast_paths.rs +1670 -0
- motedb_python-0.12.6/tests/test_fuzz_sql_combinations.rs +344 -0
- motedb_python-0.12.6/tests/test_groupby_first_query.rs +76 -0
- motedb_python-0.12.6/tests/test_hybrid_search.rs +322 -0
- motedb_python-0.12.6/tests/test_index_maintenance.rs +395 -0
- motedb_python-0.12.6/tests/test_index_reopen.rs +257 -0
- motedb_python-0.12.6/tests/test_index_robustness.rs +443 -0
- motedb_python-0.12.6/tests/test_indexed_query_semantics.rs +368 -0
- motedb_python-0.12.6/tests/test_insert_engine.rs +187 -0
- motedb_python-0.12.6/tests/test_insert_explicit_fastpath.rs +157 -0
- motedb_python-0.12.6/tests/test_insert_paths_index_maintenance.rs +233 -0
- motedb_python-0.12.6/tests/test_insert_select.rs +250 -0
- motedb_python-0.12.6/tests/test_ioctree.rs +579 -0
- motedb_python-0.12.6/tests/test_isolation_levels.rs +180 -0
- motedb_python-0.12.6/tests/test_join_count_fold.rs +205 -0
- motedb_python-0.12.6/tests/test_knn_parallel.rs +151 -0
- motedb_python-0.12.6/tests/test_large_rows.rs +150 -0
- motedb_python-0.12.6/tests/test_m5_mines.rs +132 -0
- motedb_python-0.12.6/tests/test_memory_leak.rs +244 -0
- motedb_python-0.12.6/tests/test_memory_linear.rs +269 -0
- motedb_python-0.12.6/tests/test_multimodal.rs +388 -0
- motedb_python-0.12.6/tests/test_multimodal_e2e.rs +940 -0
- motedb_python-0.12.6/tests/test_mvcc_isolation.rs +235 -0
- motedb_python-0.12.6/tests/test_mvcc_recovery.rs +516 -0
- motedb_python-0.12.6/tests/test_no_bloat.rs +363 -0
- motedb_python-0.12.6/tests/test_optimization_regression.rs +744 -0
- motedb_python-0.12.6/tests/test_order_by_expr_keys.rs +235 -0
- motedb_python-0.12.6/tests/test_parser_fuzz_regression.rs +54 -0
- motedb_python-0.12.6/tests/test_performance_guarantees.rs +218 -0
- motedb_python-0.12.6/tests/test_pk_change_semantics.rs +142 -0
- motedb_python-0.12.6/tests/test_prepared_dml.rs +178 -0
- motedb_python-0.12.6/tests/test_public_api.rs +390 -0
- motedb_python-0.12.6/tests/test_query_equivalence.rs +263 -0
- motedb_python-0.12.6/tests/test_range_count.rs +93 -0
- motedb_python-0.12.6/tests/test_release_readiness.rs +827 -0
- motedb_python-0.12.6/tests/test_repro12.rs +25 -0
- motedb_python-0.12.6/tests/test_round12_optimizations.rs +775 -0
- motedb_python-0.12.6/tests/test_round12b_edge.rs +184 -0
- motedb_python-0.12.6/tests/test_round12c_e2e_bugs.rs +198 -0
- motedb_python-0.12.6/tests/test_round13_bug_hunt.rs +683 -0
- motedb_python-0.12.6/tests/test_row_api.rs +343 -0
- motedb_python-0.12.6/tests/test_savepoint_window.rs +141 -0
- motedb_python-0.12.6/tests/test_scalability.rs +243 -0
- motedb_python-0.12.6/tests/test_scan_integrity.rs +113 -0
- motedb_python-0.12.6/tests/test_semantic_edges.rs +491 -0
- motedb_python-0.12.6/tests/test_spatial_index.rs +120 -0
- motedb_python-0.12.6/tests/test_spatial_large_geometry.rs +90 -0
- motedb_python-0.12.6/tests/test_spatial_sql_semantics.rs +292 -0
- motedb_python-0.12.6/tests/test_sql_advanced.rs +793 -0
- motedb_python-0.12.6/tests/test_sql_correctness.rs +1524 -0
- motedb_python-0.12.6/tests/test_sql_correctness_part2.rs +1074 -0
- motedb_python-0.12.6/tests/test_sql_ddl_features.rs +373 -0
- motedb_python-0.12.6/tests/test_sql_errors_edges.rs +565 -0
- motedb_python-0.12.6/tests/test_sql_functions.rs +436 -0
- motedb_python-0.12.6/tests/test_sql_groupby.rs +277 -0
- motedb_python-0.12.6/tests/test_sql_joins.rs +234 -0
- motedb_python-0.12.6/tests/test_sql_scenarios.rs +480 -0
- motedb_python-0.12.6/tests/test_storage_integrity.rs +375 -0
- motedb_python-0.12.6/tests/test_stress.rs +168 -0
- motedb_python-0.12.6/tests/test_stress_hunt.rs +628 -0
- motedb_python-0.12.6/tests/test_text_ts_search_semantics.rs +1104 -0
- motedb_python-0.12.6/tests/test_timeseries_index.rs +873 -0
- motedb_python-0.12.6/tests/test_timeseries_semantics.rs +367 -0
- motedb_python-0.12.6/tests/test_timestamp_recovery.rs +65 -0
- motedb_python-0.12.6/tests/test_transaction_semantics.rs +817 -0
- motedb_python-0.12.6/tests/test_txn_ddl_and_nan_ordering.rs +175 -0
- motedb_python-0.12.6/tests/test_update_perf.rs +236 -0
- motedb_python-0.12.6/tests/test_upsert.rs +367 -0
- motedb_python-0.12.6/tests/test_v050_features.rs +494 -0
- motedb_python-0.12.6/tests/test_vec_m0.rs +564 -0
- motedb_python-0.12.6/tests/test_vec_m4.rs +199 -0
- motedb_python-0.12.6/tests/test_vector_column_read_paths.rs +105 -0
- motedb_python-0.12.6/tests/test_vector_durability.rs +453 -0
- motedb_python-0.12.6/tests/test_vector_index_recall.rs +226 -0
- motedb_python-0.12.6/tests/test_vector_spatial_text.rs +285 -0
- motedb_python-0.12.6/tests/test_vector_visibility.rs +135 -0
- motedb_python-0.12.6/tests/test_wide_tables.rs +304 -0
- motedb_python-0.12.6/tests/test_write_concurrency.rs +149 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# NOTE: `target-cpu=native` is intentionally NOT set globally. When placed in
|
|
2
|
+
# [build] rustflags it would be inherited by:
|
|
3
|
+
# - downstream crates that depend on motedb (forcing their builds to a CPU
|
|
4
|
+
# they may not target),
|
|
5
|
+
# - cross-compilation (aarch64-linux etc.), producing non-portable binaries,
|
|
6
|
+
# - `cargo publish` consumers.
|
|
7
|
+
# For local benchmarking that wants native CPU, build with:
|
|
8
|
+
# RUSTFLAGS="-C target-cpu=native" cargo build --release --example bench_300k
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
|
2
|
+
// README at: https://github.com/devcontainers/templates/tree/main/src/rust
|
|
3
|
+
{
|
|
4
|
+
"name": "Rust",
|
|
5
|
+
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
|
6
|
+
"image": "mcr.microsoft.com/devcontainers/rust:2-1-trixie"
|
|
7
|
+
|
|
8
|
+
// Use 'mounts' to make the cargo cache persistent in a Docker Volume.
|
|
9
|
+
// "mounts": [
|
|
10
|
+
// {
|
|
11
|
+
// "source": "devcontainer-cargo-cache-${devcontainerId}",
|
|
12
|
+
// "target": "/usr/local/cargo",
|
|
13
|
+
// "type": "volume"
|
|
14
|
+
// }
|
|
15
|
+
// ]
|
|
16
|
+
|
|
17
|
+
// Features to add to the dev container. More info: https://containers.dev/features.
|
|
18
|
+
// "features": {},
|
|
19
|
+
|
|
20
|
+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
|
21
|
+
// "forwardPorts": [],
|
|
22
|
+
|
|
23
|
+
// Use 'postCreateCommand' to run commands after the container is created.
|
|
24
|
+
// "postCreateCommand": "rustc --version",
|
|
25
|
+
|
|
26
|
+
// Configure tool-specific properties.
|
|
27
|
+
// "customizations": {},
|
|
28
|
+
|
|
29
|
+
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
|
30
|
+
// "remoteUser": "root"
|
|
31
|
+
}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
# Runs on every push to any branch and every pull request. This is the
|
|
4
|
+
# fast-feedback gate that catches regressions BEFORE a release tag, unlike
|
|
5
|
+
# publish.yml which only fires on `v*` tags.
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: ["**"]
|
|
9
|
+
pull_request:
|
|
10
|
+
|
|
11
|
+
# Cancel superseded runs on the same ref so force-pushes don't queue up.
|
|
12
|
+
concurrency:
|
|
13
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
# ── Lint: strict fmt gate + clippy advisory ──────────────────────────────
|
|
18
|
+
# fmt is a hard gate (rustfmt is deterministic and the whole tree is now
|
|
19
|
+
# fmt-clean). clippy runs as advisory (exit code ignored) so the 14
|
|
20
|
+
# remaining style lints don't block merges while they're being cleaned up;
|
|
21
|
+
# the warnings are still surfaced in the run log.
|
|
22
|
+
lint:
|
|
23
|
+
name: fmt + clippy
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
28
|
+
with:
|
|
29
|
+
components: rustfmt, clippy
|
|
30
|
+
- name: cargo fmt --check (strict)
|
|
31
|
+
run: cargo fmt --check
|
|
32
|
+
- name: cargo clippy (advisory — warnings do not fail the job)
|
|
33
|
+
run: cargo clippy --all-targets --all-features --no-deps
|
|
34
|
+
continue-on-error: true
|
|
35
|
+
|
|
36
|
+
# ── Supply-chain: vulnerability + license gate (cargo-deny) ──────────────
|
|
37
|
+
# Fails on any NEW RustSec advisory (vulnerability/unsound). Four known
|
|
38
|
+
# unmaintained-dep advisories are explicitly ignored in deny.toml with
|
|
39
|
+
# tracked reasons (bincode 1.x, and three via the optional jieba-rs). A new
|
|
40
|
+
# advisory with no ignore entry blocks the build until reviewed.
|
|
41
|
+
supply-chain:
|
|
42
|
+
name: cargo-deny (advisories + licenses)
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v4
|
|
46
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
47
|
+
- name: Install cargo-deny
|
|
48
|
+
run: cargo install cargo-deny --locked
|
|
49
|
+
- name: cargo deny check
|
|
50
|
+
run: cargo deny check advisories licenses sources
|
|
51
|
+
|
|
52
|
+
# ── Unit tests (HARD gate, fast): library in-crate tests only ────────────
|
|
53
|
+
# `cargo test --lib` compiles a SINGLE binary (the lib's inline tests, 428
|
|
54
|
+
# of them) and runs in seconds — a fast, deterministic gate that catches
|
|
55
|
+
# the vast majority of regressions. Runs on both ubuntu and macOS so
|
|
56
|
+
# platform-specific compile/runtime issues surface here, not in the slow
|
|
57
|
+
# integration matrix.
|
|
58
|
+
unit-test:
|
|
59
|
+
name: unit (${{ matrix.os }})
|
|
60
|
+
strategy:
|
|
61
|
+
fail-fast: false
|
|
62
|
+
matrix:
|
|
63
|
+
os: [ubuntu-latest, macos-latest]
|
|
64
|
+
runs-on: ${{ matrix.os }}
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@v4
|
|
67
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
68
|
+
- uses: Swatinem/rust-cache@v2
|
|
69
|
+
with:
|
|
70
|
+
workspaces: ". -> target"
|
|
71
|
+
- name: cargo test --lib
|
|
72
|
+
env:
|
|
73
|
+
CI: "1"
|
|
74
|
+
run: cargo test --lib --all-features
|
|
75
|
+
|
|
76
|
+
# ── Native ARM64: unit tests on real aarch64 hardware ────────────────────
|
|
77
|
+
# The primary deployment target for embodied-intelligence edge devices is
|
|
78
|
+
# ARM (Jetson, RPi, RK3588). The cross-compile job below catches link/compile
|
|
79
|
+
# errors only; this job executes the actual unit-test suite on GitHub's free
|
|
80
|
+
# arm64 runners so runtime/atomic/memory-model issues surface before release.
|
|
81
|
+
arm64-test:
|
|
82
|
+
name: unit (arm64)
|
|
83
|
+
runs-on: ubuntu-24.04-arm
|
|
84
|
+
steps:
|
|
85
|
+
- uses: actions/checkout@v4
|
|
86
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
87
|
+
- uses: Swatinem/rust-cache@v2
|
|
88
|
+
with:
|
|
89
|
+
workspaces: ". -> target"
|
|
90
|
+
- name: cargo test --lib
|
|
91
|
+
env:
|
|
92
|
+
CI: "1"
|
|
93
|
+
run: cargo test --lib --all-features
|
|
94
|
+
|
|
95
|
+
# ── Integration tests (HARD gate): the full tests/ matrix ────────────────
|
|
96
|
+
# `cargo test --workspace` compiles 64 test binaries (~40min cold) and runs
|
|
97
|
+
# them. 🔑 External production review (0.12.2 evaluation): this job was
|
|
98
|
+
# advisory (`continue-on-error`) — a failing integration suite did not
|
|
99
|
+
# block a release. It is now a hard gate: both retry attempts must pass.
|
|
100
|
+
# Hardware/timing-dependent tests stay excluded (resource/IO thresholds
|
|
101
|
+
# flap on shared runners; perf numbers are tracked in BENCHMARK.md).
|
|
102
|
+
integration-test:
|
|
103
|
+
name: integration (${{ matrix.os }})
|
|
104
|
+
strategy:
|
|
105
|
+
fail-fast: false
|
|
106
|
+
matrix:
|
|
107
|
+
os: [ubuntu-latest, macos-latest]
|
|
108
|
+
runs-on: ${{ matrix.os }}
|
|
109
|
+
timeout-minutes: 90
|
|
110
|
+
steps:
|
|
111
|
+
- uses: actions/checkout@v4
|
|
112
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
113
|
+
- uses: Swatinem/rust-cache@v2
|
|
114
|
+
with:
|
|
115
|
+
workspaces: ". -> target"
|
|
116
|
+
# 🔑 Release-blocker fix: macos arm64 shared runners flap (capacity
|
|
117
|
+
# notices + stale-artifact binary launch failures "exit 101, never
|
|
118
|
+
# executed" after cache restore). The suite itself passes locally on
|
|
119
|
+
# identical hardware (3956 passed / 0 failed). Retry once; the verdict
|
|
120
|
+
# step below fails the JOB when both attempts fail (hard gate).
|
|
121
|
+
- name: cargo test (workspace, hardware-threshold tests skipped) [attempt 1]
|
|
122
|
+
id: ci1
|
|
123
|
+
continue-on-error: true
|
|
124
|
+
env:
|
|
125
|
+
CI: "1"
|
|
126
|
+
# Debug build. Skip list excludes two categories of tests that can't
|
|
127
|
+
# reliably pass on shared runners:
|
|
128
|
+
# 1. Resource/IO-bound (RSS memory, disk usage) — thresholds depend on
|
|
129
|
+
# the runner's hardware; flap on shared runners.
|
|
130
|
+
# 2. Performance/latency thresholds (µs/op, latency bounds) — assert
|
|
131
|
+
# hardware-speed assumptions shared runners can't meet. Tracked in
|
|
132
|
+
# BENCHMARK.md instead.
|
|
133
|
+
run: |
|
|
134
|
+
cargo test --workspace --all-features -- \
|
|
135
|
+
--test-threads=1 \
|
|
136
|
+
--skip bench_ --skip stress_ --skip perf_ \
|
|
137
|
+
--skip test_memory_linear \
|
|
138
|
+
--skip test_memory_leak \
|
|
139
|
+
--skip test_memory_does_not_grow_unbounded \
|
|
140
|
+
--skip test_disk_usage \
|
|
141
|
+
--skip test_no_bloat \
|
|
142
|
+
--skip test_perf_ \
|
|
143
|
+
--skip test_scan_latency_bounded \
|
|
144
|
+
--skip test_insert_latency_bounded \
|
|
145
|
+
--skip test_aggregate_latency_bounded \
|
|
146
|
+
--skip test_distinct_latency_bounded \
|
|
147
|
+
--skip test_where_latency_bounded \
|
|
148
|
+
--skip test_pk_select_latency_stable \
|
|
149
|
+
--skip test_latency_growth_sublinear \
|
|
150
|
+
--skip test_scalability_latency \
|
|
151
|
+
--skip test_scalability_memory \
|
|
152
|
+
--skip test_durability_large_dataset_checkpoint_recovery \
|
|
153
|
+
--skip test_performance_guarantees
|
|
154
|
+
- name: cargo test (workspace, hardware-threshold tests skipped) [attempt 2]
|
|
155
|
+
id: ci2
|
|
156
|
+
if: steps.ci1.outcome == 'failure'
|
|
157
|
+
env:
|
|
158
|
+
CI: "1"
|
|
159
|
+
run: |
|
|
160
|
+
cargo test --workspace --all-features -- \
|
|
161
|
+
--test-threads=1 \
|
|
162
|
+
--skip bench_ --skip stress_ --skip perf_ \
|
|
163
|
+
--skip test_memory_linear \
|
|
164
|
+
--skip test_memory_leak \
|
|
165
|
+
--skip test_memory_does_not_grow_unbounded \
|
|
166
|
+
--skip test_disk_usage \
|
|
167
|
+
--skip test_no_bloat \
|
|
168
|
+
--skip test_perf_ \
|
|
169
|
+
--skip test_scan_latency_bounded \
|
|
170
|
+
--skip test_insert_latency_bounded \
|
|
171
|
+
--skip test_aggregate_latency_bounded \
|
|
172
|
+
--skip test_distinct_latency_bounded \
|
|
173
|
+
--skip test_where_latency_bounded \
|
|
174
|
+
--skip test_pk_select_latency_stable \
|
|
175
|
+
--skip test_latency_growth_sublinear \
|
|
176
|
+
--skip test_scalability_latency \
|
|
177
|
+
--skip test_scalability_memory \
|
|
178
|
+
--skip test_durability_large_dataset_checkpoint_recovery \
|
|
179
|
+
--skip test_performance_guarantees
|
|
180
|
+
- name: verdict
|
|
181
|
+
if: always()
|
|
182
|
+
run: |
|
|
183
|
+
if [ "${{ steps.ci1.outcome }}" = "failure" ] && [ "${{ steps.ci2.outcome }}" = "failure" ]; then
|
|
184
|
+
echo "Both attempts failed — genuine integration regression"
|
|
185
|
+
exit 101
|
|
186
|
+
fi
|
|
187
|
+
echo "attempt 1 outcome=${{ steps.ci1.outcome }}, attempt 2 outcome=${{ steps.ci2.outcome }} — suite OK"
|
|
188
|
+
- name: diagnostics (per-binary pass → step summary + annotations)
|
|
189
|
+
if: failure()
|
|
190
|
+
run: |
|
|
191
|
+
# 🔑 K-debug: cargo 顶层一次跑时,crashing binary 会以 exit 101
|
|
192
|
+
# 中断整个套件且不留 FAILED 行。逐 bin 运行并把每个 bin 的退出码
|
|
193
|
+
# 通过 ::error:: annotations 上报(匿名可读)。
|
|
194
|
+
{
|
|
195
|
+
echo "### mac integration per-binary status"
|
|
196
|
+
BINS=$(cargo test --workspace --all-features -- --list 2>/dev/null \
|
|
197
|
+
| grep -E "^Running|^ " >/dev/null; cargo test --workspace \
|
|
198
|
+
--all-features --no-run 2>&1 | grep -oE "Executable tests/[a-z0-9_]+\.rs" \
|
|
199
|
+
| sed 's/Executable //;s/\.rs$//' | sort -u)
|
|
200
|
+
for t in $BINS; do
|
|
201
|
+
grep -qE "bench_|stress_" <<<"$t" && continue
|
|
202
|
+
cargo test --all-features --test "$t" -- --test-threads=1 \
|
|
203
|
+
--skip bench_ --skip stress_ --skip perf_ \
|
|
204
|
+
--skip test_memory_linear --skip test_memory_leak \
|
|
205
|
+
--skip test_memory_does_not_grow_unbounded \
|
|
206
|
+
--skip test_disk_usage --skip test_no_bloat --skip test_perf_ \
|
|
207
|
+
--skip test_scan_latency_bounded --skip test_insert_latency_bounded \
|
|
208
|
+
--skip test_aggregate_latency_bounded --skip test_distinct_latency_bounded \
|
|
209
|
+
--skip test_where_latency_bounded --skip test_pk_select_latency_stable \
|
|
210
|
+
--skip test_latency_growth_sublinear --skip test_scalability_latency \
|
|
211
|
+
--skip test_scalability_memory \
|
|
212
|
+
--skip test_durability_large_dataset_checkpoint_recovery \
|
|
213
|
+
--skip test_performance_guarantees --no-fail-fast \
|
|
214
|
+
> /tmp/one.log 2>&1
|
|
215
|
+
rc=$?
|
|
216
|
+
echo "::error title=mac-integration::$t exit=$rc"
|
|
217
|
+
if [ $rc -ne 0 ] && [ $rc -ne 101 ]; then
|
|
218
|
+
grep -E "panicked at|FAILED" /tmp/one.log | head -5 \
|
|
219
|
+
| while read -r line; do echo "::error ::$line"; done
|
|
220
|
+
fi
|
|
221
|
+
done
|
|
222
|
+
} || echo "per-binary diagnostics done" >> "$GITHUB_STEP_SUMMARY"
|
|
223
|
+
} || echo "diagnostics pass done" >> "$GITHUB_STEP_SUMMARY"
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
# ── Cross-compile: aarch64-unknown-linux-gnu (build only) ────────────────
|
|
227
|
+
# Verifies the crate compiles for the primary edge/robotics target. We only
|
|
228
|
+
# build (no test run) since we don't have aarch64-linux hardware in the
|
|
229
|
+
# matrix; catching link/compile errors here is the main value.
|
|
230
|
+
cross-aarch64:
|
|
231
|
+
name: cross-compile aarch64-linux
|
|
232
|
+
runs-on: ubuntu-latest
|
|
233
|
+
steps:
|
|
234
|
+
- uses: actions/checkout@v4
|
|
235
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
236
|
+
with:
|
|
237
|
+
targets: aarch64-unknown-linux-gnu
|
|
238
|
+
- uses: Swatinem/rust-cache@v2
|
|
239
|
+
with:
|
|
240
|
+
workspaces: ". -> target"
|
|
241
|
+
key: aarch64
|
|
242
|
+
- name: Install aarch64 cross linker
|
|
243
|
+
run: |
|
|
244
|
+
sudo apt-get update
|
|
245
|
+
sudo apt-get install -y gcc-aarch64-linux-gnu
|
|
246
|
+
- name: cargo build (aarch64, default features)
|
|
247
|
+
env:
|
|
248
|
+
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
|
|
249
|
+
# Default features include jemalloc + tokenizer + rayon; verify they
|
|
250
|
+
# all cross-compile. We deliberately do NOT set target-cpu here (it is
|
|
251
|
+
# no longer in .cargo/config.toml).
|
|
252
|
+
run: cargo build --release --target aarch64-unknown-linux-gnu
|
|
253
|
+
- name: cargo build (aarch64, edge profile — no tokenizer/rayon)
|
|
254
|
+
env:
|
|
255
|
+
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
|
|
256
|
+
run: cargo build --release --target aarch64-unknown-linux-gnu --no-default-features --features jemalloc
|
|
257
|
+
|
|
258
|
+
# ── External-integration E2E: Python wheel + motedb-cli ──────────────────
|
|
259
|
+
# Catches the class of bug the in-process cargo tests structurally miss:
|
|
260
|
+
# packaging/linker (Linux `-undefined dynamic_lookup`), dlopen TLS
|
|
261
|
+
# (jemalloc initial-exec), flush-race visibility through the binding, and
|
|
262
|
+
# CLI/SQL entry-point drift (CHECKPOINT parsed in one client but not the
|
|
263
|
+
# other). Mirrors scripts/docker_e2e.sh without the container.
|
|
264
|
+
e2e:
|
|
265
|
+
name: e2e (${{ matrix.os }})
|
|
266
|
+
strategy:
|
|
267
|
+
fail-fast: false
|
|
268
|
+
matrix:
|
|
269
|
+
os: [ubuntu-latest, macos-latest]
|
|
270
|
+
runs-on: ${{ matrix.os }}
|
|
271
|
+
timeout-minutes: 40
|
|
272
|
+
steps:
|
|
273
|
+
- uses: actions/checkout@v4
|
|
274
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
275
|
+
- uses: Swatinem/rust-cache@v2
|
|
276
|
+
with:
|
|
277
|
+
workspaces: ". -> target"
|
|
278
|
+
- uses: actions/setup-python@v5
|
|
279
|
+
with:
|
|
280
|
+
python-version: "3.11"
|
|
281
|
+
- name: Build CLI binary
|
|
282
|
+
run: cargo build --release --bin motedb-cli
|
|
283
|
+
- name: Build + install Python wheel
|
|
284
|
+
uses: PyO3/maturin-action@v1
|
|
285
|
+
with:
|
|
286
|
+
working-directory: bindings/python
|
|
287
|
+
args: --release
|
|
288
|
+
- name: Install wheel
|
|
289
|
+
run: pip install bindings/python/target/wheels/*.whl
|
|
290
|
+
- name: Run E2E workload (11 suites)
|
|
291
|
+
env:
|
|
292
|
+
MOTE_CLI: ${{ github.workspace }}/target/release/motedb-cli
|
|
293
|
+
run: python bindings/python/e2e/e2e_workload.py --root /tmp/e2e
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Fuzz
|
|
2
|
+
|
|
3
|
+
# Daily short fuzzing campaign on both targets (SQL parser + WAL recovery).
|
|
4
|
+
# 5 minutes each is enough to re-explore the existing corpus and push a few
|
|
5
|
+
# million new inputs through the parser; crashes upload the artifact for
|
|
6
|
+
# triage. Long campaigns remain a local/nightly concern.
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
schedule:
|
|
10
|
+
- cron: '0 19 * * *' # daily 19:00 UTC (03:00 +0800)
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
fuzz:
|
|
15
|
+
name: 5min x 2 targets
|
|
16
|
+
# ubuntu-22.04: the 24.04 kernel's ASLR mmap layout segfaults
|
|
17
|
+
# AddressSanitizer binaries at startup (even with vm.mmap_rnd_bits=28).
|
|
18
|
+
# 22.04's older kernel layout runs ASAN cleanly.
|
|
19
|
+
runs-on: ubuntu-22.04
|
|
20
|
+
timeout-minutes: 45
|
|
21
|
+
strategy:
|
|
22
|
+
fail-fast: false
|
|
23
|
+
matrix:
|
|
24
|
+
target: [fuzz_sql_parser, fuzz_wal_recover]
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
- uses: actions-rs/toolchain@v1
|
|
28
|
+
with:
|
|
29
|
+
toolchain: nightly
|
|
30
|
+
override: true
|
|
31
|
+
- name: Install cargo-fuzz
|
|
32
|
+
run: cargo install cargo-fuzz --locked
|
|
33
|
+
- name: Lower ASLR entropy for ASAN
|
|
34
|
+
# ubuntu-24.04 runners default vm.mmap_rnd_bits=32, which makes any
|
|
35
|
+
# AddressSanitizer binary SIGSEGV at startup (silently, before
|
|
36
|
+
# libFuzzer prints its banner). 28 is the documented workaround.
|
|
37
|
+
run: sudo sysctl vm.mmap_rnd_bits=28
|
|
38
|
+
- name: Fuzz ${{ matrix.target }}
|
|
39
|
+
working-directory: fuzz
|
|
40
|
+
run: cargo fuzz run ${{ matrix.target }} -- -max_total_time=300 -rss_limit_mb=4096
|
|
41
|
+
- name: Upload crash artifacts
|
|
42
|
+
if: failure()
|
|
43
|
+
uses: actions/upload-artifact@v4
|
|
44
|
+
with:
|
|
45
|
+
name: crash-${{ matrix.target }}
|
|
46
|
+
path: fuzz/artifacts/
|
|
47
|
+
if-no-files-found: ignore
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Perf Gate
|
|
2
|
+
|
|
3
|
+
# Performance regression smoke gate.
|
|
4
|
+
# Asserts core query-shape latencies against the full-scan baseline AS A
|
|
5
|
+
# RATIO — machine-independent, so slower CI runners don't flake it. The
|
|
6
|
+
# budgets carry ~2x headroom over measured ratios; they exist to catch
|
|
7
|
+
# complexity-class regressions (e.g. the O(N²) text-eq path that shipped as
|
|
8
|
+
# 568s vs 8ms — a 70,000x blowup), not few-percent noise.
|
|
9
|
+
# Tool: examples/perf_smoke.rs
|
|
10
|
+
|
|
11
|
+
on:
|
|
12
|
+
push:
|
|
13
|
+
branches: [main]
|
|
14
|
+
pull_request:
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
perf-smoke:
|
|
19
|
+
name: Query-shape ratio budgets
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
timeout-minutes: 20
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
- uses: actions-rs/toolchain@v1
|
|
25
|
+
with:
|
|
26
|
+
toolchain: stable
|
|
27
|
+
override: true
|
|
28
|
+
- uses: Swatinem/rust-cache@v2
|
|
29
|
+
with:
|
|
30
|
+
workspaces: ". -> target"
|
|
31
|
+
- name: Build perf smoke (release)
|
|
32
|
+
run: cargo build --release --example perf_smoke
|
|
33
|
+
- name: Run perf smoke
|
|
34
|
+
run: ./target/release/examples/perf_smoke
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
name: Build and Publish to crates.io
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
# ── Hard gate: library unit tests (fast, deterministic) ──────────────────
|
|
11
|
+
# `cargo test --lib` compiles a SINGLE binary (429 in-crate tests) and runs
|
|
12
|
+
# in ~5s. Same strategy as ci.yml's hard gate: catches the vast majority of
|
|
13
|
+
# regressions deterministically. `publish` depends ONLY on this job.
|
|
14
|
+
#
|
|
15
|
+
# The full integration suite (`cargo test --workspace`) has an intermittent
|
|
16
|
+
# background-thread deadlock (~90 binaries run serially → index-builder /
|
|
17
|
+
# group-commit condvar permanent wait on CREATE INDEX + SELECT). Pre-existing
|
|
18
|
+
# concurrency issue, not a regression; does not reproduce in isolation. It is
|
|
19
|
+
# run as a separate advisory job below so its hang can never block a release
|
|
20
|
+
# (v0.7.2/v0.7.3/v0.7.4 all hit CI timeouts from this before the split).
|
|
21
|
+
unit-test:
|
|
22
|
+
name: Unit tests (hard gate)
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
timeout-minutes: 15
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
- uses: actions-rs/toolchain@v1
|
|
28
|
+
with:
|
|
29
|
+
toolchain: stable
|
|
30
|
+
override: true
|
|
31
|
+
- uses: Swatinem/rust-cache@v2
|
|
32
|
+
with:
|
|
33
|
+
workspaces: ". -> target"
|
|
34
|
+
- run: cargo fetch
|
|
35
|
+
- name: cargo test --lib --all-features
|
|
36
|
+
env:
|
|
37
|
+
CI: "1"
|
|
38
|
+
run: cargo test --lib --all-features
|
|
39
|
+
|
|
40
|
+
# 注:integration 测试由 ci.yml 的 integration-test job 覆盖(advisory,
|
|
41
|
+
# 30min timeout)。publish.yml 不再重复跑 integration —— 全量 workspace 有
|
|
42
|
+
# 间歇并发 race(深层、概率性),即使 advisory 也会让 Actions 页面长时间
|
|
43
|
+
# 显示 in_progress。publish 仅依赖确定性的 unit-test(--lib,~5s)。
|
|
44
|
+
|
|
45
|
+
publish:
|
|
46
|
+
name: Publish to crates.io
|
|
47
|
+
needs: unit-test
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
timeout-minutes: 60
|
|
50
|
+
steps:
|
|
51
|
+
- name: Checkout
|
|
52
|
+
uses: actions/checkout@v4
|
|
53
|
+
|
|
54
|
+
- name: Setup Rust toolchain
|
|
55
|
+
uses: actions-rs/toolchain@v1
|
|
56
|
+
with:
|
|
57
|
+
toolchain: stable
|
|
58
|
+
override: true
|
|
59
|
+
|
|
60
|
+
- name: Cache cargo registry and build artifacts
|
|
61
|
+
uses: Swatinem/rust-cache@v2
|
|
62
|
+
with:
|
|
63
|
+
workspaces: ". -> target"
|
|
64
|
+
|
|
65
|
+
- name: Install dependencies
|
|
66
|
+
run: cargo fetch
|
|
67
|
+
|
|
68
|
+
- name: Build (release)
|
|
69
|
+
run: cargo build --release
|
|
70
|
+
|
|
71
|
+
- name: Verify tag matches Cargo.toml version
|
|
72
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
73
|
+
run: |
|
|
74
|
+
TAG=${GITHUB_REF#refs/tags/}
|
|
75
|
+
echo "Tag: $TAG"
|
|
76
|
+
VERSION=$(grep '^version' Cargo.toml | head -n1 | sed -E 's/version\s*=\s*"(.*)"/\1/')
|
|
77
|
+
echo "Version from Cargo.toml: $VERSION"
|
|
78
|
+
if [ "v$VERSION" != "$TAG" ]; then
|
|
79
|
+
echo "Tag does not match version in Cargo.toml (v$VERSION expected). Aborting.";
|
|
80
|
+
exit 1;
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
- name: Package check
|
|
84
|
+
# No --allow-dirty: the package must be clean so we never publish
|
|
85
|
+
# uncommitted changes or stray working files to crates.io.
|
|
86
|
+
run: cargo package
|
|
87
|
+
|
|
88
|
+
- name: Publish to crates.io
|
|
89
|
+
env:
|
|
90
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_TOKEN }}
|
|
91
|
+
run: |
|
|
92
|
+
if [ -z "${CARGO_REGISTRY_TOKEN}" ]; then
|
|
93
|
+
echo "CARGO_TOKEN is not set in repository secrets. Aborting."; exit 1;
|
|
94
|
+
fi
|
|
95
|
+
cargo publish
|