motedb-python 0.12.8__tar.gz → 0.13.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.
Files changed (497) hide show
  1. {motedb_python-0.12.8 → motedb_python-0.13.0}/.gitignore +1 -0
  2. {motedb_python-0.12.8 → motedb_python-0.13.0}/CHANGELOG.md +99 -0
  3. {motedb_python-0.12.8 → motedb_python-0.13.0}/Cargo.lock +145 -1
  4. {motedb_python-0.12.8 → motedb_python-0.13.0}/Cargo.toml +2 -1
  5. {motedb_python-0.12.8 → motedb_python-0.13.0}/PKG-INFO +1 -1
  6. {motedb_python-0.12.8 → motedb_python-0.13.0}/README.md +40 -5
  7. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/Cargo.lock +174 -4
  8. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/Cargo.toml +1 -1
  9. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/src/lib.rs +128 -0
  10. motedb_python-0.13.0/bindings/python/tests/data/demo.mcap +0 -0
  11. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_crash_recovery.py +28 -10
  12. motedb_python-0.13.0/bindings/python/tests/test_mcap_import.py +71 -0
  13. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/13-data-types.md +19 -0
  14. motedb_python-0.13.0/docs/design/2026-10-embodied-roadmap.md +225 -0
  15. motedb_python-0.13.0/examples/gen_test_bag.rs +46 -0
  16. {motedb_python-0.12.8 → motedb_python-0.13.0}/pyproject.toml +1 -1
  17. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/api.rs +9 -0
  18. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/bin/motedb-cli.rs +78 -0
  19. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/core.rs +128 -10
  20. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/crud.rs +39 -10
  21. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/indexes/text.rs +22 -0
  22. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/persistence.rs +53 -7
  23. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/cached_index.rs +1 -0
  24. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/lib.rs +1 -0
  25. motedb_python-0.13.0/src/mcap_import.rs +296 -0
  26. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/ast.rs +15 -0
  27. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/evaluator.rs +120 -6
  28. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/executor/mod.rs +238 -12
  29. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/executor/scan.rs +34 -7
  30. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/lexer.rs +8 -19
  31. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/parser.rs +101 -1
  32. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/col_segment/segment.rs +64 -1
  33. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/col_segment/store.rs +53 -3
  34. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/colbatch.rs +3 -1
  35. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/columnar.rs +82 -1
  36. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/row_format.rs +63 -1
  37. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/types/mod.rs +53 -0
  38. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/types/table.rs +17 -0
  39. motedb_python-0.13.0/tests/blob_probe3.rs +73 -0
  40. motedb_python-0.13.0/tests/repro_multirow_update_fts.rs +46 -0
  41. motedb_python-0.13.0/tests/test_blob_type.rs +186 -0
  42. motedb_python-0.13.0/tests/test_fts_recovery_staleness.rs +112 -0
  43. motedb_python-0.13.0/tests/test_mcap_import.rs +173 -0
  44. motedb_python-0.13.0/tests/test_rrf_hybrid.rs +191 -0
  45. {motedb_python-0.12.8 → motedb_python-0.13.0}/.cargo/config.toml +0 -0
  46. {motedb_python-0.12.8 → motedb_python-0.13.0}/.devcontainer/devcontainer.json +0 -0
  47. {motedb_python-0.12.8 → motedb_python-0.13.0}/.github/workflows/ci.yml +0 -0
  48. {motedb_python-0.12.8 → motedb_python-0.13.0}/.github/workflows/fuzz.yml +0 -0
  49. {motedb_python-0.12.8 → motedb_python-0.13.0}/.github/workflows/perf-gate.yml +0 -0
  50. {motedb_python-0.12.8 → motedb_python-0.13.0}/.github/workflows/publish.yml +0 -0
  51. {motedb_python-0.12.8 → motedb_python-0.13.0}/.github/workflows/python-wheels.yml +0 -0
  52. {motedb_python-0.12.8 → motedb_python-0.13.0}/.zcode/plans/plan-sess_abb2c954-05fb-477e-9d0a-3e22261e2449.md +0 -0
  53. {motedb_python-0.12.8 → motedb_python-0.13.0}/.zcode/plans/plan-sess_b5937a06-b7bf-4471-9756-dbf2787b263c.md +0 -0
  54. {motedb_python-0.12.8 → motedb_python-0.13.0}/LICENSE +0 -0
  55. {motedb_python-0.12.8 → motedb_python-0.13.0}/Makefile +0 -0
  56. {motedb_python-0.12.8 → motedb_python-0.13.0}/RELEASE_NOTES.md +0 -0
  57. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/README.md +0 -0
  58. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/README.md +0 -0
  59. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/adversarial_verify.py +0 -0
  60. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/bench_edge.py +0 -0
  61. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/compete_bench.py +0 -0
  62. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/compete_fts_industry.py +0 -0
  63. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/compete_scale.py +0 -0
  64. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/compete_spatial_ts.py +0 -0
  65. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/compete_vec_industry.py +0 -0
  66. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/compete_writes.py +0 -0
  67. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/fts_probe_once.py +0 -0
  68. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/perf_ab.py +0 -0
  69. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/perf_overall.py +0 -0
  70. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/prof_ann.py +0 -0
  71. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/prof_fts.py +0 -0
  72. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/prof_insert.py +0 -0
  73. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/prof_point.py +0 -0
  74. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/prof_real.py +0 -0
  75. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/prof_scale.py +0 -0
  76. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/prof_scale_vec.py +0 -0
  77. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/prof_vec_parallel.py +0 -0
  78. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/resource_bench.py +0 -0
  79. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/resource_bench_2026-09_profile.json +0 -0
  80. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/resource_bench_v0.10.0.json +0 -0
  81. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/spatial_eval.py +0 -0
  82. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/text_eval.py +0 -0
  83. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/ts_eval.py +0 -0
  84. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/bench/vector_recall_eval.py +0 -0
  85. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/build.rs +0 -0
  86. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/e2e/e2e_workload.py +0 -0
  87. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/e2e/test_durability_kwarg.py +0 -0
  88. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/licenses/LICENSE +0 -0
  89. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/scripts/build_wheel.sh +0 -0
  90. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_backup.py +0 -0
  91. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_e2e_cli.py +0 -0
  92. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_e2e_functional.py +0 -0
  93. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_feature_selfcheck.py +0 -0
  94. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_fetch_arrays.py +0 -0
  95. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_fuzz_bigtable.py +0 -0
  96. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_fuzz_differential.py +0 -0
  97. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_insert_arrays.py +0 -0
  98. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_parallel_ab.py +0 -0
  99. {motedb_python-0.12.8 → motedb_python-0.13.0}/bindings/python/tests/test_smoke.py +0 -0
  100. {motedb_python-0.12.8 → motedb_python-0.13.0}/deny.toml +0 -0
  101. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/01-quick-start.md +0 -0
  102. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/02-installation.md +0 -0
  103. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/03-sql-operations.md +0 -0
  104. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/04-batch-operations.md +0 -0
  105. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/05-transactions.md +0 -0
  106. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/06-indexes-overview.md +0 -0
  107. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/07-column-index.md +0 -0
  108. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/08-vector-index.md +0 -0
  109. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/09-text-index.md +0 -0
  110. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/10-spatial-index.md +0 -0
  111. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/11-timestamp-index.md +0 -0
  112. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/12-performance.md +0 -0
  113. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/14-api-reference.md +0 -0
  114. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/15-best-practices.md +0 -0
  115. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/16-faq.md +0 -0
  116. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/17-hybrid-arrow.md +0 -0
  117. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/README.md +0 -0
  118. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/benchmark_methodology.md +0 -0
  119. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/paper/README.md +0 -0
  120. {motedb_python-0.12.8 → motedb_python-0.13.0}/docs/paper/motedb.tex +0 -0
  121. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_300k.rs +0 -0
  122. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_autocommit_lock.rs +0 -0
  123. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_disk.rs +0 -0
  124. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_exec_only.rs +0 -0
  125. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_insert_engine.rs +0 -0
  126. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_layer.rs +0 -0
  127. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_memory.rs +0 -0
  128. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_multimodal_vs_competitors.rs +0 -0
  129. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_point_read.rs +0 -0
  130. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_profile_hot.rs +0 -0
  131. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_scaling.rs +0 -0
  132. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_stability.rs +0 -0
  133. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/bench_vs_sqlite.rs +0 -0
  134. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/corruption_fuzz.rs +0 -0
  135. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/crud.rs +0 -0
  136. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/differential_fuzz.rs +0 -0
  137. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/hello_world.rs +0 -0
  138. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/join_differential_fuzz.rs +0 -0
  139. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/logging.rs +0 -0
  140. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/perf_smoke.rs +0 -0
  141. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/probe_filter_decomp.rs +0 -0
  142. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/probe_jemalloc.rs +0 -0
  143. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/probe_memory_source.rs +0 -0
  144. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/probe_tail_latency.rs +0 -0
  145. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/text_rank_probe.rs +0 -0
  146. {motedb_python-0.12.8 → motedb_python-0.13.0}/examples/vector_recall_real.rs +0 -0
  147. {motedb_python-0.12.8 → motedb_python-0.13.0}/licenses/LICENSE +0 -0
  148. {motedb_python-0.12.8 → motedb_python-0.13.0}/python/motedb/__init__.py +0 -0
  149. {motedb_python-0.12.8 → motedb_python-0.13.0}/scripts/Dockerfile.e2e +0 -0
  150. {motedb_python-0.12.8 → motedb_python-0.13.0}/scripts/compete.sh +0 -0
  151. {motedb_python-0.12.8 → motedb_python-0.13.0}/scripts/docker_e2e.sh +0 -0
  152. {motedb_python-0.12.8 → motedb_python-0.13.0}/scripts/repro_point_query_gap.sh +0 -0
  153. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/cache/mod.rs +0 -0
  154. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/cache/row_cache.rs +0 -0
  155. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/catalog/mod.rs +0 -0
  156. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/catalog/registry.rs +0 -0
  157. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/config.rs +0 -0
  158. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/doctor.rs +0 -0
  159. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/helpers.rs +0 -0
  160. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/index_metadata.rs +0 -0
  161. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/indexes/column.rs +0 -0
  162. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/indexes/dashmap_migration.md +0 -0
  163. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/indexes/ioctree.rs +0 -0
  164. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/indexes/mod.rs +0 -0
  165. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/indexes/timestamp.rs +0 -0
  166. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/indexes/vector.rs +0 -0
  167. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/mem_buffer.rs +0 -0
  168. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/mod.rs +0 -0
  169. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/pk_cache.rs +0 -0
  170. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/table.rs +0 -0
  171. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/timeseries.rs +0 -0
  172. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/database/transaction.rs +0 -0
  173. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/distance/cosine.rs +0 -0
  174. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/distance/euclidean.rs +0 -0
  175. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/distance/mod.rs +0 -0
  176. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/error.rs +0 -0
  177. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/ffi.rs +0 -0
  178. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/btree.rs +0 -0
  179. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/btree_generic.rs +0 -0
  180. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/builder.rs +0 -0
  181. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/column_value.rs +0 -0
  182. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/fresh_graph.rs +0 -0
  183. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/ioctree/leaf_store.rs +0 -0
  184. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/ioctree/mod.rs +0 -0
  185. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/ioctree/node.rs +0 -0
  186. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/ioctree/persistence.rs +0 -0
  187. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/ioctree/search.rs +0 -0
  188. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/mod.rs +0 -0
  189. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/primary_key.rs +0 -0
  190. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/text_dictionary.rs +0 -0
  191. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/text_encoding.rs +0 -0
  192. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/text_fts.rs +0 -0
  193. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/text_query.rs +0 -0
  194. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/text_types.rs +0 -0
  195. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/tokenizers.rs +0 -0
  196. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/vamana/config.rs +0 -0
  197. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/vamana/disk_graph.rs +0 -0
  198. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/vamana/diskann_index.rs +0 -0
  199. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/vamana/mod.rs +0 -0
  200. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/vamana/pruner.rs +0 -0
  201. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/vamana/sq8.rs +0 -0
  202. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/index/vamana/sq8_vectors.rs +0 -0
  203. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/platform_io.rs +0 -0
  204. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/executor/agg.rs +0 -0
  205. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/executor/join.rs +0 -0
  206. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/join/hash_join.rs +0 -0
  207. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/join/index_join.rs +0 -0
  208. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/join/mod.rs +0 -0
  209. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/mod.rs +0 -0
  210. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/optimizer.rs +0 -0
  211. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/row_converter.rs +0 -0
  212. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/token.rs +0 -0
  213. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/sql/vector_exec.rs +0 -0
  214. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/checksum.rs +0 -0
  215. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/col_segment/manifest.rs +0 -0
  216. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/col_segment/merge.rs +0 -0
  217. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/col_segment/mod.rs +0 -0
  218. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/columnar/column_encoding.rs +0 -0
  219. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/columnar/config.rs +0 -0
  220. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/columnar/gorilla.rs +0 -0
  221. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/columnar/mod.rs +0 -0
  222. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/columnar/segment.rs +0 -0
  223. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/columnar/segment_manager.rs +0 -0
  224. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/columnar/store.rs +0 -0
  225. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/columnar/write_buffer.rs +0 -0
  226. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/file_manager.rs +0 -0
  227. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/blobstore.rs +0 -0
  228. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/bloom.rs +0 -0
  229. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/compaction.rs +0 -0
  230. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/engine.rs +0 -0
  231. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/memtable.rs +0 -0
  232. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/merging_iterator.rs +0 -0
  233. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/mod.rs +0 -0
  234. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/sstable.rs +0 -0
  235. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/lsm/unified_memtable.rs +0 -0
  236. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/manifest/manifest.rs +0 -0
  237. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/manifest/mod.rs +0 -0
  238. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/manifest/version.rs +0 -0
  239. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/storage/mod.rs +0 -0
  240. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/txn/coordinator.rs +0 -0
  241. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/txn/lock_manager.rs +0 -0
  242. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/txn/mod.rs +0 -0
  243. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/txn/mvcc.rs +0 -0
  244. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/txn/recovery.rs +0 -0
  245. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/txn/version_store.rs +0 -0
  246. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/txn/wal.rs +0 -0
  247. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/types/comp_sum.rs +0 -0
  248. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/types/spatial.rs +0 -0
  249. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/types/tensor.rs +0 -0
  250. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/types/text.rs +0 -0
  251. {motedb_python-0.12.8 → motedb_python-0.13.0}/src/types/timestamp.rs +0 -0
  252. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/acid_test.rs +0 -0
  253. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_2m.rs +0 -0
  254. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_acid.rs +0 -0
  255. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_batch_ops.rs +0 -0
  256. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_compare.rs +0 -0
  257. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_comprehensive.rs +0 -0
  258. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_concurrent.rs +0 -0
  259. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_index_ops.rs +0 -0
  260. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_multimodal.rs +0 -0
  261. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_multimodal_full.rs +0 -0
  262. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_multimodal_ops.rs +0 -0
  263. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_perf_report.rs +0 -0
  264. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_quick_baseline.rs +0 -0
  265. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_release.rs +0 -0
  266. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_report.rs +0 -0
  267. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_resource.rs +0 -0
  268. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_sql_queries.rs +0 -0
  269. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_timeseries_index.rs +0 -0
  270. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_v060_report.rs +0 -0
  271. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_vs_sqlite_100k.rs +0 -0
  272. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/bench_vs_sqlite_v05.rs +0 -0
  273. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/common/mod.rs +0 -0
  274. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/durability_probe.rs +0 -0
  275. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/fts_probe.rs +0 -0
  276. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/perf_test.rs +0 -0
  277. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/repro_point_gap.rs +0 -0
  278. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/stress_300k.rs +0 -0
  279. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/stress_test.rs +0 -0
  280. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_acid_audit.rs +0 -0
  281. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_acid_comprehensive.rs +0 -0
  282. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_advanced_hunt.rs +0 -0
  283. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_api_correctness.rs +0 -0
  284. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_auto_checkpoint_segments.rs +0 -0
  285. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_backup.rs +0 -0
  286. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_btree_integrity.rs +0 -0
  287. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt.rs +0 -0
  288. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt2.rs +0 -0
  289. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt3.rs +0 -0
  290. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt4.rs +0 -0
  291. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt5.rs +0 -0
  292. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt6.rs +0 -0
  293. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt7.rs +0 -0
  294. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v10.rs +0 -0
  295. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v100.rs +0 -0
  296. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v101.rs +0 -0
  297. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v11.rs +0 -0
  298. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v12.rs +0 -0
  299. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v13.rs +0 -0
  300. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v14.rs +0 -0
  301. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v15.rs +0 -0
  302. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v16.rs +0 -0
  303. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v17_cte.rs +0 -0
  304. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v18.rs +0 -0
  305. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v19.rs +0 -0
  306. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v2.rs +0 -0
  307. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v20.rs +0 -0
  308. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v21.rs +0 -0
  309. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v22.rs +0 -0
  310. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v23.rs +0 -0
  311. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v24.rs +0 -0
  312. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v25.rs +0 -0
  313. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v26.rs +0 -0
  314. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v27.rs +0 -0
  315. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v28.rs +0 -0
  316. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v29.rs +0 -0
  317. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v3.rs +0 -0
  318. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v30.rs +0 -0
  319. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v31.rs +0 -0
  320. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v32.rs +0 -0
  321. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v33.rs +0 -0
  322. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v34.rs +0 -0
  323. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v35.rs +0 -0
  324. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v36.rs +0 -0
  325. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v38.rs +0 -0
  326. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v39.rs +0 -0
  327. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v4.rs +0 -0
  328. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v40.rs +0 -0
  329. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v43.rs +0 -0
  330. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v45.rs +0 -0
  331. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v48.rs +0 -0
  332. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v49.rs +0 -0
  333. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v5.rs +0 -0
  334. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v50.rs +0 -0
  335. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v51.rs +0 -0
  336. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v52.rs +0 -0
  337. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v53.rs +0 -0
  338. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v54.rs +0 -0
  339. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v55.rs +0 -0
  340. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v56.rs +0 -0
  341. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v57.rs +0 -0
  342. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v58.rs +0 -0
  343. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v59.rs +0 -0
  344. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v6.rs +0 -0
  345. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v60.rs +0 -0
  346. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v61.rs +0 -0
  347. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v62.rs +0 -0
  348. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v63.rs +0 -0
  349. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v64.rs +0 -0
  350. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v65.rs +0 -0
  351. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v66.rs +0 -0
  352. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v67.rs +0 -0
  353. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v68.rs +0 -0
  354. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v69.rs +0 -0
  355. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v7.rs +0 -0
  356. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v70.rs +0 -0
  357. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v71.rs +0 -0
  358. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v72.rs +0 -0
  359. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v73.rs +0 -0
  360. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v74.rs +0 -0
  361. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v75.rs +0 -0
  362. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v76.rs +0 -0
  363. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v77.rs +0 -0
  364. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v78.rs +0 -0
  365. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v79.rs +0 -0
  366. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v8.rs +0 -0
  367. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v80.rs +0 -0
  368. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v81.rs +0 -0
  369. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v82.rs +0 -0
  370. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v83.rs +0 -0
  371. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v84.rs +0 -0
  372. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v85.rs +0 -0
  373. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v86.rs +0 -0
  374. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v87.rs +0 -0
  375. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v88.rs +0 -0
  376. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v89.rs +0 -0
  377. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v9.rs +0 -0
  378. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v90.rs +0 -0
  379. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v91.rs +0 -0
  380. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v92.rs +0 -0
  381. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v93.rs +0 -0
  382. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v94.rs +0 -0
  383. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v95.rs +0 -0
  384. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v96.rs +0 -0
  385. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v97.rs +0 -0
  386. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v98.rs +0 -0
  387. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_bug_hunt_v99.rs +0 -0
  388. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_col_segment.rs +0 -0
  389. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_col_segment_fastpaths.rs +0 -0
  390. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_columnar.rs +0 -0
  391. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_columnar_acid.rs +0 -0
  392. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_compact_storage.rs +0 -0
  393. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_compaction_integrity.rs +0 -0
  394. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_compiled_where_semantics.rs +0 -0
  395. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_comprehensive.rs +0 -0
  396. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_comprehensive_audit.rs +0 -0
  397. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_concurrent_sql_features.rs +0 -0
  398. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_concurrent_stress.rs +0 -0
  399. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_corruption_recovery.rs +0 -0
  400. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_corruption_robustness.rs +0 -0
  401. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_crash_injection.rs +0 -0
  402. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_crash_recovery.rs +0 -0
  403. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_data_types.rs +0 -0
  404. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_db_path_hygiene.rs +0 -0
  405. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_deadlock_stress.rs +0 -0
  406. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_deep_edge.rs +0 -0
  407. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_delete_persist.rs +0 -0
  408. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_differential_correctness.rs +0 -0
  409. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_disk_bloat.rs +0 -0
  410. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_disk_usage.rs +0 -0
  411. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_doctor.rs +0 -0
  412. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_durability.rs +0 -0
  413. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_e2e_crash_and_stress.rs +0 -0
  414. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_edge_cases.rs +0 -0
  415. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_edge_semantics.rs +0 -0
  416. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_executemany.rs +0 -0
  417. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_exists_subquery.rs +0 -0
  418. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_explain.rs +0 -0
  419. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_extreme_hunt.rs +0 -0
  420. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_fast_paths.rs +0 -0
  421. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_fuzz_sql_combinations.rs +0 -0
  422. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_groupby_first_query.rs +0 -0
  423. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_hybrid_search.rs +0 -0
  424. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_index_maintenance.rs +0 -0
  425. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_index_reopen.rs +0 -0
  426. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_index_robustness.rs +0 -0
  427. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_indexed_query_semantics.rs +0 -0
  428. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_insert_engine.rs +0 -0
  429. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_insert_explicit_fastpath.rs +0 -0
  430. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_insert_paths_index_maintenance.rs +0 -0
  431. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_insert_select.rs +0 -0
  432. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_ioctree.rs +0 -0
  433. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_isolation_levels.rs +0 -0
  434. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_join_count_fold.rs +0 -0
  435. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_knn_parallel.rs +0 -0
  436. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_large_rows.rs +0 -0
  437. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_m5_mines.rs +0 -0
  438. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_memory_leak.rs +0 -0
  439. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_memory_linear.rs +0 -0
  440. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_multimodal.rs +0 -0
  441. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_multimodal_e2e.rs +0 -0
  442. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_mvcc_isolation.rs +0 -0
  443. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_mvcc_recovery.rs +0 -0
  444. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_no_bloat.rs +0 -0
  445. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_optimization_regression.rs +0 -0
  446. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_order_by_expr_keys.rs +0 -0
  447. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_parser_fuzz_regression.rs +0 -0
  448. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_performance_guarantees.rs +0 -0
  449. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_pk_change_semantics.rs +0 -0
  450. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_prepared_dml.rs +0 -0
  451. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_public_api.rs +0 -0
  452. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_query_equivalence.rs +0 -0
  453. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_range_count.rs +0 -0
  454. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_release_readiness.rs +0 -0
  455. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_repro12.rs +0 -0
  456. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_round12_optimizations.rs +0 -0
  457. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_round12b_edge.rs +0 -0
  458. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_round12c_e2e_bugs.rs +0 -0
  459. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_round13_bug_hunt.rs +0 -0
  460. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_row_api.rs +0 -0
  461. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_savepoint_window.rs +0 -0
  462. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_scalability.rs +0 -0
  463. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_scan_integrity.rs +0 -0
  464. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_semantic_edges.rs +0 -0
  465. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_spatial_index.rs +0 -0
  466. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_spatial_large_geometry.rs +0 -0
  467. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_spatial_sql_semantics.rs +0 -0
  468. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_advanced.rs +0 -0
  469. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_correctness.rs +0 -0
  470. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_correctness_part2.rs +0 -0
  471. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_ddl_features.rs +0 -0
  472. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_errors_edges.rs +0 -0
  473. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_functions.rs +0 -0
  474. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_groupby.rs +0 -0
  475. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_joins.rs +0 -0
  476. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_sql_scenarios.rs +0 -0
  477. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_storage_integrity.rs +0 -0
  478. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_stress.rs +0 -0
  479. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_stress_hunt.rs +0 -0
  480. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_text_ts_search_semantics.rs +0 -0
  481. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_timeseries_index.rs +0 -0
  482. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_timeseries_semantics.rs +0 -0
  483. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_timestamp_recovery.rs +0 -0
  484. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_transaction_semantics.rs +0 -0
  485. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_txn_ddl_and_nan_ordering.rs +0 -0
  486. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_update_perf.rs +0 -0
  487. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_upsert.rs +0 -0
  488. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_v050_features.rs +0 -0
  489. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_vec_m0.rs +0 -0
  490. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_vec_m4.rs +0 -0
  491. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_vector_column_read_paths.rs +0 -0
  492. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_vector_durability.rs +0 -0
  493. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_vector_index_recall.rs +0 -0
  494. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_vector_spatial_text.rs +0 -0
  495. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_vector_visibility.rs +0 -0
  496. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_wide_tables.rs +0 -0
  497. {motedb_python-0.12.8 → motedb_python-0.13.0}/tests/test_write_concurrency.rs +0 -0
@@ -33,3 +33,4 @@ benchmark_results/
33
33
  __pycache__/
34
34
  *.pyc
35
35
  bindings/python/dist/
36
+ _native.abi3.so
@@ -1,5 +1,104 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.13.0] — 2026-10-11
4
+
5
+ - **🔑 BLOB 类型(全链路)**: `payload BLOB` 列 — 第 8 个 ColumnType。
6
+ - 字面量: SQLite 兼容 `X'0aff00'`(奇数位/非 hex 报错); Python `bytes`/
7
+ `bytearray` 参数与取回; CLI 十六进制预览; 16 MiB 上限
8
+ - 存储: 复用 Text 段字节布局 + 独立 `ColumnTypeTag::Blob`(读侧按 schema
9
+ 包装 `Value::Blob`, 非 UTF-8 字节零损耗); row_format 变长编解码;
10
+ 非定长批/缓存/点查/扫描/缓冲各读路径补齐
11
+ - 语义: 字节等值(`=`/`IS NULL`)、`LENGTH(blob)`=字节数(SQLite 语义)
12
+ - **已知缺口(v0.13.0, 测试内注释标注)**: BLOB 列上的标量函数在部分
13
+ 执行器路径(含 VECTOR 混合表/`WHERE` 内函数)与 `ORDER BY` 输出下返回
14
+ NULL — 裸投影/等值/时间窗扫描/参数全稳
15
+ - **🔑 MCAP 机器人数据导入(具身工作流入场券)**:
16
+ - `motedb-cli import mcap <db> <file> [--include s] [--exclude s] [--prefix p]`
17
+ 与 Python `db.import_mcap(path, include=…, prefix=…, decode={topic: fn})`
18
+ - 每 topic 一表: `_uid INTEGER PRIMARY KEY`((channel<<40)|seq, 天然去重)、
19
+ `log_time/publish_time TIMESTAMP`(自动时间索引, ns→µs)、`data BLOB`
20
+ (原始消息字节)。解码边界在 Python 钩子(返回 dict → 类型化列, 可产
21
+ VECTOR 列) — 引擎不碰 ROS2 CDR/protobuf 语义
22
+ - 重放幂等: `INSERT OR IGNORE` + `_uid` 去重(kill -9 后重跑即续)
23
+ - 依赖: 官方 `mcap` crate 0.25(只读, 经 cargo-deny)
24
+ - **🔑 词法平方级修复(BLOB 测试实抓)**: `Lexer::current_utf8_char` 每字符
25
+ 对剩余输入跑 `str::from_utf8` 全量校验 — 任何 16 MiB 字符串/X'' 字面量
26
+ 解析耗时 ~1h; 改为仅解码首码点(decode_first_codepoint), 行为不变
27
+ - **🔑 RRF 混合检索 + bm25()/snippet()**:
28
+ - `FROM RRF((子查询1), (子查询2)[, k = n][, rrk = n][, w1..w4 = f])` 表
29
+ 函数: 2..=4 路排名列表的 Reciprocal Rank Fusion( score = Σ wᵢ/(rrk+rankᵢ),
30
+ 默认 k=10/rrk=60/均权), 输出按分数降序、值升序 tie-break(确定性可对拍),
31
+ 经 `rows_to_union_statement` 内联为派生表 → 外层 WHERE/ORDER BY 走常规机制
32
+ - `bm25(col)` 作为 `BM25_SCORE` 的别名接入 MATCH 快路径: `ORDER BY
33
+ bm25(body)` 与 `ORDER BY score DESC` 等价, LIMIT 下取 ranked top-k
34
+ - `snippet(text, query[, width=64])`: FTS5 风格摘录(首命中窗口 +
35
+ `<b>` 高亮 + 省略号), 纯字符索引实现
36
+ - **顺带修复**: FROM 为非普通表(JOIN/派生表/TableFn)且 ORDER BY+LIMIT
37
+ 的查询被 optimizer 的 "unknown" 占位表名绊倒(FullScan 计划臂现按
38
+ FROM 形状回退通用机制)
39
+ - 测试: test_rrf_hybrid.rs(3) — 引擎融合 vs 测试内参照公式逐 id 对拍、
40
+ 命名参数(w1=0 退化为单路)、形状错误、bm25 排序等价、snippet 窗口/高亮
41
+ - 文档对齐: README SQL Support 勘误(WITH RECURSIVE/窗口函数 0.12 已实现
42
+ 但写着不支持)+ BLOB/MCAP 能力与已知缺口如实标注
43
+ - 测试: test_blob_type.rs(4)、test_mcap_import.rs(合成 bag 回环: 布局/
44
+ 字节保真/钩子/过滤/重放幂等/重开)、bindings/python/tests/
45
+ test_mcap_import.py(固定 fixture bag 端到端)、examples/gen_test_bag.rs
46
+ - 顺延(下版): RRF 混合检索 + bm25()/snippet()(设计已定: docs/design/
47
+ 2026-10-embodied-roadmap.md); MCAP 断点续导清单表(`_mcap_imports`)
48
+
49
+ ## [0.12.9] — 2026-10-10
50
+
51
+ - **🔑 崩溃恢复审计三连修(0.12.8 stale 检测的边界补全)**:
52
+ - **重建不清空旧索引 → 统计膨胀**: 恢复重建在已加载的(可能滞后的)
53
+ 索引上**追加**而非重置 —— `batch_insert` 不幂等(total_docs 无条件
54
+ 自增、`PostingList::add` 对已有 doc 抬 TF), 一次重建即 total_docs
55
+ 翻倍 + 词频加倍(BM25 静默漂移, MATCH 成员正确所以压测没抓到)。
56
+ 修复: 重建前硬重置(删除 text_{name}.fts.d 与 dict.d 目录、新建空
57
+ 索引, 与 load 路径同构), 重建后 total_docs 精确等于活行探针实测
58
+ 80/80。回归: tests/test_fts_recovery_staleness.rs(UPDATE/DELETE/
59
+ NULL 混合 + 标记契约 + 恢复幂等)
60
+ - **NULL 文本行 → 每次全量重建**: NULL 不入索引是常态, 但 0.12.8 的
61
+ `indexed < table_rows` 谓词把含 NULL 的表判为永久 stale → 每次
62
+ open 全量重建(且触发上面的追加膨胀)。修复: 引入**干净关闭标记**
63
+ `fts_indexes.fresh` —— Drop 时 flush 全部文本索引(有界锁等待,
64
+ builder 卡死则跳过标记而非卡死 Drop)并原子写标记; open 起始消费
65
+ 标记, 标记在位 → 干净重开零校验零重建, 标记缺失(崩溃证据)→ 才
66
+ 跑计数校验。干净重开实测零重建
67
+ - **墓碑丢失方向 → MATCH 幻影**: crash 前 DELETE 的内存 tombstone
68
+ 未落盘 → 磁盘索引 total_docs **大于**表行数, 旧 `<` 谓词不触发
69
+ 重建 → posting 残留已删行, `COUNT(*) WHERE MATCH` 快路径按索引
70
+ 计数会多计。修复: 谓词改 `indexed != table_rows`(双向); 实证中
71
+ 干净关闭/WAL 回放通常兜底此窗口, `!=` 为纵深防御。回归:
72
+ test_crash_recovery.py 扩展奇数轮 kill@DELCKPT(删除后 checkpoint
73
+ 即杀), 断言 MATCH 与活行精确一致
74
+ - 详查结论: UPDATE 后多 segment 无同 key 双活(重建计数精确); 文本
75
+ 索引磁盘产物全部位于 fts.d/dict.d 两目录(重置完整)
76
+ - **WAL 截断点 durability 对齐(纵深防御)**: checkpoint_impl 与 vacuum
77
+ 在 `wal.checkpoint_all()` 截断前新增有界(2s try-write)FTS flush。
78
+ 原理: UPDATE 的 term 级墓碑(deleted_term_docs)纯内存, 计数谓词
79
+ (total_docs 净变化为零)天然看不见内容级漂移; 截断 WAL 会移除本可
80
+ 回放重放的索引变更。实测该窗口被 WAL 回放兜住(不 flush 崩溃结果
81
+ 也正确), 此为原理性对齐而非实测缺陷修复; 锁竞争时跳过(不劣于
82
+ 修复前)
83
+ - **🔑 在线 backup 竞态修复(全套件并行实抓, 上项改动的连带暴露)**:
84
+ backup 拷贝与"已 in-flight 的段交换"竞态时 NotFound 只重试 3×50ms
85
+ — 全套件并行负载下逃逸(backup_to 报 Io NotFound)。且 auto-checkpoint
86
+ 持 is_flushing 的临界区因上面的 FTS flush 变长, backup 的 CAS 冲突
87
+ 从"立即报错"概率上升。修复: 拷贝重试 3×50ms → 10×100ms; is_flushing
88
+ CAS 冲突内部重试 ~2.5s 后才上抛 "retry backup"。因果验证: 去 FTS
89
+ flush 的全套件 exit 0, 带上后 2/2 失败, 加宽重试后收敛
90
+ - **标记契约加固(二轮自查)**:
91
+ - **重置顺序(Windows 关键)**: `TextFTSIndex::new` 是 create-or-OPEN,
92
+ 会加载残留文件; 旧索引对象持着 fts.d 内文件句柄时 Windows 删除目录
93
+ 因共享冲突失败 → new() 会加载旧状态、追加膨胀复活。修复: 先从 map
94
+ 移除旧条目(释放句柄)再删目录再新建(macOS 上不可测, 代码序保证)
95
+ - **盖章归属与僵尸句柄**: close() 释放 flock 后对象可存活到 GC ——
96
+ 僵尸 Drop 在新实例 open 之后再盖章 = 给新会话中途状态谎报"干净"。
97
+ 修复: close() 在**持锁期间**(release_lock 之前)盖章(Python 主路径
98
+ 即时生效, 不依赖 GC); Drop 路径仅在仍持锁(从未 close)时盖章
99
+ - **标记持久化**: fsync 文件 + rename + unix 目录 fsync, 标记严格
100
+ 排在被 flush 的索引数据之后(断电不出现"标记在、数据不在")
101
+
3
102
  ## [0.12.8] — 2026-10-09
4
103
 
5
104
  - **🔑 kill -9 崩溃后全文索引静默滞后修复(PyPI 包压测实抓)**: 崩溃发生在
@@ -100,12 +100,24 @@ dependencies = [
100
100
  "rustversion",
101
101
  ]
102
102
 
103
+ [[package]]
104
+ name = "array-init"
105
+ version = "2.1.0"
106
+ source = "registry+https://github.com/rust-lang/crates.io-index"
107
+ checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc"
108
+
103
109
  [[package]]
104
110
  name = "autocfg"
105
111
  version = "1.5.1"
106
112
  source = "registry+https://github.com/rust-lang/crates.io-index"
107
113
  checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
108
114
 
115
+ [[package]]
116
+ name = "bimap"
117
+ version = "0.6.3"
118
+ source = "registry+https://github.com/rust-lang/crates.io-index"
119
+ checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7"
120
+
109
121
  [[package]]
110
122
  name = "bincode"
111
123
  version = "1.3.3"
@@ -115,6 +127,30 @@ dependencies = [
115
127
  "serde",
116
128
  ]
117
129
 
130
+ [[package]]
131
+ name = "binrw"
132
+ version = "0.15.2"
133
+ source = "registry+https://github.com/rust-lang/crates.io-index"
134
+ checksum = "6ad120d555272286c1017d25165ab8bd74806f13fc85b258484ec7e4ce75458f"
135
+ dependencies = [
136
+ "array-init",
137
+ "binrw_derive",
138
+ "bytemuck",
139
+ ]
140
+
141
+ [[package]]
142
+ name = "binrw_derive"
143
+ version = "0.15.2"
144
+ source = "registry+https://github.com/rust-lang/crates.io-index"
145
+ checksum = "6df92e0e9baae4dc82c7bad7715ca40c0a5c71539057bf2ea04a5c29c980410b"
146
+ dependencies = [
147
+ "either",
148
+ "owo-colors",
149
+ "proc-macro2",
150
+ "quote",
151
+ "syn",
152
+ ]
153
+
118
154
  [[package]]
119
155
  name = "bitflags"
120
156
  version = "1.3.2"
@@ -327,6 +363,40 @@ version = "0.2.4"
327
363
  source = "registry+https://github.com/rust-lang/crates.io-index"
328
364
  checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
329
365
 
366
+ [[package]]
367
+ name = "darling"
368
+ version = "0.21.3"
369
+ source = "registry+https://github.com/rust-lang/crates.io-index"
370
+ checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
371
+ dependencies = [
372
+ "darling_core",
373
+ "darling_macro",
374
+ ]
375
+
376
+ [[package]]
377
+ name = "darling_core"
378
+ version = "0.21.3"
379
+ source = "registry+https://github.com/rust-lang/crates.io-index"
380
+ checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
381
+ dependencies = [
382
+ "fnv",
383
+ "ident_case",
384
+ "proc-macro2",
385
+ "quote",
386
+ "syn",
387
+ ]
388
+
389
+ [[package]]
390
+ name = "darling_macro"
391
+ version = "0.21.3"
392
+ source = "registry+https://github.com/rust-lang/crates.io-index"
393
+ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
394
+ dependencies = [
395
+ "darling_core",
396
+ "quote",
397
+ "syn",
398
+ ]
399
+
330
400
  [[package]]
331
401
  name = "dary_heap"
332
402
  version = "0.3.9"
@@ -384,6 +454,27 @@ version = "1.16.0"
384
454
  source = "registry+https://github.com/rust-lang/crates.io-index"
385
455
  checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
386
456
 
457
+ [[package]]
458
+ name = "enumset"
459
+ version = "1.1.14"
460
+ source = "registry+https://github.com/rust-lang/crates.io-index"
461
+ checksum = "ccc5801fd11762e24d1e420d01d2ac518f2a2ca4329d4fbb6639f2412b6204e0"
462
+ dependencies = [
463
+ "enumset_derive",
464
+ ]
465
+
466
+ [[package]]
467
+ name = "enumset_derive"
468
+ version = "0.15.0"
469
+ source = "registry+https://github.com/rust-lang/crates.io-index"
470
+ checksum = "4bd536557b58c682b217b8fb199afdff47cd3eff260623f19e77074eb073d63a"
471
+ dependencies = [
472
+ "darling",
473
+ "proc-macro2",
474
+ "quote",
475
+ "syn",
476
+ ]
477
+
387
478
  [[package]]
388
479
  name = "env_filter"
389
480
  version = "2.0.0"
@@ -447,6 +538,12 @@ version = "0.1.9"
447
538
  source = "registry+https://github.com/rust-lang/crates.io-index"
448
539
  checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
449
540
 
541
+ [[package]]
542
+ name = "fnv"
543
+ version = "1.0.7"
544
+ source = "registry+https://github.com/rust-lang/crates.io-index"
545
+ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
546
+
450
547
  [[package]]
451
548
  name = "foldhash"
452
549
  version = "0.2.0"
@@ -571,6 +668,12 @@ version = "0.5.2"
571
668
  source = "registry+https://github.com/rust-lang/crates.io-index"
572
669
  checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
573
670
 
671
+ [[package]]
672
+ name = "ident_case"
673
+ version = "1.0.1"
674
+ source = "registry+https://github.com/rust-lang/crates.io-index"
675
+ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
676
+
574
677
  [[package]]
575
678
  name = "include-flate"
576
679
  version = "0.3.3"
@@ -783,6 +886,24 @@ dependencies = [
783
886
  "hashbrown 0.17.1",
784
887
  ]
785
888
 
889
+ [[package]]
890
+ name = "mcap"
891
+ version = "0.25.0"
892
+ source = "registry+https://github.com/rust-lang/crates.io-index"
893
+ checksum = "b215e79631de2a19ed76fda13cd52950c3057b487a2f41d9dc85c4079b969c40"
894
+ dependencies = [
895
+ "bimap",
896
+ "binrw",
897
+ "byteorder",
898
+ "crc32fast",
899
+ "enumset",
900
+ "log",
901
+ "num_cpus",
902
+ "paste",
903
+ "static_assertions",
904
+ "thiserror 2.0.18",
905
+ ]
906
+
786
907
  [[package]]
787
908
  name = "memchr"
788
909
  version = "2.8.2"
@@ -800,7 +921,7 @@ dependencies = [
800
921
 
801
922
  [[package]]
802
923
  name = "motedb"
803
- version = "0.12.8"
924
+ version = "0.13.0"
804
925
  dependencies = [
805
926
  "arc-swap",
806
927
  "bincode",
@@ -813,6 +934,7 @@ dependencies = [
813
934
  "libc",
814
935
  "log",
815
936
  "lru",
937
+ "mcap",
816
938
  "memmap2",
817
939
  "parking_lot",
818
940
  "phf",
@@ -848,6 +970,16 @@ dependencies = [
848
970
  "autocfg",
849
971
  ]
850
972
 
973
+ [[package]]
974
+ name = "num_cpus"
975
+ version = "1.17.0"
976
+ source = "registry+https://github.com/rust-lang/crates.io-index"
977
+ checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
978
+ dependencies = [
979
+ "hermit-abi",
980
+ "libc",
981
+ ]
982
+
851
983
  [[package]]
852
984
  name = "once_cell"
853
985
  version = "1.21.4"
@@ -866,6 +998,12 @@ version = "11.1.5"
866
998
  source = "registry+https://github.com/rust-lang/crates.io-index"
867
999
  checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
868
1000
 
1001
+ [[package]]
1002
+ name = "owo-colors"
1003
+ version = "4.4.0"
1004
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1005
+ checksum = "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8"
1006
+
869
1007
  [[package]]
870
1008
  name = "parking_lot"
871
1009
  version = "0.12.5"
@@ -1282,6 +1420,12 @@ version = "1.1.1"
1282
1420
  source = "registry+https://github.com/rust-lang/crates.io-index"
1283
1421
  checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b"
1284
1422
 
1423
+ [[package]]
1424
+ name = "static_assertions"
1425
+ version = "1.1.0"
1426
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1427
+ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
1428
+
1285
1429
  [[package]]
1286
1430
  name = "strsim"
1287
1431
  version = "0.11.1"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "motedb"
3
- version = "0.12.8"
3
+ version = "0.13.0"
4
4
  edition = "2021"
5
5
  rust-version = "1.87"
6
6
  description = "AI-native embedded multimodal database for embodied intelligence (robots, AR glasses, industrial arms)."
@@ -41,6 +41,7 @@ name = "motedb-cli"
41
41
  path = "src/bin/motedb-cli.rs"
42
42
 
43
43
  [dependencies]
44
+ mcap = { version = "0.25.0", default-features = false }
44
45
  # Memory-mapped file I/O (used by: spatial_hybrid, diskann/sst)
45
46
  memmap2 = "0.9"
46
47
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: motedb-python
3
- Version: 0.12.8
3
+ Version: 0.13.0
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Intended Audience :: Science/Research
@@ -160,6 +160,32 @@ See [`examples/logging.rs`](examples/logging.rs) for a runnable demo.
160
160
 
161
161
  - 🔍 **运维自检** — `db.doctor()` / `motedb-cli doctor <path>`:表布局、内存预算、索引覆盖率、磁盘占用逐项 PASS/WARN 报告。
162
162
 
163
+ ### Hybrid search (new in v0.13.1)
164
+
165
+ ```sql
166
+ SELECT id FROM RRF(
167
+ (SELECT id FROM docs WHERE MATCH(body, 'grasp failure') ORDER BY bm25(body) LIMIT 100),
168
+ (SELECT id FROM docs ORDER BY emb <-> ? LIMIT 100)
169
+ );
170
+ ```
171
+
172
+ One-SQL BM25 ⊕ vector fusion (Reciprocal Rank Fusion, `k`/`rrk`/`w1..w4`
173
+ tunable). `snippet(body, 'grasp failure', 80)` renders FTS5-style excerpts
174
+ with `<b>` highlights.
175
+
176
+ ### Robotics data on-ramp (new in v0.13)
177
+
178
+ ```bash
179
+ motedb import mcap robot.mote recording.mcap # CLI
180
+ # 或 Python:
181
+ db.import_mcap("recording.mcap", decode={"/joint_states": my_decoder})
182
+ ```
183
+
184
+ One table per topic (`_uid` PK, `log_time`/`publish_time` TIMESTAMP + auto
185
+ index, raw message `data BLOB`); a per-topic Python decode hook adds typed
186
+ columns (e.g. decoded `emb VECTOR`) at import time. Re-imports are no-ops
187
+ (`_uid` dedup) — crash-safe resumes.
188
+
163
189
  ### Multimodal
164
190
 
165
191
  | Modality | Index | Query |
@@ -253,8 +279,11 @@ EXISTS]` / `DROP INDEX`, `ALTER TABLE` (`ADD COLUMN`, `AUTO_INCREMENT = N`),
253
279
  - Aggregates: `COUNT`, `SUM`, `AVG`, `MIN`, `MAX`, `STDDEV`, `VARIANCE`
254
280
  - `UNION` / `UNION ALL`
255
281
  - `CASE WHEN ... THEN ... ELSE ... END`
256
- - `WITH` / Common Table Expressions (non-recursive; `WITH name [(cols)] AS
257
- (SELECT ...), ... <main query>`)
282
+ - `WITH` / Common Table Expressions incl. **`WITH RECURSIVE`** (semi-naive
283
+ fixed-point, UNION ALL bodies, chained CTEs)
284
+ - Window functions: `ROW_NUMBER`, `RANK`, `DENSE_RANK`, `NTILE`, `LAG`,
285
+ `LEAD`, `FIRST_VALUE`, `LAST_VALUE` + aggregates `OVER (PARTITION BY …
286
+ ORDER BY …)` (RANGE peer-group default frame)
258
287
  - Scalar functions: `UPPER`/`LOWER`/`LENGTH`/`TRIM`/`SUBSTR`/`REPLACE`/`CONCAT` (skips NULL args, SQLite/Postgres semantics; `||` propagates NULL)/`INSTR`/`COALESCE`/`ROUND` (binary-exact decimal rounding)/`ABS`/arithmetic
259
288
  - Multimodal predicates: `MATCH(col) AGAINST('q')` (BM25 ranked FTS;
260
289
  multi-word default is AND, explicit `a OR b` unions — FTS5-compatible),
@@ -263,9 +292,15 @@ EXISTS]` / `DROP INDEX`, `ALTER TABLE` (`ADD COLUMN`, `AUTO_INCREMENT = N`),
263
292
  - Transactions: `BEGIN` / `COMMIT` / `ROLLBACK`, savepoints, read-your-writes
264
293
  visibility inside a transaction
265
294
 
266
- **Not yet supported:** `WITH RECURSIVE` (the keyword is accepted but
267
- self-referencing CTEs error out), `DECIMAL`/`DATE`/`BLOB` types, window
268
- functions, and cross-statement server-side cursors.
295
+ **BLOB type:** `payload BLOB` columns with SQLite-style `X'0aff00'` hex
296
+ literals and Python `bytes` parameters (byte-exact round-trip, 16 MiB
297
+ cap). Known v0.13 gaps: scalar functions over BLOB columns
298
+ (`LENGTH(payload)`) and BLOB output under `ORDER BY` are not yet wired
299
+ through all executor paths — bare projection, equality (`WHERE payload =
300
+ X'…'`), time-window scans and parameters are solid.
301
+
302
+ **Not yet supported:** `DECIMAL`/`DATE` types, cross-statement server-side
303
+ cursors, and explicit window frames (`ROWS`/`RANGE` specs).
269
304
 
270
305
  ## Documentation
271
306