pyturso 0.4.0rc15__tar.gz → 0.4.0rc17__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 (276) hide show
  1. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/Cargo.lock +33 -41
  2. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/Cargo.toml +20 -20
  3. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/PKG-INFO +1 -1
  4. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/py-bindings-sync.mdx +1 -1
  5. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/src/turso_sync.rs +6 -6
  6. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/tests/test_database.py +17 -0
  7. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/tests/test_database_sync.py +2 -2
  8. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/tests/test_database_sync_aio.py +2 -2
  9. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/lib_sync.py +2 -2
  10. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/error.rs +2 -0
  11. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/lib.rs +17 -0
  12. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/mvcc/cursor.rs +10 -5
  13. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/mvcc/database/tests.rs +34 -0
  14. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/pager.rs +94 -43
  15. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/sqlite3_ondisk.rs +122 -1
  16. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/wal.rs +8 -1
  17. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/integrity_check.rs +1 -0
  18. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/bloom_filter.rs +70 -27
  19. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/execute.rs +5 -1
  20. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/hash_table.rs +50 -3
  21. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/mod.rs +45 -3
  22. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/test.rs +0 -1
  23. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/database_sync_lazy_storage.rs +10 -10
  24. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/types.rs +1 -1
  25. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/src/bindings.rs +4 -5
  26. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/src/rsapi.rs +2 -2
  27. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/turso_sync.h +2 -2
  28. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/lib_sync.py +2 -2
  29. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/Cargo.toml +0 -0
  30. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/README.md +0 -0
  31. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/build.rs +0 -0
  32. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/example.py +0 -0
  33. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/py-bindings-db-aio.mdx +0 -0
  34. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/py-bindings-db.mdx +0 -0
  35. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/py-bindings-sync-aio.mdx +0 -0
  36. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/py-bindings-tests-aio.mdx +0 -0
  37. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/py-bindings-tests.mdx +0 -0
  38. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/requirements-dev.txt +0 -0
  39. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/requirements.txt +0 -0
  40. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/src/lib.rs +0 -0
  41. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/src/turso.rs +0 -0
  42. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/tests/__init__.py +0 -0
  43. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/tests/test_database_aio.py +0 -0
  44. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/__init__.py +0 -0
  45. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/aio/__init__.py +0 -0
  46. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/aio/sync/__init__.py +0 -0
  47. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/lib.py +0 -0
  48. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/lib_aio.py +0 -0
  49. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/lib_sync_aio.py +0 -0
  50. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/py.typed +0 -0
  51. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/sync/__init__.py +0 -0
  52. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/python/turso/worker.py +0 -0
  53. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/Cargo.toml +0 -0
  54. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/README.md +0 -0
  55. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/examples/example.rs +0 -0
  56. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/examples/example_struct.rs +0 -0
  57. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/src/lib.rs +0 -0
  58. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/src/params.rs +0 -0
  59. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/src/rows.rs +0 -0
  60. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/src/transaction.rs +0 -0
  61. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/src/value.rs +0 -0
  62. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/bindings/rust/tests/integration_tests.rs +0 -0
  63. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/Cargo.toml +0 -0
  64. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/assert.rs +0 -0
  65. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/benches/benchmark.rs +0 -0
  66. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/benches/json_benchmark.rs +0 -0
  67. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/benches/mvcc_benchmark.rs +0 -0
  68. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/benches/tpc_h_benchmark.rs +0 -0
  69. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/build.rs +0 -0
  70. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/ext/dynamic.rs +0 -0
  71. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/ext/mod.rs +0 -0
  72. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/ext/vtab_xconnect.rs +0 -0
  73. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/fast_lock.rs +0 -0
  74. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/function.rs +0 -0
  75. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/functions/datetime.rs +0 -0
  76. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/functions/mod.rs +0 -0
  77. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/functions/printf.rs +0 -0
  78. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/functions/strftime.rs +0 -0
  79. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/aggregate_operator.rs +0 -0
  80. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/compiler.rs +0 -0
  81. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/cursor.rs +0 -0
  82. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/dbsp.rs +0 -0
  83. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/expr_compiler.rs +0 -0
  84. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/filter_operator.rs +0 -0
  85. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/input_operator.rs +0 -0
  86. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/join_operator.rs +0 -0
  87. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/merge_operator.rs +0 -0
  88. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/mod.rs +0 -0
  89. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/operator.rs +0 -0
  90. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/persistence.rs +0 -0
  91. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/project_operator.rs +0 -0
  92. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/incremental/view.rs +0 -0
  93. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/index_method/backing_btree.rs +0 -0
  94. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/index_method/mod.rs +0 -0
  95. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/index_method/toy_vector_sparse_ivf.rs +0 -0
  96. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/info.rs +0 -0
  97. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/clock.rs +0 -0
  98. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/common.rs +0 -0
  99. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/completions.rs +0 -0
  100. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/generic.rs +0 -0
  101. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/io_uring.rs +0 -0
  102. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/memory.rs +0 -0
  103. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/mod.rs +0 -0
  104. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/unix.rs +0 -0
  105. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/vfs.rs +0 -0
  106. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/io/windows.rs +0 -0
  107. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/json/cache.rs +0 -0
  108. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/json/error.rs +0 -0
  109. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/json/jsonb.rs +0 -0
  110. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/json/mod.rs +0 -0
  111. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/json/ops.rs +0 -0
  112. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/json/path.rs +0 -0
  113. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/json/vtab.rs +0 -0
  114. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/mvcc/clock.rs +0 -0
  115. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/mvcc/database/checkpoint_state_machine.rs +0 -0
  116. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/mvcc/database/mod.rs +0 -0
  117. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/mvcc/mod.rs +0 -0
  118. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/mvcc/persistent_storage/logical_log.rs +0 -0
  119. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/mvcc/persistent_storage/mod.rs +0 -0
  120. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/numeric/mod.rs +0 -0
  121. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/numeric/nonnan.rs +0 -0
  122. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/parameters.rs +0 -0
  123. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/pragma.rs +0 -0
  124. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/pseudo.rs +0 -0
  125. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/schema.rs +0 -0
  126. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/series.rs +0 -0
  127. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/state_machine.rs +0 -0
  128. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/stats.rs +0 -0
  129. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/btree.rs +2 -2
  130. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/buffer_pool.rs +0 -0
  131. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/checksum.rs +0 -0
  132. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/database.rs +0 -0
  133. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/encryption.rs +0 -0
  134. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/mod.rs +0 -0
  135. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/page_cache.rs +0 -0
  136. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/slot_bitmap.rs +0 -0
  137. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/state_machines.rs +0 -0
  138. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/storage/subjournal.rs +0 -0
  139. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/time/internal.rs +0 -0
  140. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/time/mod.rs +0 -0
  141. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/aggregation.rs +0 -0
  142. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/alter.rs +0 -0
  143. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/analyze.rs +0 -0
  144. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/attach.rs +0 -0
  145. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/collate.rs +0 -0
  146. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/compound_select.rs +0 -0
  147. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/delete.rs +0 -0
  148. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/display.rs +0 -0
  149. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/emitter.rs +0 -0
  150. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/expr.rs +0 -0
  151. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/expression_index.rs +0 -0
  152. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/fkeys.rs +0 -0
  153. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/group_by.rs +0 -0
  154. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/index.rs +0 -0
  155. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/insert.rs +0 -0
  156. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/logical.rs +0 -0
  157. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/main_loop.rs +0 -0
  158. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/mod.rs +0 -0
  159. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/optimizer/OPTIMIZER.md +0 -0
  160. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/optimizer/access_method.rs +0 -0
  161. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/optimizer/constraints.rs +0 -0
  162. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/optimizer/cost.rs +0 -0
  163. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/optimizer/join.rs +0 -0
  164. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/optimizer/lift_common_subexpressions.rs +0 -0
  165. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/optimizer/mod.rs +0 -0
  166. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/optimizer/order.rs +0 -0
  167. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/order_by.rs +0 -0
  168. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/plan.rs +0 -0
  169. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/planner.rs +0 -0
  170. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/pragma.rs +0 -0
  171. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/result_row.rs +0 -0
  172. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/rollback.rs +0 -0
  173. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/schema.rs +0 -0
  174. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/select.rs +0 -0
  175. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/subquery.rs +0 -0
  176. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/transaction.rs +0 -0
  177. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/trigger.rs +0 -0
  178. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/trigger_exec.rs +0 -0
  179. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/update.rs +0 -0
  180. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/upsert.rs +0 -0
  181. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/values.rs +0 -0
  182. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/view.rs +0 -0
  183. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/translate/window.rs +0 -0
  184. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/types.rs +0 -0
  185. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/util.rs +0 -0
  186. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/uuid.rs +0 -0
  187. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/affinity.rs +0 -0
  188. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/builder.rs +0 -0
  189. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/explain.rs +0 -0
  190. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/insn.rs +0 -0
  191. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/likeop.rs +0 -0
  192. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/metrics.rs +0 -0
  193. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/rowset.rs +0 -0
  194. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/sorter.rs +0 -0
  195. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vdbe/value.rs +0 -0
  196. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/mod.rs +0 -0
  197. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/concat.rs +0 -0
  198. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/convert.rs +0 -0
  199. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/distance_cos.rs +0 -0
  200. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/distance_dot.rs +0 -0
  201. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/distance_l2.rs +0 -0
  202. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/jaccard.rs +0 -0
  203. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/mod.rs +0 -0
  204. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/serialize.rs +0 -0
  205. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/slice.rs +0 -0
  206. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/operations/text.rs +0 -0
  207. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vector/vector_types.rs +0 -0
  208. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/core/vtab.rs +0 -0
  209. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/extensions/core/Cargo.toml +0 -0
  210. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/extensions/core/README.md +0 -0
  211. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/extensions/core/build.rs +0 -0
  212. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/extensions/core/src/functions.rs +0 -0
  213. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/extensions/core/src/lib.rs +0 -0
  214. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/extensions/core/src/types.rs +0 -0
  215. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/extensions/core/src/vfs_modules.rs +0 -0
  216. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/extensions/core/src/vtabs.rs +0 -0
  217. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/Cargo.toml +0 -0
  218. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/atomic_enum.rs +0 -0
  219. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/ext/agg_derive.rs +0 -0
  220. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/ext/match_ignore_ascii_case.rs +0 -0
  221. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/ext/mod.rs +0 -0
  222. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/ext/scalars.rs +0 -0
  223. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/ext/vfs_derive.rs +0 -0
  224. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/ext/vtab_derive.rs +0 -0
  225. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/macros/src/lib.rs +0 -0
  226. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/Cargo.toml +0 -0
  227. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/README.md +0 -0
  228. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/benches/parser_benchmark.rs +0 -0
  229. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/src/ast/check.rs +0 -0
  230. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/src/ast/fmt.rs +0 -0
  231. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/src/ast.rs +0 -0
  232. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/src/error.rs +0 -0
  233. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/src/lexer.rs +0 -0
  234. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/src/lib.rs +0 -0
  235. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/src/parser.rs +0 -0
  236. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/parser/src/token.rs +0 -0
  237. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/pyproject.toml +0 -0
  238. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/Cargo.toml +0 -0
  239. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/README.md +0 -0
  240. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/bindgen.sh +0 -0
  241. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/readme-sdk-kit.mdx +0 -0
  242. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/src/bindings.rs +0 -0
  243. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/src/capi.rs +0 -0
  244. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/src/lib.rs +0 -0
  245. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/src/rsapi.rs +0 -0
  246. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit/turso.h +0 -0
  247. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit-macros/Cargo.toml +0 -0
  248. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sdk-kit-macros/src/lib.rs +0 -0
  249. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/.gitignore +0 -0
  250. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/Cargo.toml +0 -0
  251. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/database_replay_generator.rs +0 -0
  252. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/database_sync_engine.rs +0 -0
  253. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/database_sync_engine_io.rs +0 -0
  254. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/database_sync_operations.rs +0 -0
  255. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/database_tape.rs +0 -0
  256. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/errors.rs +0 -0
  257. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/io_operations.rs +0 -0
  258. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/lib.rs +0 -0
  259. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/server_proto.rs +0 -0
  260. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/sparse_io.rs +0 -0
  261. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/engine/src/wal_session.rs +0 -0
  262. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/Cargo.toml +0 -0
  263. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/bindgen.sh +0 -0
  264. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/src/capi.rs +0 -0
  265. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/src/lib.rs +0 -0
  266. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/src/sync_engine_io.rs +0 -0
  267. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/sync/sdk-kit/src/turso_async_operation.rs +0 -0
  268. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/__init__.py +0 -0
  269. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/aio/__init__.py +0 -0
  270. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/aio/sync/__init__.py +0 -0
  271. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/lib.py +0 -0
  272. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/lib_aio.py +0 -0
  273. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/lib_sync_aio.py +0 -0
  274. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/py.typed +0 -0
  275. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/sync/__init__.py +0 -0
  276. {pyturso-0.4.0rc15 → pyturso-0.4.0rc17}/turso/worker.py +0 -0
@@ -104,15 +104,6 @@ dependencies = [
104
104
  "backtrace",
105
105
  ]
106
106
 
107
- [[package]]
108
- name = "anarchist-readable-name-generator-lib"
109
- version = "0.1.2"
110
- source = "registry+https://github.com/rust-lang/crates.io-index"
111
- checksum = "18a1e15a87b13ae79e04e07b3714fc41d5f6993dff11662fdbe0b207c6ad0fe0"
112
- dependencies = [
113
- "rand 0.8.5",
114
- ]
115
-
116
107
  [[package]]
117
108
  name = "anarchist-readable-name-generator-lib"
118
109
  version = "0.2.0"
@@ -886,7 +877,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
886
877
 
887
878
  [[package]]
888
879
  name = "core_tester"
889
- version = "0.4.0-pre.15"
880
+ version = "0.4.0-pre.17"
890
881
  dependencies = [
891
882
  "anyhow",
892
883
  "assert_cmd",
@@ -2641,7 +2632,7 @@ dependencies = [
2641
2632
 
2642
2633
  [[package]]
2643
2634
  name = "limbo_completion"
2644
- version = "0.4.0-pre.15"
2635
+ version = "0.4.0-pre.17"
2645
2636
  dependencies = [
2646
2637
  "mimalloc",
2647
2638
  "turso_ext",
@@ -2649,7 +2640,7 @@ dependencies = [
2649
2640
 
2650
2641
  [[package]]
2651
2642
  name = "limbo_crypto"
2652
- version = "0.4.0-pre.15"
2643
+ version = "0.4.0-pre.17"
2653
2644
  dependencies = [
2654
2645
  "blake3",
2655
2646
  "data-encoding",
@@ -2662,7 +2653,7 @@ dependencies = [
2662
2653
 
2663
2654
  [[package]]
2664
2655
  name = "limbo_csv"
2665
- version = "0.4.0-pre.15"
2656
+ version = "0.4.0-pre.17"
2666
2657
  dependencies = [
2667
2658
  "csv",
2668
2659
  "mimalloc",
@@ -2672,7 +2663,7 @@ dependencies = [
2672
2663
 
2673
2664
  [[package]]
2674
2665
  name = "limbo_fuzzy"
2675
- version = "0.4.0-pre.15"
2666
+ version = "0.4.0-pre.17"
2676
2667
  dependencies = [
2677
2668
  "mimalloc",
2678
2669
  "turso_ext",
@@ -2680,7 +2671,7 @@ dependencies = [
2680
2671
 
2681
2672
  [[package]]
2682
2673
  name = "limbo_ipaddr"
2683
- version = "0.4.0-pre.15"
2674
+ version = "0.4.0-pre.17"
2684
2675
  dependencies = [
2685
2676
  "ipnetwork",
2686
2677
  "mimalloc",
@@ -2689,7 +2680,7 @@ dependencies = [
2689
2680
 
2690
2681
  [[package]]
2691
2682
  name = "limbo_percentile"
2692
- version = "0.4.0-pre.15"
2683
+ version = "0.4.0-pre.17"
2693
2684
  dependencies = [
2694
2685
  "mimalloc",
2695
2686
  "turso_ext",
@@ -2697,7 +2688,7 @@ dependencies = [
2697
2688
 
2698
2689
  [[package]]
2699
2690
  name = "limbo_regexp"
2700
- version = "0.4.0-pre.15"
2691
+ version = "0.4.0-pre.17"
2701
2692
  dependencies = [
2702
2693
  "mimalloc",
2703
2694
  "regex",
@@ -2706,7 +2697,7 @@ dependencies = [
2706
2697
 
2707
2698
  [[package]]
2708
2699
  name = "limbo_sim"
2709
- version = "0.4.0-pre.15"
2700
+ version = "0.4.0-pre.17"
2710
2701
  dependencies = [
2711
2702
  "anyhow",
2712
2703
  "bitflags 2.9.4",
@@ -2743,7 +2734,7 @@ dependencies = [
2743
2734
 
2744
2735
  [[package]]
2745
2736
  name = "limbo_sqlite_test_ext"
2746
- version = "0.4.0-pre.15"
2737
+ version = "0.4.0-pre.17"
2747
2738
  dependencies = [
2748
2739
  "cc",
2749
2740
  ]
@@ -3569,7 +3560,7 @@ dependencies = [
3569
3560
 
3570
3561
  [[package]]
3571
3562
  name = "py-turso"
3572
- version = "0.4.0-pre.15"
3563
+ version = "0.4.0-pre.17"
3573
3564
  dependencies = [
3574
3565
  "anyhow",
3575
3566
  "pyo3",
@@ -4329,9 +4320,9 @@ checksum = "d372029cb5195f9ab4e4b9aef550787dce78b124fcaee8d82519925defcd6f0d"
4329
4320
 
4330
4321
  [[package]]
4331
4322
  name = "sql_generation"
4332
- version = "0.4.0-pre.15"
4323
+ version = "0.4.0-pre.17"
4333
4324
  dependencies = [
4334
- "anarchist-readable-name-generator-lib 0.2.0",
4325
+ "anarchist-readable-name-generator-lib",
4335
4326
  "anyhow",
4336
4327
  "garde",
4337
4328
  "hex",
@@ -4957,7 +4948,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
4957
4948
 
4958
4949
  [[package]]
4959
4950
  name = "turso"
4960
- version = "0.4.0-pre.15"
4951
+ version = "0.4.0-pre.17"
4961
4952
  dependencies = [
4962
4953
  "mimalloc",
4963
4954
  "rand 0.9.2",
@@ -4972,7 +4963,7 @@ dependencies = [
4972
4963
 
4973
4964
  [[package]]
4974
4965
  name = "turso-java"
4975
- version = "0.4.0-pre.15"
4966
+ version = "0.4.0-pre.17"
4976
4967
  dependencies = [
4977
4968
  "jni",
4978
4969
  "thiserror 2.0.16",
@@ -4981,7 +4972,7 @@ dependencies = [
4981
4972
 
4982
4973
  [[package]]
4983
4974
  name = "turso_cli"
4984
- version = "0.4.0-pre.15"
4975
+ version = "0.4.0-pre.17"
4985
4976
  dependencies = [
4986
4977
  "anyhow",
4987
4978
  "cfg-if",
@@ -4993,6 +4984,7 @@ dependencies = [
4993
4984
  "dirs 5.0.1",
4994
4985
  "env_logger 0.11.7",
4995
4986
  "include_dir",
4987
+ "itertools 0.14.0",
4996
4988
  "libc",
4997
4989
  "limbo_completion",
4998
4990
  "miette",
@@ -5017,7 +5009,7 @@ dependencies = [
5017
5009
 
5018
5010
  [[package]]
5019
5011
  name = "turso_core"
5020
- version = "0.4.0-pre.15"
5012
+ version = "0.4.0-pre.17"
5021
5013
  dependencies = [
5022
5014
  "aegis",
5023
5015
  "aes",
@@ -5082,7 +5074,7 @@ dependencies = [
5082
5074
 
5083
5075
  [[package]]
5084
5076
  name = "turso_dart"
5085
- version = "0.4.0-pre.15"
5077
+ version = "0.4.0-pre.17"
5086
5078
  dependencies = [
5087
5079
  "flutter_rust_bridge",
5088
5080
  "turso_core",
@@ -5090,7 +5082,7 @@ dependencies = [
5090
5082
 
5091
5083
  [[package]]
5092
5084
  name = "turso_ext"
5093
- version = "0.4.0-pre.15"
5085
+ version = "0.4.0-pre.17"
5094
5086
  dependencies = [
5095
5087
  "chrono",
5096
5088
  "getrandom 0.3.2",
@@ -5099,7 +5091,7 @@ dependencies = [
5099
5091
 
5100
5092
  [[package]]
5101
5093
  name = "turso_ext_tests"
5102
- version = "0.4.0-pre.15"
5094
+ version = "0.4.0-pre.17"
5103
5095
  dependencies = [
5104
5096
  "env_logger 0.11.7",
5105
5097
  "lazy_static",
@@ -5110,7 +5102,7 @@ dependencies = [
5110
5102
 
5111
5103
  [[package]]
5112
5104
  name = "turso_macros"
5113
- version = "0.4.0-pre.15"
5105
+ version = "0.4.0-pre.17"
5114
5106
  dependencies = [
5115
5107
  "proc-macro2",
5116
5108
  "quote",
@@ -5119,7 +5111,7 @@ dependencies = [
5119
5111
 
5120
5112
  [[package]]
5121
5113
  name = "turso_node"
5122
- version = "0.4.0-pre.15"
5114
+ version = "0.4.0-pre.17"
5123
5115
  dependencies = [
5124
5116
  "chrono",
5125
5117
  "napi",
@@ -5132,7 +5124,7 @@ dependencies = [
5132
5124
 
5133
5125
  [[package]]
5134
5126
  name = "turso_parser"
5135
- version = "0.4.0-pre.15"
5127
+ version = "0.4.0-pre.17"
5136
5128
  dependencies = [
5137
5129
  "bitflags 2.9.4",
5138
5130
  "criterion",
@@ -5148,7 +5140,7 @@ dependencies = [
5148
5140
 
5149
5141
  [[package]]
5150
5142
  name = "turso_sdk_kit"
5151
- version = "0.4.0-pre.15"
5143
+ version = "0.4.0-pre.17"
5152
5144
  dependencies = [
5153
5145
  "bindgen",
5154
5146
  "env_logger 0.11.7",
@@ -5161,7 +5153,7 @@ dependencies = [
5161
5153
 
5162
5154
  [[package]]
5163
5155
  name = "turso_sdk_kit_macros"
5164
- version = "0.4.0-pre.15"
5156
+ version = "0.4.0-pre.17"
5165
5157
  dependencies = [
5166
5158
  "proc-macro2",
5167
5159
  "quote",
@@ -5170,7 +5162,7 @@ dependencies = [
5170
5162
 
5171
5163
  [[package]]
5172
5164
  name = "turso_sqlite3"
5173
- version = "0.4.0-pre.15"
5165
+ version = "0.4.0-pre.17"
5174
5166
  dependencies = [
5175
5167
  "env_logger 0.11.7",
5176
5168
  "libc",
@@ -5183,12 +5175,12 @@ dependencies = [
5183
5175
 
5184
5176
  [[package]]
5185
5177
  name = "turso_stress"
5186
- version = "0.4.0-pre.15"
5178
+ version = "0.4.0-pre.17"
5187
5179
  dependencies = [
5188
- "anarchist-readable-name-generator-lib 0.1.2",
5189
5180
  "antithesis_sdk",
5190
5181
  "clap",
5191
5182
  "hex",
5183
+ "rand 0.9.2",
5192
5184
  "rusqlite",
5193
5185
  "tempfile",
5194
5186
  "tokio",
@@ -5200,7 +5192,7 @@ dependencies = [
5200
5192
 
5201
5193
  [[package]]
5202
5194
  name = "turso_sync_engine"
5203
- version = "0.4.0-pre.15"
5195
+ version = "0.4.0-pre.17"
5204
5196
  dependencies = [
5205
5197
  "base64 0.22.1",
5206
5198
  "bytes",
@@ -5228,7 +5220,7 @@ dependencies = [
5228
5220
 
5229
5221
  [[package]]
5230
5222
  name = "turso_sync_js"
5231
- version = "0.4.0-pre.15"
5223
+ version = "0.4.0-pre.17"
5232
5224
  dependencies = [
5233
5225
  "genawaiter",
5234
5226
  "napi",
@@ -5243,7 +5235,7 @@ dependencies = [
5243
5235
 
5244
5236
  [[package]]
5245
5237
  name = "turso_sync_sdk_kit"
5246
- version = "0.4.0-pre.15"
5238
+ version = "0.4.0-pre.17"
5247
5239
  dependencies = [
5248
5240
  "bindgen",
5249
5241
  "env_logger 0.11.7",
@@ -5260,7 +5252,7 @@ dependencies = [
5260
5252
 
5261
5253
  [[package]]
5262
5254
  name = "turso_whopper"
5263
- version = "0.4.0-pre.15"
5255
+ version = "0.4.0-pre.17"
5264
5256
  dependencies = [
5265
5257
  "anyhow",
5266
5258
  "clap",
@@ -6,32 +6,32 @@ members = ["bindings/python"]
6
6
  exclude = ["perf/latency/limbo"]
7
7
 
8
8
  [workspace.package]
9
- version = "0.4.0-pre.15"
9
+ version = "0.4.0-pre.17"
10
10
  authors = ["the Limbo authors"]
11
11
  edition = "2021"
12
12
  license = "MIT"
13
13
  repository = "https://github.com/tursodatabase/turso"
14
14
 
15
15
  [workspace.dependencies]
16
- turso = { path = "bindings/rust", version = "0.4.0-pre.15" }
17
- turso_node = { path = "bindings/javascript", version = "0.4.0-pre.15" }
18
- turso_sdk_kit = { path = "sdk-kit", version = "0.4.0-pre.15" }
19
- turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.0-pre.15" }
20
- turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.0-pre.15" }
21
- limbo_completion = { path = "extensions/completion", version = "0.4.0-pre.15" }
22
- turso_core = { path = "core", version = "0.4.0-pre.15" }
23
- turso_sync_engine = { path = "sync/engine", version = "0.4.0-pre.15" }
24
- limbo_crypto = { path = "extensions/crypto", version = "0.4.0-pre.15" }
25
- limbo_csv = { path = "extensions/csv", version = "0.4.0-pre.15" }
26
- turso_ext = { path = "extensions/core", version = "0.4.0-pre.15" }
27
- turso_ext_tests = { path = "extensions/tests", version = "0.4.0-pre.15" }
28
- limbo_ipaddr = { path = "extensions/ipaddr", version = "0.4.0-pre.15" }
29
- turso_macros = { path = "macros", version = "0.4.0-pre.15" }
30
- limbo_percentile = { path = "extensions/percentile", version = "0.4.0-pre.15" }
31
- limbo_regexp = { path = "extensions/regexp", version = "0.4.0-pre.15" }
32
- limbo_uuid = { path = "extensions/uuid", version = "0.4.0-pre.15" }
33
- turso_parser = { path = "parser", version = "0.4.0-pre.15" }
34
- limbo_fuzzy = { path = "extensions/fuzzy", version = "0.4.0-pre.15" }
16
+ turso = { path = "bindings/rust", version = "0.4.0-pre.17" }
17
+ turso_node = { path = "bindings/javascript", version = "0.4.0-pre.17" }
18
+ turso_sdk_kit = { path = "sdk-kit", version = "0.4.0-pre.17" }
19
+ turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.0-pre.17" }
20
+ turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.0-pre.17" }
21
+ limbo_completion = { path = "extensions/completion", version = "0.4.0-pre.17" }
22
+ turso_core = { path = "core", version = "0.4.0-pre.17" }
23
+ turso_sync_engine = { path = "sync/engine", version = "0.4.0-pre.17" }
24
+ limbo_crypto = { path = "extensions/crypto", version = "0.4.0-pre.17" }
25
+ limbo_csv = { path = "extensions/csv", version = "0.4.0-pre.17" }
26
+ turso_ext = { path = "extensions/core", version = "0.4.0-pre.17" }
27
+ turso_ext_tests = { path = "extensions/tests", version = "0.4.0-pre.17" }
28
+ limbo_ipaddr = { path = "extensions/ipaddr", version = "0.4.0-pre.17" }
29
+ turso_macros = { path = "macros", version = "0.4.0-pre.17" }
30
+ limbo_percentile = { path = "extensions/percentile", version = "0.4.0-pre.17" }
31
+ limbo_regexp = { path = "extensions/regexp", version = "0.4.0-pre.17" }
32
+ limbo_uuid = { path = "extensions/uuid", version = "0.4.0-pre.17" }
33
+ turso_parser = { path = "parser", version = "0.4.0-pre.17" }
34
+ limbo_fuzzy = { path = "extensions/fuzzy", version = "0.4.0-pre.17" }
35
35
  sql_generation = { path = "sql_generation" }
36
36
  strum = { version = "0.26", features = ["derive"] }
37
37
  strum_macros = "0.26"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyturso
3
- Version: 0.4.0rc15
3
+ Version: 0.4.0rc17
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Programming Language :: Python
6
6
  Classifier: Programming Language :: Python :: 3
@@ -55,7 +55,7 @@ class PartialSyncQueryBootstrap:
55
55
  class PartialSyncOpts:
56
56
  bootstrap_strategy: Union[PartialSyncPrefixBootstrap, PartialSyncQueryBootstrap]
57
57
  segment_size: Optional[int] = None
58
- speculative_load: Optional[bool] = None
58
+ prefetch: Optional[bool] = None
59
59
 
60
60
  def connect_sync(
61
61
  path: str, # path to the main database file locally
@@ -27,7 +27,7 @@ pub struct PyTursoPartialSyncOpts {
27
27
  // query bootstrap strategy which will enable partial sync which lazily pull necessary pages on demand and bootstrap db with pages touched by the server with given SQL query
28
28
  pub bootstrap_strategy_query: Option<String>,
29
29
  pub segment_size: Option<usize>,
30
- pub speculative_load: Option<bool>,
30
+ pub prefetch: Option<bool>,
31
31
  }
32
32
 
33
33
  #[pymethods]
@@ -37,19 +37,19 @@ impl PyTursoPartialSyncOpts {
37
37
  bootstrap_strategy_prefix=None,
38
38
  bootstrap_strategy_query=None,
39
39
  segment_size=None,
40
- speculative_load=None,
40
+ prefetch=None,
41
41
  ))]
42
42
  fn new(
43
43
  bootstrap_strategy_prefix: Option<usize>,
44
44
  bootstrap_strategy_query: Option<String>,
45
45
  segment_size: Option<usize>,
46
- speculative_load: Option<bool>,
46
+ prefetch: Option<bool>,
47
47
  ) -> Self {
48
48
  Self {
49
49
  bootstrap_strategy_prefix,
50
50
  bootstrap_strategy_query,
51
51
  segment_size,
52
- speculative_load,
52
+ prefetch,
53
53
  }
54
54
  }
55
55
  }
@@ -124,7 +124,7 @@ pub fn py_turso_sync_new(
124
124
  Some(PartialSyncOpts {
125
125
  bootstrap_strategy: PartialBootstrapStrategy::Prefix { length },
126
126
  segment_size: config.segment_size.unwrap_or(0),
127
- speculative_load: config.speculative_load.unwrap_or(false),
127
+ prefetch: config.prefetch.unwrap_or(false),
128
128
  })
129
129
  } else {
130
130
  config
@@ -135,7 +135,7 @@ pub fn py_turso_sync_new(
135
135
  query: query.clone(),
136
136
  },
137
137
  segment_size: config.segment_size.unwrap_or(0),
138
- speculative_load: config.speculative_load.unwrap_or(false),
138
+ prefetch: config.prefetch.unwrap_or(false),
139
139
  })
140
140
  }
141
141
  }
@@ -1478,3 +1478,20 @@ def test_insert_returning_single_and_multiple_commit_without_consuming(provider)
1478
1478
  finally:
1479
1479
  conn.close()
1480
1480
 
1481
+
1482
+ @pytest.mark.parametrize("provider", ["sqlite3", "turso"])
1483
+ def test_pragma_integrity_check(provider):
1484
+ conn = connect(provider, ":memory:")
1485
+ cursor = conn.cursor()
1486
+ cursor.execute("PRAGMA integrity_check")
1487
+
1488
+ # Verify fetchone returns the expected result, not None
1489
+ # Bug: missing add_pragma_result_column in translate_integrity_check
1490
+ # caused column_count to be 0, making execute() finalize the statement
1491
+ # and leaving fetchone() to return None
1492
+ row = cursor.fetchone()
1493
+ assert row is not None, "PRAGMA integrity_check should return a row"
1494
+ assert row == ("ok",)
1495
+
1496
+ conn.close()
1497
+
@@ -208,7 +208,7 @@ def test_partial_sync_segment_size():
208
208
  print(time.time() - start)
209
209
  assert conn_partial.stats().network_received_bytes > 2000 * 1024
210
210
 
211
- def test_partial_sync_speculative_load():
211
+ def test_partial_sync_prefetch():
212
212
  # turso.setup_logging(level=logging.DEBUG)
213
213
 
214
214
  name = random_str()
@@ -229,7 +229,7 @@ def test_partial_sync_speculative_load():
229
229
  partial_sync_opts=turso.sync.PartialSyncOpts(
230
230
  bootstrap_strategy=turso.sync.PartialSyncPrefixBootstrap(length=128 * 1024),
231
231
  segment_size=4 * 1024,
232
- speculative_load=True,
232
+ prefetch=True,
233
233
  ),
234
234
  )
235
235
  assert conn_partial.execute("SELECT LENGTH(x) FROM t LIMIT 1").fetchall() == [(1024,)]
@@ -214,7 +214,7 @@ async def test_partial_sync_segment_size():
214
214
  assert (await conn_partial.stats()).network_received_bytes > 2000 * 1024
215
215
 
216
216
  @pytest.mark.asyncio
217
- async def test_partial_sync_speculative_load():
217
+ async def test_partial_sync_prefetch():
218
218
  # turso.setup_logging(level=logging.DEBUG)
219
219
 
220
220
  name = random_str()
@@ -236,7 +236,7 @@ async def test_partial_sync_speculative_load():
236
236
  partial_sync_opts=turso.aio.sync.PartialSyncOpts(
237
237
  bootstrap_strategy=turso.aio.sync.PartialSyncPrefixBootstrap(length=128*1024),
238
238
  segment_size=4 * 1024,
239
- speculative_load=True,
239
+ prefetch=True,
240
240
  ),
241
241
  )
242
242
  assert await (await conn_partial.execute("SELECT LENGTH(x) FROM t LIMIT 1")).fetchall() == [(1024,)]
@@ -43,7 +43,7 @@ class PartialSyncQueryBootstrap:
43
43
  class PartialSyncOpts:
44
44
  bootstrap_strategy: Union[PartialSyncPrefixBootstrap, PartialSyncQueryBootstrap]
45
45
  segment_size: Optional[int] = None
46
- speculative_load: Optional[bool] = None
46
+ prefetch: Optional[bool] = None
47
47
 
48
48
  class _HttpContext:
49
49
  """
@@ -451,7 +451,7 @@ def connect_sync(
451
451
  bootstrap_strategy_prefix=prefix_len,
452
452
  bootstrap_strategy_query=query_str,
453
453
  segment_size=partial_sync_opts.segment_size,
454
- speculative_load=partial_sync_opts.speculative_load
454
+ prefetch=partial_sync_opts.prefetch
455
455
  ) if partial_sync_opts is not None else None,
456
456
  )
457
457
 
@@ -77,6 +77,8 @@ pub enum LimboError {
77
77
  InvalidBlobSize(usize),
78
78
  #[error("Planning error: {0}")]
79
79
  PlanningError(String),
80
+ #[error("Checkpoint failed: {0}")]
81
+ CheckpointFailed(String),
80
82
  }
81
83
 
82
84
  // We only propagate the error kind so we can avoid string allocation in hot path and copying/cloning enums is cheaper
@@ -192,6 +192,18 @@ enum TransactionState {
192
192
  None,
193
193
  }
194
194
 
195
+ impl TransactionState {
196
+ /// Whether the transaction is a write transaction that changes the schema
197
+ pub fn is_ddl_write_tx(&self) -> bool {
198
+ matches!(
199
+ self,
200
+ TransactionState::Write {
201
+ schema_did_change: true
202
+ }
203
+ )
204
+ }
205
+ }
206
+
195
207
  #[derive(Debug, AtomicEnum, Clone, Copy, PartialEq, Eq)]
196
208
  pub enum SyncMode {
197
209
  Off = 0,
@@ -1877,6 +1889,11 @@ impl Connection {
1877
1889
 
1878
1890
  if !force_commit {
1879
1891
  // remove all non-commited changes in case if WAL session left some suffix without commit frame
1892
+ if let Some(mv_store) = self.mv_store().as_ref() {
1893
+ if let Some(tx_id) = self.get_mv_tx_id() {
1894
+ mv_store.rollback_tx(tx_id, pager.clone(), self);
1895
+ }
1896
+ }
1880
1897
  pager.rollback(false, self, true);
1881
1898
  }
1882
1899
  if let Some(err) = commit_err {
@@ -378,7 +378,7 @@ impl<Clock: LogicalClock + 'static> MvccLazyCursor<Clock> {
378
378
  /// transactions are not conflicting.
379
379
  /// Therefore, we will always choose the highest rowid in the table, regardless of the visibility of the row to the
380
380
  /// transaction.
381
- pub fn get_next_rowid(&mut self) -> Result<IOResult<i64>> {
381
+ pub fn get_next_rowid(&mut self) -> Result<IOResult<(i64, i64)>> {
382
382
  // lock so we don't get same two rowids
383
383
  let lock = self.next_rowid_lock.clone();
384
384
  let _lock = lock.write();
@@ -392,7 +392,11 @@ impl<Clock: LogicalClock + 'static> MvccLazyCursor<Clock> {
392
392
  "rowid overflow, random rowids not implemented yet".to_string(),
393
393
  ));
394
394
  }
395
- Ok(rowid.to_int_or_panic() + 1)
395
+
396
+ let prev_max_rowid = rowid.to_int_or_panic();
397
+ let new_row_id = prev_max_rowid + 1;
398
+ tracing::trace!("new_row_id={new_row_id}");
399
+ Ok((new_row_id, prev_max_rowid))
396
400
  };
397
401
  match self.current_pos.borrow().clone() {
398
402
  CursorPosition::Loaded {
@@ -420,14 +424,14 @@ impl<Clock: LogicalClock + 'static> MvccLazyCursor<Clock> {
420
424
  }
421
425
  CursorPosition::BeforeFirst => {
422
426
  let res = match last_rowid_in_mvcc_index {
423
- None => 1,
427
+ None => (1, 0),
424
428
  Some(k) => incremented_rowid(&k)?,
425
429
  };
426
430
  Ok(IOResult::Done(res))
427
431
  }
428
432
  CursorPosition::End => {
429
433
  let res = match last_rowid_in_mvcc_index {
430
- None => 1,
434
+ None => (1, 0),
431
435
  Some(k) => incremented_rowid(&k)?,
432
436
  };
433
437
  Ok(IOResult::Done(res))
@@ -1409,7 +1413,7 @@ impl<Clock: LogicalClock + 'static> CursorTrait for MvccLazyCursor<Clock> {
1409
1413
  self.tx_id,
1410
1414
  &mut self.table_iterator,
1411
1415
  );
1412
- let exists = if let Some(rowid) = rowid {
1416
+ let exists = if let Some(rowid) = &rowid {
1413
1417
  let RowKey::Int(rowid) = rowid.row_id else {
1414
1418
  panic!("Rowid is not an integer in mvcc table cursor");
1415
1419
  };
@@ -1417,6 +1421,7 @@ impl<Clock: LogicalClock + 'static> CursorTrait for MvccLazyCursor<Clock> {
1417
1421
  } else {
1418
1422
  false
1419
1423
  };
1424
+ tracing::trace!("Row exists: {exists} find={int_key} got={rowid:?}");
1420
1425
  if exists {
1421
1426
  self.current_pos.replace(CursorPosition::Loaded {
1422
1427
  row_id: RowID {
@@ -1935,3 +1935,37 @@ fn test_cursor_with_btree_and_mvcc_delete_after_checkpoint() {
1935
1935
  let rows = get_rows(&conn, "SELECT * FROM t order by x desc");
1936
1936
  assert_eq!(rows.len(), 0);
1937
1937
  }
1938
+
1939
+ #[test]
1940
+ fn test_skips_updated_rowid() {
1941
+ tracing_subscriber::fmt()
1942
+ .with_ansi(false)
1943
+ .with_max_level(tracing_subscriber::filter::LevelFilter::TRACE)
1944
+ .init();
1945
+ let db = MvccTestDbNoConn::new_with_random_db();
1946
+ let conn = db.connect();
1947
+
1948
+ conn.execute("CREATE TABLE t(a INTEGER PRIMARY KEY AUTOINCREMENT)")
1949
+ .unwrap();
1950
+
1951
+ // we insert with default values
1952
+ conn.execute("INSERT INTO t DEFAULT VALUES").unwrap();
1953
+ let rows = get_rows(&conn, "SELECT * FROM sqlite_sequence");
1954
+ dbg!(&rows);
1955
+ assert_eq!(rows.len(), 1);
1956
+ assert_eq!(rows[0][1].as_int().unwrap(), 1);
1957
+
1958
+ // we update the rowid to +1
1959
+ conn.execute("UPDATE t SET a = a + 1").unwrap();
1960
+ let rows = get_rows(&conn, "SELECT * FROM sqlite_sequence");
1961
+ dbg!(&rows);
1962
+ assert_eq!(rows.len(), 1);
1963
+ assert_eq!(rows[0][1].as_int().unwrap(), 1);
1964
+
1965
+ // we insert with default values again
1966
+ conn.execute("INSERT INTO t DEFAULT VALUES").unwrap();
1967
+ let rows = get_rows(&conn, "SELECT * FROM sqlite_sequence");
1968
+ dbg!(&rows);
1969
+ assert_eq!(rows.len(), 1);
1970
+ assert_eq!(rows[0][1].as_int().unwrap(), 3);
1971
+ }