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.
Files changed (485) hide show
  1. motedb_python-0.12.6/.cargo/config.toml +8 -0
  2. motedb_python-0.12.6/.devcontainer/devcontainer.json +31 -0
  3. motedb_python-0.12.6/.github/workflows/ci.yml +293 -0
  4. motedb_python-0.12.6/.github/workflows/fuzz.yml +47 -0
  5. motedb_python-0.12.6/.github/workflows/perf-gate.yml +34 -0
  6. motedb_python-0.12.6/.github/workflows/publish.yml +95 -0
  7. motedb_python-0.12.6/.github/workflows/python-wheels.yml +204 -0
  8. motedb_python-0.12.6/.gitignore +35 -0
  9. motedb_python-0.12.6/.zcode/plans/plan-sess_abb2c954-05fb-477e-9d0a-3e22261e2449.md +44 -0
  10. motedb_python-0.12.6/.zcode/plans/plan-sess_b5937a06-b7bf-4471-9756-dbf2787b263c.md +32 -0
  11. motedb_python-0.12.6/CHANGELOG.md +1955 -0
  12. motedb_python-0.12.6/Cargo.lock +1567 -0
  13. motedb_python-0.12.6/Cargo.toml +177 -0
  14. motedb_python-0.12.6/LICENSE +21 -0
  15. motedb_python-0.12.6/Makefile +34 -0
  16. motedb_python-0.12.6/PKG-INFO +109 -0
  17. motedb_python-0.12.6/README.md +283 -0
  18. motedb_python-0.12.6/RELEASE_NOTES.md +20 -0
  19. motedb_python-0.12.6/bindings/python/Cargo.lock +1003 -0
  20. motedb_python-0.12.6/bindings/python/Cargo.toml +28 -0
  21. motedb_python-0.12.6/bindings/python/README.md +75 -0
  22. motedb_python-0.12.6/bindings/python/bench/README.md +1764 -0
  23. motedb_python-0.12.6/bindings/python/bench/adversarial_verify.py +428 -0
  24. motedb_python-0.12.6/bindings/python/bench/bench_edge.py +186 -0
  25. motedb_python-0.12.6/bindings/python/bench/compete_bench.py +314 -0
  26. motedb_python-0.12.6/bindings/python/bench/compete_fts_industry.py +141 -0
  27. motedb_python-0.12.6/bindings/python/bench/compete_scale.py +171 -0
  28. motedb_python-0.12.6/bindings/python/bench/compete_spatial_ts.py +247 -0
  29. motedb_python-0.12.6/bindings/python/bench/compete_vec_industry.py +171 -0
  30. motedb_python-0.12.6/bindings/python/bench/compete_writes.py +601 -0
  31. motedb_python-0.12.6/bindings/python/bench/fts_probe_once.py +46 -0
  32. motedb_python-0.12.6/bindings/python/bench/perf_ab.py +69 -0
  33. motedb_python-0.12.6/bindings/python/bench/perf_overall.py +453 -0
  34. motedb_python-0.12.6/bindings/python/bench/prof_ann.py +159 -0
  35. motedb_python-0.12.6/bindings/python/bench/prof_fts.py +190 -0
  36. motedb_python-0.12.6/bindings/python/bench/prof_insert.py +81 -0
  37. motedb_python-0.12.6/bindings/python/bench/prof_point.py +113 -0
  38. motedb_python-0.12.6/bindings/python/bench/prof_real.py +62 -0
  39. motedb_python-0.12.6/bindings/python/bench/prof_scale.py +169 -0
  40. motedb_python-0.12.6/bindings/python/bench/prof_scale_vec.py +117 -0
  41. motedb_python-0.12.6/bindings/python/bench/prof_vec_parallel.py +79 -0
  42. motedb_python-0.12.6/bindings/python/bench/resource_bench.py +333 -0
  43. motedb_python-0.12.6/bindings/python/bench/resource_bench_2026-09_profile.json +1 -0
  44. motedb_python-0.12.6/bindings/python/bench/resource_bench_v0.10.0.json +66 -0
  45. motedb_python-0.12.6/bindings/python/bench/spatial_eval.py +401 -0
  46. motedb_python-0.12.6/bindings/python/bench/text_eval.py +391 -0
  47. motedb_python-0.12.6/bindings/python/bench/ts_eval.py +247 -0
  48. motedb_python-0.12.6/bindings/python/bench/vector_recall_eval.py +383 -0
  49. motedb_python-0.12.6/bindings/python/build.rs +11 -0
  50. motedb_python-0.12.6/bindings/python/e2e/e2e_workload.py +607 -0
  51. motedb_python-0.12.6/bindings/python/e2e/test_durability_kwarg.py +44 -0
  52. motedb_python-0.12.6/bindings/python/licenses/LICENSE +21 -0
  53. motedb_python-0.12.6/bindings/python/scripts/build_wheel.sh +73 -0
  54. motedb_python-0.12.6/bindings/python/src/lib.rs +995 -0
  55. motedb_python-0.12.6/bindings/python/tests/test_backup.py +71 -0
  56. motedb_python-0.12.6/bindings/python/tests/test_e2e_cli.py +95 -0
  57. motedb_python-0.12.6/bindings/python/tests/test_e2e_functional.py +301 -0
  58. motedb_python-0.12.6/bindings/python/tests/test_feature_selfcheck.py +207 -0
  59. motedb_python-0.12.6/bindings/python/tests/test_fetch_arrays.py +121 -0
  60. motedb_python-0.12.6/bindings/python/tests/test_fuzz_bigtable.py +289 -0
  61. motedb_python-0.12.6/bindings/python/tests/test_fuzz_differential.py +347 -0
  62. motedb_python-0.12.6/bindings/python/tests/test_insert_arrays.py +123 -0
  63. motedb_python-0.12.6/bindings/python/tests/test_parallel_ab.py +128 -0
  64. motedb_python-0.12.6/bindings/python/tests/test_smoke.py +67 -0
  65. motedb_python-0.12.6/deny.toml +83 -0
  66. motedb_python-0.12.6/docs/01-quick-start.md +274 -0
  67. motedb_python-0.12.6/docs/02-installation.md +351 -0
  68. motedb_python-0.12.6/docs/03-sql-operations.md +570 -0
  69. motedb_python-0.12.6/docs/04-batch-operations.md +408 -0
  70. motedb_python-0.12.6/docs/05-transactions.md +103 -0
  71. motedb_python-0.12.6/docs/06-indexes-overview.md +375 -0
  72. motedb_python-0.12.6/docs/07-column-index.md +91 -0
  73. motedb_python-0.12.6/docs/08-vector-index.md +114 -0
  74. motedb_python-0.12.6/docs/09-text-index.md +100 -0
  75. motedb_python-0.12.6/docs/10-spatial-index.md +93 -0
  76. motedb_python-0.12.6/docs/11-timestamp-index.md +94 -0
  77. motedb_python-0.12.6/docs/12-performance.md +107 -0
  78. motedb_python-0.12.6/docs/13-data-types.md +116 -0
  79. motedb_python-0.12.6/docs/14-api-reference.md +759 -0
  80. motedb_python-0.12.6/docs/15-best-practices.md +70 -0
  81. motedb_python-0.12.6/docs/16-faq.md +56 -0
  82. motedb_python-0.12.6/docs/17-hybrid-arrow.md +50 -0
  83. motedb_python-0.12.6/docs/README.md +124 -0
  84. motedb_python-0.12.6/docs/benchmark_methodology.md +112 -0
  85. motedb_python-0.12.6/docs/paper/README.md +31 -0
  86. motedb_python-0.12.6/docs/paper/motedb.tex +382 -0
  87. motedb_python-0.12.6/examples/bench_300k.rs +177 -0
  88. motedb_python-0.12.6/examples/bench_autocommit_lock.rs +70 -0
  89. motedb_python-0.12.6/examples/bench_disk.rs +174 -0
  90. motedb_python-0.12.6/examples/bench_exec_only.rs +43 -0
  91. motedb_python-0.12.6/examples/bench_insert_engine.rs +116 -0
  92. motedb_python-0.12.6/examples/bench_layer.rs +67 -0
  93. motedb_python-0.12.6/examples/bench_memory.rs +269 -0
  94. motedb_python-0.12.6/examples/bench_multimodal_vs_competitors.rs +639 -0
  95. motedb_python-0.12.6/examples/bench_point_read.rs +63 -0
  96. motedb_python-0.12.6/examples/bench_profile_hot.rs +80 -0
  97. motedb_python-0.12.6/examples/bench_scaling.rs +207 -0
  98. motedb_python-0.12.6/examples/bench_stability.rs +133 -0
  99. motedb_python-0.12.6/examples/bench_vs_sqlite.rs +528 -0
  100. motedb_python-0.12.6/examples/corruption_fuzz.rs +177 -0
  101. motedb_python-0.12.6/examples/crud.rs +74 -0
  102. motedb_python-0.12.6/examples/differential_fuzz.rs +537 -0
  103. motedb_python-0.12.6/examples/hello_world.rs +42 -0
  104. motedb_python-0.12.6/examples/join_differential_fuzz.rs +336 -0
  105. motedb_python-0.12.6/examples/logging.rs +45 -0
  106. motedb_python-0.12.6/examples/perf_smoke.rs +101 -0
  107. motedb_python-0.12.6/examples/probe_filter_decomp.rs +76 -0
  108. motedb_python-0.12.6/examples/probe_jemalloc.rs +110 -0
  109. motedb_python-0.12.6/examples/probe_memory_source.rs +128 -0
  110. motedb_python-0.12.6/examples/probe_tail_latency.rs +161 -0
  111. motedb_python-0.12.6/examples/text_rank_probe.rs +91 -0
  112. motedb_python-0.12.6/examples/vector_recall_real.rs +182 -0
  113. motedb_python-0.12.6/licenses/LICENSE +21 -0
  114. motedb_python-0.12.6/pyproject.toml +62 -0
  115. motedb_python-0.12.6/python/motedb/__init__.py +76 -0
  116. motedb_python-0.12.6/scripts/Dockerfile.e2e +36 -0
  117. motedb_python-0.12.6/scripts/compete.sh +130 -0
  118. motedb_python-0.12.6/scripts/docker_e2e.sh +81 -0
  119. motedb_python-0.12.6/scripts/repro_point_query_gap.sh +44 -0
  120. motedb_python-0.12.6/src/api.rs +4087 -0
  121. motedb_python-0.12.6/src/bin/motedb-cli.rs +436 -0
  122. motedb_python-0.12.6/src/cache/mod.rs +5 -0
  123. motedb_python-0.12.6/src/cache/row_cache.rs +455 -0
  124. motedb_python-0.12.6/src/catalog/mod.rs +4 -0
  125. motedb_python-0.12.6/src/catalog/registry.rs +656 -0
  126. motedb_python-0.12.6/src/config.rs +824 -0
  127. motedb_python-0.12.6/src/database/core.rs +3057 -0
  128. motedb_python-0.12.6/src/database/crud.rs +4807 -0
  129. motedb_python-0.12.6/src/database/doctor.rs +338 -0
  130. motedb_python-0.12.6/src/database/helpers.rs +306 -0
  131. motedb_python-0.12.6/src/database/index_metadata.rs +347 -0
  132. motedb_python-0.12.6/src/database/indexes/column.rs +663 -0
  133. motedb_python-0.12.6/src/database/indexes/dashmap_migration.md +72 -0
  134. motedb_python-0.12.6/src/database/indexes/ioctree.rs +226 -0
  135. motedb_python-0.12.6/src/database/indexes/mod.rs +18 -0
  136. motedb_python-0.12.6/src/database/indexes/text.rs +361 -0
  137. motedb_python-0.12.6/src/database/indexes/timestamp.rs +328 -0
  138. motedb_python-0.12.6/src/database/indexes/vector.rs +473 -0
  139. motedb_python-0.12.6/src/database/mem_buffer.rs +629 -0
  140. motedb_python-0.12.6/src/database/mod.rs +46 -0
  141. motedb_python-0.12.6/src/database/persistence.rs +712 -0
  142. motedb_python-0.12.6/src/database/pk_cache.rs +194 -0
  143. motedb_python-0.12.6/src/database/table.rs +323 -0
  144. motedb_python-0.12.6/src/database/timeseries.rs +23 -0
  145. motedb_python-0.12.6/src/database/transaction.rs +546 -0
  146. motedb_python-0.12.6/src/distance/cosine.rs +767 -0
  147. motedb_python-0.12.6/src/distance/euclidean.rs +468 -0
  148. motedb_python-0.12.6/src/distance/mod.rs +103 -0
  149. motedb_python-0.12.6/src/error.rs +94 -0
  150. motedb_python-0.12.6/src/ffi.rs +110 -0
  151. motedb_python-0.12.6/src/index/btree.rs +1800 -0
  152. motedb_python-0.12.6/src/index/btree_generic.rs +2908 -0
  153. motedb_python-0.12.6/src/index/builder.rs +60 -0
  154. motedb_python-0.12.6/src/index/cached_index.rs +339 -0
  155. motedb_python-0.12.6/src/index/column_value.rs +1826 -0
  156. motedb_python-0.12.6/src/index/fresh_graph.rs +725 -0
  157. motedb_python-0.12.6/src/index/ioctree/leaf_store.rs +434 -0
  158. motedb_python-0.12.6/src/index/ioctree/mod.rs +491 -0
  159. motedb_python-0.12.6/src/index/ioctree/node.rs +188 -0
  160. motedb_python-0.12.6/src/index/ioctree/persistence.rs +465 -0
  161. motedb_python-0.12.6/src/index/ioctree/search.rs +252 -0
  162. motedb_python-0.12.6/src/index/mod.rs +29 -0
  163. motedb_python-0.12.6/src/index/primary_key.rs +264 -0
  164. motedb_python-0.12.6/src/index/text_dictionary.rs +466 -0
  165. motedb_python-0.12.6/src/index/text_encoding.rs +478 -0
  166. motedb_python-0.12.6/src/index/text_fts.rs +2727 -0
  167. motedb_python-0.12.6/src/index/text_query.rs +140 -0
  168. motedb_python-0.12.6/src/index/text_types.rs +1741 -0
  169. motedb_python-0.12.6/src/index/tokenizers.rs +370 -0
  170. motedb_python-0.12.6/src/index/vamana/config.rs +118 -0
  171. motedb_python-0.12.6/src/index/vamana/disk_graph.rs +1162 -0
  172. motedb_python-0.12.6/src/index/vamana/diskann_index.rs +2068 -0
  173. motedb_python-0.12.6/src/index/vamana/mod.rs +14 -0
  174. motedb_python-0.12.6/src/index/vamana/pruner.rs +197 -0
  175. motedb_python-0.12.6/src/index/vamana/sq8.rs +880 -0
  176. motedb_python-0.12.6/src/index/vamana/sq8_vectors.rs +868 -0
  177. motedb_python-0.12.6/src/lib.rs +225 -0
  178. motedb_python-0.12.6/src/platform_io.rs +64 -0
  179. motedb_python-0.12.6/src/sql/ast.rs +618 -0
  180. motedb_python-0.12.6/src/sql/evaluator.rs +3398 -0
  181. motedb_python-0.12.6/src/sql/executor/agg.rs +2661 -0
  182. motedb_python-0.12.6/src/sql/executor/join.rs +2957 -0
  183. motedb_python-0.12.6/src/sql/executor/mod.rs +25401 -0
  184. motedb_python-0.12.6/src/sql/executor/scan.rs +2731 -0
  185. motedb_python-0.12.6/src/sql/join/hash_join.rs +307 -0
  186. motedb_python-0.12.6/src/sql/join/index_join.rs +168 -0
  187. motedb_python-0.12.6/src/sql/join/mod.rs +6 -0
  188. motedb_python-0.12.6/src/sql/lexer.rs +640 -0
  189. motedb_python-0.12.6/src/sql/mod.rs +32 -0
  190. motedb_python-0.12.6/src/sql/optimizer.rs +1463 -0
  191. motedb_python-0.12.6/src/sql/parser.rs +3147 -0
  192. motedb_python-0.12.6/src/sql/row_converter.rs +361 -0
  193. motedb_python-0.12.6/src/sql/token.rs +268 -0
  194. motedb_python-0.12.6/src/sql/vector_exec.rs +3153 -0
  195. motedb_python-0.12.6/src/storage/checksum.rs +380 -0
  196. motedb_python-0.12.6/src/storage/col_segment/manifest.rs +216 -0
  197. motedb_python-0.12.6/src/storage/col_segment/merge.rs +274 -0
  198. motedb_python-0.12.6/src/storage/col_segment/mod.rs +23 -0
  199. motedb_python-0.12.6/src/storage/col_segment/segment.rs +972 -0
  200. motedb_python-0.12.6/src/storage/col_segment/store.rs +5393 -0
  201. motedb_python-0.12.6/src/storage/colbatch.rs +644 -0
  202. motedb_python-0.12.6/src/storage/columnar/column_encoding.rs +338 -0
  203. motedb_python-0.12.6/src/storage/columnar/config.rs +105 -0
  204. motedb_python-0.12.6/src/storage/columnar/gorilla.rs +826 -0
  205. motedb_python-0.12.6/src/storage/columnar/mod.rs +31 -0
  206. motedb_python-0.12.6/src/storage/columnar/segment.rs +1217 -0
  207. motedb_python-0.12.6/src/storage/columnar/segment_manager.rs +638 -0
  208. motedb_python-0.12.6/src/storage/columnar/store.rs +2720 -0
  209. motedb_python-0.12.6/src/storage/columnar/write_buffer.rs +718 -0
  210. motedb_python-0.12.6/src/storage/file_manager.rs +297 -0
  211. motedb_python-0.12.6/src/storage/lsm/blobstore.rs +584 -0
  212. motedb_python-0.12.6/src/storage/lsm/bloom.rs +314 -0
  213. motedb_python-0.12.6/src/storage/lsm/columnar.rs +4048 -0
  214. motedb_python-0.12.6/src/storage/lsm/compaction.rs +1316 -0
  215. motedb_python-0.12.6/src/storage/lsm/engine.rs +2494 -0
  216. motedb_python-0.12.6/src/storage/lsm/memtable.rs +345 -0
  217. motedb_python-0.12.6/src/storage/lsm/merging_iterator.rs +410 -0
  218. motedb_python-0.12.6/src/storage/lsm/mod.rs +432 -0
  219. motedb_python-0.12.6/src/storage/lsm/sstable.rs +2328 -0
  220. motedb_python-0.12.6/src/storage/lsm/unified_memtable.rs +805 -0
  221. motedb_python-0.12.6/src/storage/manifest/manifest.rs +353 -0
  222. motedb_python-0.12.6/src/storage/manifest/mod.rs +13 -0
  223. motedb_python-0.12.6/src/storage/manifest/version.rs +150 -0
  224. motedb_python-0.12.6/src/storage/mod.rs +19 -0
  225. motedb_python-0.12.6/src/storage/row_format.rs +2575 -0
  226. motedb_python-0.12.6/src/txn/coordinator.rs +1022 -0
  227. motedb_python-0.12.6/src/txn/lock_manager.rs +398 -0
  228. motedb_python-0.12.6/src/txn/mod.rs +14 -0
  229. motedb_python-0.12.6/src/txn/mvcc.rs +8 -0
  230. motedb_python-0.12.6/src/txn/recovery.rs +5 -0
  231. motedb_python-0.12.6/src/txn/version_store.rs +1024 -0
  232. motedb_python-0.12.6/src/txn/wal.rs +2894 -0
  233. motedb_python-0.12.6/src/types/comp_sum.rs +44 -0
  234. motedb_python-0.12.6/src/types/mod.rs +383 -0
  235. motedb_python-0.12.6/src/types/spatial.rs +307 -0
  236. motedb_python-0.12.6/src/types/table.rs +567 -0
  237. motedb_python-0.12.6/src/types/tensor.rs +114 -0
  238. motedb_python-0.12.6/src/types/text.rs +103 -0
  239. motedb_python-0.12.6/src/types/timestamp.rs +181 -0
  240. motedb_python-0.12.6/tests/acid_test.rs +770 -0
  241. motedb_python-0.12.6/tests/bench_2m.rs +276 -0
  242. motedb_python-0.12.6/tests/bench_acid.rs +718 -0
  243. motedb_python-0.12.6/tests/bench_batch_ops.rs +677 -0
  244. motedb_python-0.12.6/tests/bench_compare.rs +1167 -0
  245. motedb_python-0.12.6/tests/bench_comprehensive.rs +984 -0
  246. motedb_python-0.12.6/tests/bench_concurrent.rs +729 -0
  247. motedb_python-0.12.6/tests/bench_index_ops.rs +632 -0
  248. motedb_python-0.12.6/tests/bench_multimodal.rs +559 -0
  249. motedb_python-0.12.6/tests/bench_multimodal_full.rs +618 -0
  250. motedb_python-0.12.6/tests/bench_multimodal_ops.rs +482 -0
  251. motedb_python-0.12.6/tests/bench_perf_report.rs +131 -0
  252. motedb_python-0.12.6/tests/bench_quick_baseline.rs +163 -0
  253. motedb_python-0.12.6/tests/bench_release.rs +395 -0
  254. motedb_python-0.12.6/tests/bench_report.rs +649 -0
  255. motedb_python-0.12.6/tests/bench_resource.rs +678 -0
  256. motedb_python-0.12.6/tests/bench_sql_queries.rs +780 -0
  257. motedb_python-0.12.6/tests/bench_timeseries_index.rs +299 -0
  258. motedb_python-0.12.6/tests/bench_v060_report.rs +617 -0
  259. motedb_python-0.12.6/tests/bench_vs_sqlite_100k.rs +423 -0
  260. motedb_python-0.12.6/tests/bench_vs_sqlite_v05.rs +357 -0
  261. motedb_python-0.12.6/tests/common/mod.rs +150 -0
  262. motedb_python-0.12.6/tests/durability_probe.rs +48 -0
  263. motedb_python-0.12.6/tests/fts_probe.rs +61 -0
  264. motedb_python-0.12.6/tests/perf_test.rs +430 -0
  265. motedb_python-0.12.6/tests/repro_point_gap.rs +91 -0
  266. motedb_python-0.12.6/tests/stress_300k.rs +668 -0
  267. motedb_python-0.12.6/tests/stress_test.rs +522 -0
  268. motedb_python-0.12.6/tests/test_acid_audit.rs +508 -0
  269. motedb_python-0.12.6/tests/test_acid_comprehensive.rs +944 -0
  270. motedb_python-0.12.6/tests/test_advanced_hunt.rs +493 -0
  271. motedb_python-0.12.6/tests/test_api_correctness.rs +325 -0
  272. motedb_python-0.12.6/tests/test_auto_checkpoint_segments.rs +86 -0
  273. motedb_python-0.12.6/tests/test_backup.rs +226 -0
  274. motedb_python-0.12.6/tests/test_btree_integrity.rs +197 -0
  275. motedb_python-0.12.6/tests/test_bug_hunt.rs +940 -0
  276. motedb_python-0.12.6/tests/test_bug_hunt2.rs +752 -0
  277. motedb_python-0.12.6/tests/test_bug_hunt3.rs +224 -0
  278. motedb_python-0.12.6/tests/test_bug_hunt4.rs +255 -0
  279. motedb_python-0.12.6/tests/test_bug_hunt5.rs +1201 -0
  280. motedb_python-0.12.6/tests/test_bug_hunt6.rs +384 -0
  281. motedb_python-0.12.6/tests/test_bug_hunt7.rs +359 -0
  282. motedb_python-0.12.6/tests/test_bug_hunt_v10.rs +499 -0
  283. motedb_python-0.12.6/tests/test_bug_hunt_v100.rs +282 -0
  284. motedb_python-0.12.6/tests/test_bug_hunt_v101.rs +532 -0
  285. motedb_python-0.12.6/tests/test_bug_hunt_v11.rs +572 -0
  286. motedb_python-0.12.6/tests/test_bug_hunt_v12.rs +335 -0
  287. motedb_python-0.12.6/tests/test_bug_hunt_v13.rs +557 -0
  288. motedb_python-0.12.6/tests/test_bug_hunt_v14.rs +396 -0
  289. motedb_python-0.12.6/tests/test_bug_hunt_v15.rs +477 -0
  290. motedb_python-0.12.6/tests/test_bug_hunt_v16.rs +523 -0
  291. motedb_python-0.12.6/tests/test_bug_hunt_v17_cte.rs +673 -0
  292. motedb_python-0.12.6/tests/test_bug_hunt_v18.rs +802 -0
  293. motedb_python-0.12.6/tests/test_bug_hunt_v19.rs +615 -0
  294. motedb_python-0.12.6/tests/test_bug_hunt_v2.rs +595 -0
  295. motedb_python-0.12.6/tests/test_bug_hunt_v20.rs +590 -0
  296. motedb_python-0.12.6/tests/test_bug_hunt_v21.rs +544 -0
  297. motedb_python-0.12.6/tests/test_bug_hunt_v22.rs +512 -0
  298. motedb_python-0.12.6/tests/test_bug_hunt_v23.rs +566 -0
  299. motedb_python-0.12.6/tests/test_bug_hunt_v24.rs +562 -0
  300. motedb_python-0.12.6/tests/test_bug_hunt_v25.rs +1004 -0
  301. motedb_python-0.12.6/tests/test_bug_hunt_v26.rs +468 -0
  302. motedb_python-0.12.6/tests/test_bug_hunt_v27.rs +720 -0
  303. motedb_python-0.12.6/tests/test_bug_hunt_v28.rs +712 -0
  304. motedb_python-0.12.6/tests/test_bug_hunt_v29.rs +728 -0
  305. motedb_python-0.12.6/tests/test_bug_hunt_v3.rs +512 -0
  306. motedb_python-0.12.6/tests/test_bug_hunt_v30.rs +1035 -0
  307. motedb_python-0.12.6/tests/test_bug_hunt_v31.rs +390 -0
  308. motedb_python-0.12.6/tests/test_bug_hunt_v32.rs +246 -0
  309. motedb_python-0.12.6/tests/test_bug_hunt_v33.rs +264 -0
  310. motedb_python-0.12.6/tests/test_bug_hunt_v34.rs +188 -0
  311. motedb_python-0.12.6/tests/test_bug_hunt_v35.rs +235 -0
  312. motedb_python-0.12.6/tests/test_bug_hunt_v36.rs +244 -0
  313. motedb_python-0.12.6/tests/test_bug_hunt_v38.rs +210 -0
  314. motedb_python-0.12.6/tests/test_bug_hunt_v39.rs +205 -0
  315. motedb_python-0.12.6/tests/test_bug_hunt_v4.rs +512 -0
  316. motedb_python-0.12.6/tests/test_bug_hunt_v40.rs +142 -0
  317. motedb_python-0.12.6/tests/test_bug_hunt_v43.rs +113 -0
  318. motedb_python-0.12.6/tests/test_bug_hunt_v45.rs +378 -0
  319. motedb_python-0.12.6/tests/test_bug_hunt_v48.rs +117 -0
  320. motedb_python-0.12.6/tests/test_bug_hunt_v49.rs +290 -0
  321. motedb_python-0.12.6/tests/test_bug_hunt_v5.rs +548 -0
  322. motedb_python-0.12.6/tests/test_bug_hunt_v50.rs +196 -0
  323. motedb_python-0.12.6/tests/test_bug_hunt_v51.rs +274 -0
  324. motedb_python-0.12.6/tests/test_bug_hunt_v52.rs +361 -0
  325. motedb_python-0.12.6/tests/test_bug_hunt_v53.rs +286 -0
  326. motedb_python-0.12.6/tests/test_bug_hunt_v54.rs +387 -0
  327. motedb_python-0.12.6/tests/test_bug_hunt_v55.rs +347 -0
  328. motedb_python-0.12.6/tests/test_bug_hunt_v56.rs +230 -0
  329. motedb_python-0.12.6/tests/test_bug_hunt_v57.rs +517 -0
  330. motedb_python-0.12.6/tests/test_bug_hunt_v58.rs +457 -0
  331. motedb_python-0.12.6/tests/test_bug_hunt_v59.rs +507 -0
  332. motedb_python-0.12.6/tests/test_bug_hunt_v6.rs +441 -0
  333. motedb_python-0.12.6/tests/test_bug_hunt_v60.rs +645 -0
  334. motedb_python-0.12.6/tests/test_bug_hunt_v61.rs +350 -0
  335. motedb_python-0.12.6/tests/test_bug_hunt_v62.rs +404 -0
  336. motedb_python-0.12.6/tests/test_bug_hunt_v63.rs +504 -0
  337. motedb_python-0.12.6/tests/test_bug_hunt_v64.rs +415 -0
  338. motedb_python-0.12.6/tests/test_bug_hunt_v65.rs +358 -0
  339. motedb_python-0.12.6/tests/test_bug_hunt_v66.rs +403 -0
  340. motedb_python-0.12.6/tests/test_bug_hunt_v67.rs +281 -0
  341. motedb_python-0.12.6/tests/test_bug_hunt_v68.rs +381 -0
  342. motedb_python-0.12.6/tests/test_bug_hunt_v69.rs +366 -0
  343. motedb_python-0.12.6/tests/test_bug_hunt_v7.rs +387 -0
  344. motedb_python-0.12.6/tests/test_bug_hunt_v70.rs +333 -0
  345. motedb_python-0.12.6/tests/test_bug_hunt_v71.rs +319 -0
  346. motedb_python-0.12.6/tests/test_bug_hunt_v72.rs +447 -0
  347. motedb_python-0.12.6/tests/test_bug_hunt_v73.rs +370 -0
  348. motedb_python-0.12.6/tests/test_bug_hunt_v74.rs +343 -0
  349. motedb_python-0.12.6/tests/test_bug_hunt_v75.rs +442 -0
  350. motedb_python-0.12.6/tests/test_bug_hunt_v76.rs +438 -0
  351. motedb_python-0.12.6/tests/test_bug_hunt_v77.rs +397 -0
  352. motedb_python-0.12.6/tests/test_bug_hunt_v78.rs +402 -0
  353. motedb_python-0.12.6/tests/test_bug_hunt_v79.rs +460 -0
  354. motedb_python-0.12.6/tests/test_bug_hunt_v8.rs +562 -0
  355. motedb_python-0.12.6/tests/test_bug_hunt_v80.rs +467 -0
  356. motedb_python-0.12.6/tests/test_bug_hunt_v81.rs +434 -0
  357. motedb_python-0.12.6/tests/test_bug_hunt_v82.rs +438 -0
  358. motedb_python-0.12.6/tests/test_bug_hunt_v83.rs +445 -0
  359. motedb_python-0.12.6/tests/test_bug_hunt_v84.rs +471 -0
  360. motedb_python-0.12.6/tests/test_bug_hunt_v85.rs +406 -0
  361. motedb_python-0.12.6/tests/test_bug_hunt_v86.rs +557 -0
  362. motedb_python-0.12.6/tests/test_bug_hunt_v87.rs +507 -0
  363. motedb_python-0.12.6/tests/test_bug_hunt_v88.rs +378 -0
  364. motedb_python-0.12.6/tests/test_bug_hunt_v89.rs +481 -0
  365. motedb_python-0.12.6/tests/test_bug_hunt_v9.rs +431 -0
  366. motedb_python-0.12.6/tests/test_bug_hunt_v90.rs +319 -0
  367. motedb_python-0.12.6/tests/test_bug_hunt_v91.rs +452 -0
  368. motedb_python-0.12.6/tests/test_bug_hunt_v92.rs +471 -0
  369. motedb_python-0.12.6/tests/test_bug_hunt_v93.rs +410 -0
  370. motedb_python-0.12.6/tests/test_bug_hunt_v94.rs +353 -0
  371. motedb_python-0.12.6/tests/test_bug_hunt_v95.rs +458 -0
  372. motedb_python-0.12.6/tests/test_bug_hunt_v96.rs +460 -0
  373. motedb_python-0.12.6/tests/test_bug_hunt_v97.rs +464 -0
  374. motedb_python-0.12.6/tests/test_bug_hunt_v98.rs +445 -0
  375. motedb_python-0.12.6/tests/test_bug_hunt_v99.rs +489 -0
  376. motedb_python-0.12.6/tests/test_col_segment.rs +188 -0
  377. motedb_python-0.12.6/tests/test_col_segment_fastpaths.rs +358 -0
  378. motedb_python-0.12.6/tests/test_columnar.rs +233 -0
  379. motedb_python-0.12.6/tests/test_columnar_acid.rs +354 -0
  380. motedb_python-0.12.6/tests/test_compact_storage.rs +104 -0
  381. motedb_python-0.12.6/tests/test_compaction_integrity.rs +947 -0
  382. motedb_python-0.12.6/tests/test_compiled_where_semantics.rs +162 -0
  383. motedb_python-0.12.6/tests/test_comprehensive.rs +1180 -0
  384. motedb_python-0.12.6/tests/test_comprehensive_audit.rs +608 -0
  385. motedb_python-0.12.6/tests/test_concurrent_sql_features.rs +213 -0
  386. motedb_python-0.12.6/tests/test_concurrent_stress.rs +209 -0
  387. motedb_python-0.12.6/tests/test_corruption_recovery.rs +102 -0
  388. motedb_python-0.12.6/tests/test_corruption_robustness.rs +149 -0
  389. motedb_python-0.12.6/tests/test_crash_injection.rs +972 -0
  390. motedb_python-0.12.6/tests/test_crash_recovery.rs +342 -0
  391. motedb_python-0.12.6/tests/test_data_types.rs +590 -0
  392. motedb_python-0.12.6/tests/test_db_path_hygiene.rs +73 -0
  393. motedb_python-0.12.6/tests/test_deadlock_stress.rs +316 -0
  394. motedb_python-0.12.6/tests/test_deep_edge.rs +634 -0
  395. motedb_python-0.12.6/tests/test_delete_persist.rs +79 -0
  396. motedb_python-0.12.6/tests/test_differential_correctness.rs +364 -0
  397. motedb_python-0.12.6/tests/test_disk_bloat.rs +138 -0
  398. motedb_python-0.12.6/tests/test_disk_usage.rs +166 -0
  399. motedb_python-0.12.6/tests/test_doctor.rs +132 -0
  400. motedb_python-0.12.6/tests/test_durability.rs +511 -0
  401. motedb_python-0.12.6/tests/test_e2e_crash_and_stress.rs +741 -0
  402. motedb_python-0.12.6/tests/test_edge_cases.rs +220 -0
  403. motedb_python-0.12.6/tests/test_edge_semantics.rs +461 -0
  404. motedb_python-0.12.6/tests/test_executemany.rs +120 -0
  405. motedb_python-0.12.6/tests/test_exists_subquery.rs +126 -0
  406. motedb_python-0.12.6/tests/test_explain.rs +109 -0
  407. motedb_python-0.12.6/tests/test_extreme_hunt.rs +544 -0
  408. motedb_python-0.12.6/tests/test_fast_paths.rs +1670 -0
  409. motedb_python-0.12.6/tests/test_fuzz_sql_combinations.rs +344 -0
  410. motedb_python-0.12.6/tests/test_groupby_first_query.rs +76 -0
  411. motedb_python-0.12.6/tests/test_hybrid_search.rs +322 -0
  412. motedb_python-0.12.6/tests/test_index_maintenance.rs +395 -0
  413. motedb_python-0.12.6/tests/test_index_reopen.rs +257 -0
  414. motedb_python-0.12.6/tests/test_index_robustness.rs +443 -0
  415. motedb_python-0.12.6/tests/test_indexed_query_semantics.rs +368 -0
  416. motedb_python-0.12.6/tests/test_insert_engine.rs +187 -0
  417. motedb_python-0.12.6/tests/test_insert_explicit_fastpath.rs +157 -0
  418. motedb_python-0.12.6/tests/test_insert_paths_index_maintenance.rs +233 -0
  419. motedb_python-0.12.6/tests/test_insert_select.rs +250 -0
  420. motedb_python-0.12.6/tests/test_ioctree.rs +579 -0
  421. motedb_python-0.12.6/tests/test_isolation_levels.rs +180 -0
  422. motedb_python-0.12.6/tests/test_join_count_fold.rs +205 -0
  423. motedb_python-0.12.6/tests/test_knn_parallel.rs +151 -0
  424. motedb_python-0.12.6/tests/test_large_rows.rs +150 -0
  425. motedb_python-0.12.6/tests/test_m5_mines.rs +132 -0
  426. motedb_python-0.12.6/tests/test_memory_leak.rs +244 -0
  427. motedb_python-0.12.6/tests/test_memory_linear.rs +269 -0
  428. motedb_python-0.12.6/tests/test_multimodal.rs +388 -0
  429. motedb_python-0.12.6/tests/test_multimodal_e2e.rs +940 -0
  430. motedb_python-0.12.6/tests/test_mvcc_isolation.rs +235 -0
  431. motedb_python-0.12.6/tests/test_mvcc_recovery.rs +516 -0
  432. motedb_python-0.12.6/tests/test_no_bloat.rs +363 -0
  433. motedb_python-0.12.6/tests/test_optimization_regression.rs +744 -0
  434. motedb_python-0.12.6/tests/test_order_by_expr_keys.rs +235 -0
  435. motedb_python-0.12.6/tests/test_parser_fuzz_regression.rs +54 -0
  436. motedb_python-0.12.6/tests/test_performance_guarantees.rs +218 -0
  437. motedb_python-0.12.6/tests/test_pk_change_semantics.rs +142 -0
  438. motedb_python-0.12.6/tests/test_prepared_dml.rs +178 -0
  439. motedb_python-0.12.6/tests/test_public_api.rs +390 -0
  440. motedb_python-0.12.6/tests/test_query_equivalence.rs +263 -0
  441. motedb_python-0.12.6/tests/test_range_count.rs +93 -0
  442. motedb_python-0.12.6/tests/test_release_readiness.rs +827 -0
  443. motedb_python-0.12.6/tests/test_repro12.rs +25 -0
  444. motedb_python-0.12.6/tests/test_round12_optimizations.rs +775 -0
  445. motedb_python-0.12.6/tests/test_round12b_edge.rs +184 -0
  446. motedb_python-0.12.6/tests/test_round12c_e2e_bugs.rs +198 -0
  447. motedb_python-0.12.6/tests/test_round13_bug_hunt.rs +683 -0
  448. motedb_python-0.12.6/tests/test_row_api.rs +343 -0
  449. motedb_python-0.12.6/tests/test_savepoint_window.rs +141 -0
  450. motedb_python-0.12.6/tests/test_scalability.rs +243 -0
  451. motedb_python-0.12.6/tests/test_scan_integrity.rs +113 -0
  452. motedb_python-0.12.6/tests/test_semantic_edges.rs +491 -0
  453. motedb_python-0.12.6/tests/test_spatial_index.rs +120 -0
  454. motedb_python-0.12.6/tests/test_spatial_large_geometry.rs +90 -0
  455. motedb_python-0.12.6/tests/test_spatial_sql_semantics.rs +292 -0
  456. motedb_python-0.12.6/tests/test_sql_advanced.rs +793 -0
  457. motedb_python-0.12.6/tests/test_sql_correctness.rs +1524 -0
  458. motedb_python-0.12.6/tests/test_sql_correctness_part2.rs +1074 -0
  459. motedb_python-0.12.6/tests/test_sql_ddl_features.rs +373 -0
  460. motedb_python-0.12.6/tests/test_sql_errors_edges.rs +565 -0
  461. motedb_python-0.12.6/tests/test_sql_functions.rs +436 -0
  462. motedb_python-0.12.6/tests/test_sql_groupby.rs +277 -0
  463. motedb_python-0.12.6/tests/test_sql_joins.rs +234 -0
  464. motedb_python-0.12.6/tests/test_sql_scenarios.rs +480 -0
  465. motedb_python-0.12.6/tests/test_storage_integrity.rs +375 -0
  466. motedb_python-0.12.6/tests/test_stress.rs +168 -0
  467. motedb_python-0.12.6/tests/test_stress_hunt.rs +628 -0
  468. motedb_python-0.12.6/tests/test_text_ts_search_semantics.rs +1104 -0
  469. motedb_python-0.12.6/tests/test_timeseries_index.rs +873 -0
  470. motedb_python-0.12.6/tests/test_timeseries_semantics.rs +367 -0
  471. motedb_python-0.12.6/tests/test_timestamp_recovery.rs +65 -0
  472. motedb_python-0.12.6/tests/test_transaction_semantics.rs +817 -0
  473. motedb_python-0.12.6/tests/test_txn_ddl_and_nan_ordering.rs +175 -0
  474. motedb_python-0.12.6/tests/test_update_perf.rs +236 -0
  475. motedb_python-0.12.6/tests/test_upsert.rs +367 -0
  476. motedb_python-0.12.6/tests/test_v050_features.rs +494 -0
  477. motedb_python-0.12.6/tests/test_vec_m0.rs +564 -0
  478. motedb_python-0.12.6/tests/test_vec_m4.rs +199 -0
  479. motedb_python-0.12.6/tests/test_vector_column_read_paths.rs +105 -0
  480. motedb_python-0.12.6/tests/test_vector_durability.rs +453 -0
  481. motedb_python-0.12.6/tests/test_vector_index_recall.rs +226 -0
  482. motedb_python-0.12.6/tests/test_vector_spatial_text.rs +285 -0
  483. motedb_python-0.12.6/tests/test_vector_visibility.rs +135 -0
  484. motedb_python-0.12.6/tests/test_wide_tables.rs +304 -0
  485. 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