pyturso 0.4.3rc1__tar.gz → 0.4.3rc2__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 (270) hide show
  1. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/Cargo.lock +31 -31
  2. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/Cargo.toml +12 -12
  3. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/PKG-INFO +1 -1
  4. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/function.rs +3 -3
  5. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/lib.rs +1 -1
  6. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/parameters.rs +1 -1
  7. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/statement.rs +10 -2
  8. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/pager.rs +1 -1
  9. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/builder.rs +2 -5
  10. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/execute.rs +2 -2
  11. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/insn.rs +2 -2
  12. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/mod.rs +20 -20
  13. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/src/rsapi.rs +52 -1
  14. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/Cargo.toml +0 -0
  15. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/README.md +0 -0
  16. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/build.rs +0 -0
  17. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/example.py +0 -0
  18. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/py-bindings-db-aio.mdx +0 -0
  19. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/py-bindings-db.mdx +0 -0
  20. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/py-bindings-sync-aio.mdx +0 -0
  21. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/py-bindings-sync.mdx +0 -0
  22. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/py-bindings-tests-aio.mdx +0 -0
  23. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/py-bindings-tests.mdx +0 -0
  24. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/requirements-dev.txt +0 -0
  25. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/requirements.txt +0 -0
  26. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/src/lib.rs +0 -0
  27. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/src/turso.rs +0 -0
  28. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/src/turso_sync.rs +0 -0
  29. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/tests/__init__.py +0 -0
  30. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/tests/test_database.py +0 -0
  31. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/tests/test_database_aio.py +0 -0
  32. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/tests/test_database_sync.py +0 -0
  33. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/tests/test_database_sync_aio.py +0 -0
  34. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/tests/utils.py +0 -0
  35. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/__init__.py +0 -0
  36. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/aio/__init__.py +0 -0
  37. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/aio/sync/__init__.py +0 -0
  38. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/lib.py +0 -0
  39. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/lib_aio.py +0 -0
  40. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/lib_sync.py +0 -0
  41. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/lib_sync_aio.py +0 -0
  42. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/py.typed +0 -0
  43. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/sync/__init__.py +0 -0
  44. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/bindings/python/turso/worker.py +0 -0
  45. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/Cargo.toml +0 -0
  46. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/assert.rs +0 -0
  47. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/benches/benchmark.rs +0 -0
  48. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/benches/json_benchmark.rs +0 -0
  49. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/benches/mvcc_benchmark.rs +0 -0
  50. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/benches/tpc_h_benchmark.rs +0 -0
  51. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/build.rs +0 -0
  52. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/busy.rs +0 -0
  53. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/error.rs +0 -0
  54. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/ext/dynamic.rs +0 -0
  55. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/ext/mod.rs +0 -0
  56. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/ext/vtab_xconnect.rs +0 -0
  57. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/fast_lock.rs +0 -0
  58. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/functions/datetime.rs +0 -0
  59. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/functions/mod.rs +0 -0
  60. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/functions/printf.rs +0 -0
  61. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/functions/strftime.rs +0 -0
  62. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/aggregate_operator.rs +0 -0
  63. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/compiler.rs +0 -0
  64. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/cursor.rs +0 -0
  65. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/dbsp.rs +0 -0
  66. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/expr_compiler.rs +0 -0
  67. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/filter_operator.rs +0 -0
  68. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/input_operator.rs +0 -0
  69. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/join_operator.rs +0 -0
  70. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/merge_operator.rs +0 -0
  71. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/mod.rs +0 -0
  72. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/operator.rs +0 -0
  73. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/persistence.rs +0 -0
  74. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/project_operator.rs +0 -0
  75. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/incremental/view.rs +0 -0
  76. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/index_method/backing_btree.rs +0 -0
  77. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/index_method/mod.rs +0 -0
  78. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/index_method/toy_vector_sparse_ivf.rs +0 -0
  79. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/info.rs +0 -0
  80. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/clock.rs +0 -0
  81. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/common.rs +0 -0
  82. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/completions.rs +0 -0
  83. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/generic.rs +0 -0
  84. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/io_uring.rs +0 -0
  85. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/memory.rs +0 -0
  86. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/mod.rs +0 -0
  87. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/unix.rs +0 -0
  88. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/vfs.rs +0 -0
  89. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/io/windows.rs +0 -0
  90. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/json/cache.rs +0 -0
  91. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/json/error.rs +0 -0
  92. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/json/jsonb.rs +0 -0
  93. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/json/mod.rs +0 -0
  94. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/json/ops.rs +0 -0
  95. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/json/path.rs +0 -0
  96. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/json/vtab.rs +0 -0
  97. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/mvcc/clock.rs +0 -0
  98. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/mvcc/cursor.rs +0 -0
  99. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/mvcc/database/checkpoint_state_machine.rs +0 -0
  100. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/mvcc/database/mod.rs +0 -0
  101. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/mvcc/database/tests.rs +0 -0
  102. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/mvcc/mod.rs +0 -0
  103. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/mvcc/persistent_storage/logical_log.rs +0 -0
  104. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/mvcc/persistent_storage/mod.rs +0 -0
  105. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/numeric/mod.rs +0 -0
  106. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/numeric/nonnan.rs +0 -0
  107. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/pragma.rs +0 -0
  108. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/pseudo.rs +0 -0
  109. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/schema.rs +0 -0
  110. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/series.rs +0 -0
  111. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/state_machine.rs +0 -0
  112. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/stats.rs +0 -0
  113. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/btree.rs +0 -0
  114. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/buffer_pool.rs +0 -0
  115. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/checksum.rs +0 -0
  116. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/database.rs +0 -0
  117. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/encryption.rs +0 -0
  118. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/journal_mode.rs +0 -0
  119. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/mod.rs +0 -0
  120. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/page_cache.rs +0 -0
  121. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/slot_bitmap.rs +0 -0
  122. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/sqlite3_ondisk.rs +0 -0
  123. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/state_machines.rs +0 -0
  124. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/subjournal.rs +0 -0
  125. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/storage/wal.rs +0 -0
  126. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/time/internal.rs +0 -0
  127. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/time/mod.rs +0 -0
  128. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/aggregation.rs +0 -0
  129. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/alter.rs +0 -0
  130. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/analyze.rs +0 -0
  131. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/attach.rs +0 -0
  132. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/collate.rs +0 -0
  133. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/compound_select.rs +0 -0
  134. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/delete.rs +0 -0
  135. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/display.rs +0 -0
  136. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/emitter.rs +0 -0
  137. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/expr.rs +0 -0
  138. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/expression_index.rs +0 -0
  139. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/fkeys.rs +0 -0
  140. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/group_by.rs +0 -0
  141. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/index.rs +0 -0
  142. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/insert.rs +0 -0
  143. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/integrity_check.rs +0 -0
  144. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/logical.rs +0 -0
  145. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/main_loop.rs +0 -0
  146. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/mod.rs +0 -0
  147. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/optimizer/OPTIMIZER.md +0 -0
  148. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/optimizer/access_method.rs +0 -0
  149. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/optimizer/constraints.rs +0 -0
  150. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/optimizer/cost.rs +0 -0
  151. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/optimizer/join.rs +0 -0
  152. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/optimizer/lift_common_subexpressions.rs +0 -0
  153. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/optimizer/mod.rs +0 -0
  154. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/optimizer/order.rs +0 -0
  155. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/order_by.rs +0 -0
  156. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/plan.rs +0 -0
  157. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/planner.rs +0 -0
  158. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/pragma.rs +0 -0
  159. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/result_row.rs +0 -0
  160. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/rollback.rs +0 -0
  161. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/schema.rs +0 -0
  162. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/select.rs +0 -0
  163. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/subquery.rs +0 -0
  164. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/transaction.rs +0 -0
  165. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/trigger.rs +0 -0
  166. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/trigger_exec.rs +0 -0
  167. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/update.rs +0 -0
  168. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/upsert.rs +0 -0
  169. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/values.rs +0 -0
  170. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/view.rs +0 -0
  171. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/translate/window.rs +0 -0
  172. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/types.rs +0 -0
  173. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/util.rs +0 -0
  174. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/uuid.rs +0 -0
  175. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/affinity.rs +0 -0
  176. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/bloom_filter.rs +0 -0
  177. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/explain.rs +0 -0
  178. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/hash_table.rs +0 -0
  179. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/likeop.rs +0 -0
  180. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/metrics.rs +0 -0
  181. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/rowset.rs +0 -0
  182. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/sorter.rs +0 -0
  183. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vdbe/value.rs +0 -0
  184. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/mod.rs +0 -0
  185. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/concat.rs +0 -0
  186. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/convert.rs +0 -0
  187. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/distance_cos.rs +0 -0
  188. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/distance_dot.rs +0 -0
  189. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/distance_l2.rs +0 -0
  190. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/jaccard.rs +0 -0
  191. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/mod.rs +0 -0
  192. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/serialize.rs +0 -0
  193. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/slice.rs +0 -0
  194. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/operations/text.rs +0 -0
  195. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vector/vector_types.rs +0 -0
  196. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/core/vtab.rs +0 -0
  197. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/extensions/core/Cargo.toml +0 -0
  198. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/extensions/core/README.md +0 -0
  199. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/extensions/core/build.rs +0 -0
  200. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/extensions/core/src/functions.rs +0 -0
  201. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/extensions/core/src/lib.rs +0 -0
  202. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/extensions/core/src/types.rs +0 -0
  203. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/extensions/core/src/vfs_modules.rs +0 -0
  204. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/extensions/core/src/vtabs.rs +0 -0
  205. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/Cargo.toml +0 -0
  206. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/atomic_enum.rs +0 -0
  207. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/ext/agg_derive.rs +0 -0
  208. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/ext/match_ignore_ascii_case.rs +0 -0
  209. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/ext/mod.rs +0 -0
  210. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/ext/scalars.rs +0 -0
  211. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/ext/vfs_derive.rs +0 -0
  212. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/ext/vtab_derive.rs +0 -0
  213. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/lib.rs +0 -0
  214. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/macros/src/test.rs +0 -0
  215. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/Cargo.toml +0 -0
  216. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/README.md +0 -0
  217. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/benches/parser_benchmark.rs +0 -0
  218. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/src/ast/check.rs +0 -0
  219. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/src/ast/fmt.rs +0 -0
  220. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/src/ast.rs +0 -0
  221. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/src/error.rs +0 -0
  222. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/src/lexer.rs +0 -0
  223. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/src/lib.rs +0 -0
  224. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/src/parser.rs +0 -0
  225. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/parser/src/token.rs +0 -0
  226. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/pyproject.toml +0 -0
  227. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/Cargo.toml +0 -0
  228. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/README.md +0 -0
  229. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/bindgen.sh +0 -0
  230. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/readme-sdk-kit.mdx +0 -0
  231. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/src/bindings.rs +0 -0
  232. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/src/capi.rs +0 -0
  233. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/src/lib.rs +0 -0
  234. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit/turso.h +0 -0
  235. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit-macros/Cargo.toml +0 -0
  236. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sdk-kit-macros/src/lib.rs +0 -0
  237. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/.gitignore +0 -0
  238. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/Cargo.toml +0 -0
  239. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/database_replay_generator.rs +0 -0
  240. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/database_sync_engine.rs +0 -0
  241. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/database_sync_engine_io.rs +0 -0
  242. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/database_sync_lazy_storage.rs +0 -0
  243. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/database_sync_operations.rs +0 -0
  244. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/database_tape.rs +0 -0
  245. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/errors.rs +0 -0
  246. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/io_operations.rs +0 -0
  247. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/lib.rs +0 -0
  248. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/server_proto.rs +0 -0
  249. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/sparse_io.rs +0 -0
  250. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/types.rs +0 -0
  251. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/engine/src/wal_session.rs +0 -0
  252. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/Cargo.toml +0 -0
  253. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/bindgen.sh +0 -0
  254. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/src/bindings.rs +0 -0
  255. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/src/capi.rs +0 -0
  256. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/src/lib.rs +0 -0
  257. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/src/rsapi.rs +0 -0
  258. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/src/sync_engine_io.rs +0 -0
  259. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/src/turso_async_operation.rs +0 -0
  260. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/sync/sdk-kit/turso_sync.h +0 -0
  261. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/__init__.py +0 -0
  262. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/aio/__init__.py +0 -0
  263. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/aio/sync/__init__.py +0 -0
  264. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/lib.py +0 -0
  265. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/lib_aio.py +0 -0
  266. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/lib_sync.py +0 -0
  267. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/lib_sync_aio.py +0 -0
  268. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/py.typed +0 -0
  269. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/sync/__init__.py +0 -0
  270. {pyturso-0.4.3rc1 → pyturso-0.4.3rc2}/turso/worker.py +0 -0
@@ -896,7 +896,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
896
896
 
897
897
  [[package]]
898
898
  name = "core_tester"
899
- version = "0.4.3-pre.1"
899
+ version = "0.4.3-pre.2"
900
900
  dependencies = [
901
901
  "anyhow",
902
902
  "assert_cmd",
@@ -2729,7 +2729,7 @@ dependencies = [
2729
2729
 
2730
2730
  [[package]]
2731
2731
  name = "limbo_completion"
2732
- version = "0.4.3-pre.1"
2732
+ version = "0.4.3-pre.2"
2733
2733
  dependencies = [
2734
2734
  "mimalloc",
2735
2735
  "turso_ext",
@@ -2737,7 +2737,7 @@ dependencies = [
2737
2737
 
2738
2738
  [[package]]
2739
2739
  name = "limbo_crypto"
2740
- version = "0.4.3-pre.1"
2740
+ version = "0.4.3-pre.2"
2741
2741
  dependencies = [
2742
2742
  "blake3",
2743
2743
  "data-encoding",
@@ -2750,7 +2750,7 @@ dependencies = [
2750
2750
 
2751
2751
  [[package]]
2752
2752
  name = "limbo_csv"
2753
- version = "0.4.3-pre.1"
2753
+ version = "0.4.3-pre.2"
2754
2754
  dependencies = [
2755
2755
  "csv",
2756
2756
  "mimalloc",
@@ -2760,7 +2760,7 @@ dependencies = [
2760
2760
 
2761
2761
  [[package]]
2762
2762
  name = "limbo_fuzzy"
2763
- version = "0.4.3-pre.1"
2763
+ version = "0.4.3-pre.2"
2764
2764
  dependencies = [
2765
2765
  "mimalloc",
2766
2766
  "turso_ext",
@@ -2768,7 +2768,7 @@ dependencies = [
2768
2768
 
2769
2769
  [[package]]
2770
2770
  name = "limbo_ipaddr"
2771
- version = "0.4.3-pre.1"
2771
+ version = "0.4.3-pre.2"
2772
2772
  dependencies = [
2773
2773
  "ipnetwork",
2774
2774
  "mimalloc",
@@ -2777,7 +2777,7 @@ dependencies = [
2777
2777
 
2778
2778
  [[package]]
2779
2779
  name = "limbo_percentile"
2780
- version = "0.4.3-pre.1"
2780
+ version = "0.4.3-pre.2"
2781
2781
  dependencies = [
2782
2782
  "mimalloc",
2783
2783
  "turso_ext",
@@ -2785,7 +2785,7 @@ dependencies = [
2785
2785
 
2786
2786
  [[package]]
2787
2787
  name = "limbo_regexp"
2788
- version = "0.4.3-pre.1"
2788
+ version = "0.4.3-pre.2"
2789
2789
  dependencies = [
2790
2790
  "mimalloc",
2791
2791
  "regex",
@@ -2794,7 +2794,7 @@ dependencies = [
2794
2794
 
2795
2795
  [[package]]
2796
2796
  name = "limbo_sim"
2797
- version = "0.4.3-pre.1"
2797
+ version = "0.4.3-pre.2"
2798
2798
  dependencies = [
2799
2799
  "anyhow",
2800
2800
  "bitflags 2.9.4",
@@ -2831,7 +2831,7 @@ dependencies = [
2831
2831
 
2832
2832
  [[package]]
2833
2833
  name = "limbo_sqlite_test_ext"
2834
- version = "0.4.3-pre.1"
2834
+ version = "0.4.3-pre.2"
2835
2835
  dependencies = [
2836
2836
  "cc",
2837
2837
  ]
@@ -3718,7 +3718,7 @@ dependencies = [
3718
3718
 
3719
3719
  [[package]]
3720
3720
  name = "py-turso"
3721
- version = "0.4.3-pre.1"
3721
+ version = "0.4.3-pre.2"
3722
3722
  dependencies = [
3723
3723
  "anyhow",
3724
3724
  "pyo3",
@@ -4595,7 +4595,7 @@ checksum = "d372029cb5195f9ab4e4b9aef550787dce78b124fcaee8d82519925defcd6f0d"
4595
4595
 
4596
4596
  [[package]]
4597
4597
  name = "sql_generation"
4598
- version = "0.4.3-pre.1"
4598
+ version = "0.4.3-pre.2"
4599
4599
  dependencies = [
4600
4600
  "anarchist-readable-name-generator-lib",
4601
4601
  "anyhow",
@@ -5299,7 +5299,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
5299
5299
 
5300
5300
  [[package]]
5301
5301
  name = "turso"
5302
- version = "0.4.3-pre.1"
5302
+ version = "0.4.3-pre.2"
5303
5303
  dependencies = [
5304
5304
  "anyhow",
5305
5305
  "bytes",
@@ -5323,14 +5323,14 @@ dependencies = [
5323
5323
 
5324
5324
  [[package]]
5325
5325
  name = "turso-dotnet"
5326
- version = "0.4.3-pre.1"
5326
+ version = "0.4.3-pre.2"
5327
5327
  dependencies = [
5328
5328
  "turso_core",
5329
5329
  ]
5330
5330
 
5331
5331
  [[package]]
5332
5332
  name = "turso-java"
5333
- version = "0.4.3-pre.1"
5333
+ version = "0.4.3-pre.2"
5334
5334
  dependencies = [
5335
5335
  "jni",
5336
5336
  "thiserror 2.0.16",
@@ -5339,7 +5339,7 @@ dependencies = [
5339
5339
 
5340
5340
  [[package]]
5341
5341
  name = "turso_cli"
5342
- version = "0.4.3-pre.1"
5342
+ version = "0.4.3-pre.2"
5343
5343
  dependencies = [
5344
5344
  "anyhow",
5345
5345
  "bytes",
@@ -5380,7 +5380,7 @@ dependencies = [
5380
5380
 
5381
5381
  [[package]]
5382
5382
  name = "turso_core"
5383
- version = "0.4.3-pre.1"
5383
+ version = "0.4.3-pre.2"
5384
5384
  dependencies = [
5385
5385
  "aegis",
5386
5386
  "aes",
@@ -5447,7 +5447,7 @@ dependencies = [
5447
5447
 
5448
5448
  [[package]]
5449
5449
  name = "turso_dart"
5450
- version = "0.4.3-pre.1"
5450
+ version = "0.4.3-pre.2"
5451
5451
  dependencies = [
5452
5452
  "flutter_rust_bridge",
5453
5453
  "turso_core",
@@ -5455,7 +5455,7 @@ dependencies = [
5455
5455
 
5456
5456
  [[package]]
5457
5457
  name = "turso_ext"
5458
- version = "0.4.3-pre.1"
5458
+ version = "0.4.3-pre.2"
5459
5459
  dependencies = [
5460
5460
  "chrono",
5461
5461
  "getrandom 0.3.2",
@@ -5464,7 +5464,7 @@ dependencies = [
5464
5464
 
5465
5465
  [[package]]
5466
5466
  name = "turso_ext_tests"
5467
- version = "0.4.3-pre.1"
5467
+ version = "0.4.3-pre.2"
5468
5468
  dependencies = [
5469
5469
  "env_logger 0.11.7",
5470
5470
  "lazy_static",
@@ -5475,7 +5475,7 @@ dependencies = [
5475
5475
 
5476
5476
  [[package]]
5477
5477
  name = "turso_macros"
5478
- version = "0.4.3-pre.1"
5478
+ version = "0.4.3-pre.2"
5479
5479
  dependencies = [
5480
5480
  "proc-macro2",
5481
5481
  "quote",
@@ -5484,7 +5484,7 @@ dependencies = [
5484
5484
 
5485
5485
  [[package]]
5486
5486
  name = "turso_node"
5487
- version = "0.4.3-pre.1"
5487
+ version = "0.4.3-pre.2"
5488
5488
  dependencies = [
5489
5489
  "chrono",
5490
5490
  "napi",
@@ -5497,7 +5497,7 @@ dependencies = [
5497
5497
 
5498
5498
  [[package]]
5499
5499
  name = "turso_parser"
5500
- version = "0.4.3-pre.1"
5500
+ version = "0.4.3-pre.2"
5501
5501
  dependencies = [
5502
5502
  "bitflags 2.9.4",
5503
5503
  "criterion",
@@ -5514,7 +5514,7 @@ dependencies = [
5514
5514
 
5515
5515
  [[package]]
5516
5516
  name = "turso_sdk_kit"
5517
- version = "0.4.3-pre.1"
5517
+ version = "0.4.3-pre.2"
5518
5518
  dependencies = [
5519
5519
  "bindgen",
5520
5520
  "env_logger 0.11.7",
@@ -5527,7 +5527,7 @@ dependencies = [
5527
5527
 
5528
5528
  [[package]]
5529
5529
  name = "turso_sdk_kit_macros"
5530
- version = "0.4.3-pre.1"
5530
+ version = "0.4.3-pre.2"
5531
5531
  dependencies = [
5532
5532
  "proc-macro2",
5533
5533
  "quote",
@@ -5536,7 +5536,7 @@ dependencies = [
5536
5536
 
5537
5537
  [[package]]
5538
5538
  name = "turso_sqlite3"
5539
- version = "0.4.3-pre.1"
5539
+ version = "0.4.3-pre.2"
5540
5540
  dependencies = [
5541
5541
  "env_logger 0.11.7",
5542
5542
  "libc",
@@ -5549,7 +5549,7 @@ dependencies = [
5549
5549
 
5550
5550
  [[package]]
5551
5551
  name = "turso_stress"
5552
- version = "0.4.3-pre.1"
5552
+ version = "0.4.3-pre.2"
5553
5553
  dependencies = [
5554
5554
  "antithesis_sdk",
5555
5555
  "clap",
@@ -5565,7 +5565,7 @@ dependencies = [
5565
5565
 
5566
5566
  [[package]]
5567
5567
  name = "turso_sync_engine"
5568
- version = "0.4.3-pre.1"
5568
+ version = "0.4.3-pre.2"
5569
5569
  dependencies = [
5570
5570
  "base64 0.22.1",
5571
5571
  "bytes",
@@ -5592,7 +5592,7 @@ dependencies = [
5592
5592
 
5593
5593
  [[package]]
5594
5594
  name = "turso_sync_js"
5595
- version = "0.4.3-pre.1"
5595
+ version = "0.4.3-pre.2"
5596
5596
  dependencies = [
5597
5597
  "genawaiter",
5598
5598
  "napi",
@@ -5607,7 +5607,7 @@ dependencies = [
5607
5607
 
5608
5608
  [[package]]
5609
5609
  name = "turso_sync_sdk_kit"
5610
- version = "0.4.3-pre.1"
5610
+ version = "0.4.3-pre.2"
5611
5611
  dependencies = [
5612
5612
  "bindgen",
5613
5613
  "env_logger 0.11.7",
@@ -5624,7 +5624,7 @@ dependencies = [
5624
5624
 
5625
5625
  [[package]]
5626
5626
  name = "turso_whopper"
5627
- version = "0.4.3-pre.1"
5627
+ version = "0.4.3-pre.2"
5628
5628
  dependencies = [
5629
5629
  "anyhow",
5630
5630
  "clap",
@@ -6,24 +6,24 @@ members = ["bindings/python"]
6
6
  exclude = ["perf/latency/limbo", "turso-test-runner"]
7
7
 
8
8
  [workspace.package]
9
- version = "0.4.3-pre.1"
9
+ version = "0.4.3-pre.2"
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.3-pre.1" }
17
- turso_node = { path = "bindings/javascript", version = "0.4.3-pre.1" }
18
- turso_sdk_kit = { path = "sdk-kit", version = "0.4.3-pre.1" }
19
- turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.3-pre.1" }
20
- turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.3-pre.1" }
21
- limbo_completion = { path = "extensions/completion", version = "0.4.3-pre.1" }
22
- turso_core = { path = "core", version = "0.4.3-pre.1" }
23
- turso_sync_engine = { path = "sync/engine", version = "0.4.3-pre.1" }
24
- turso_ext = { path = "extensions/core", version = "0.4.3-pre.1" }
25
- turso_macros = { path = "macros", version = "0.4.3-pre.1" }
26
- turso_parser = { path = "parser", version = "0.4.3-pre.1" }
16
+ turso = { path = "bindings/rust", version = "0.4.3-pre.2" }
17
+ turso_node = { path = "bindings/javascript", version = "0.4.3-pre.2" }
18
+ turso_sdk_kit = { path = "sdk-kit", version = "0.4.3-pre.2" }
19
+ turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.3-pre.2" }
20
+ turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.3-pre.2" }
21
+ limbo_completion = { path = "extensions/completion", version = "0.4.3-pre.2" }
22
+ turso_core = { path = "core", version = "0.4.3-pre.2" }
23
+ turso_sync_engine = { path = "sync/engine", version = "0.4.3-pre.2" }
24
+ turso_ext = { path = "extensions/core", version = "0.4.3-pre.2" }
25
+ turso_macros = { path = "macros", version = "0.4.3-pre.2" }
26
+ turso_parser = { path = "parser", version = "0.4.3-pre.2" }
27
27
  sql_generation = { path = "sql_generation" }
28
28
  strum = { version = "0.26", features = ["derive"] }
29
29
  strum_macros = "0.26"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyturso
3
- Version: 0.4.3rc1
3
+ Version: 0.4.3rc2
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Programming Language :: Python
6
6
  Classifier: Programming Language :: Python :: 3
@@ -611,7 +611,7 @@ impl Display for MathFunc {
611
611
  }
612
612
  }
613
613
 
614
- #[derive(Debug)]
614
+ #[derive(Debug, Clone)]
615
615
  pub enum AlterTableFunc {
616
616
  RenameTable,
617
617
  AlterColumn,
@@ -628,7 +628,7 @@ impl Display for AlterTableFunc {
628
628
  }
629
629
  }
630
630
 
631
- #[derive(Debug)]
631
+ #[derive(Debug, Clone)]
632
632
  pub enum Func {
633
633
  Agg(AggFunc),
634
634
  Scalar(ScalarFunc),
@@ -655,7 +655,7 @@ impl Display for Func {
655
655
  }
656
656
  }
657
657
 
658
- #[derive(Debug)]
658
+ #[derive(Debug, Clone)]
659
659
  pub struct FuncCtx {
660
660
  pub func: Func,
661
661
  pub arg_count: usize,
@@ -110,7 +110,7 @@ use util::parse_schema_rows;
110
110
  pub use util::IOExt;
111
111
  pub use vdbe::{
112
112
  builder::QueryMode, explain::EXPLAIN_COLUMNS, explain::EXPLAIN_QUERY_PLAN_COLUMNS,
113
- FromValueRow, Register,
113
+ FromValueRow, Program, Register,
114
114
  };
115
115
 
116
116
  /// Configuration for database features
@@ -21,7 +21,7 @@ impl Parameter {
21
21
  }
22
22
  }
23
23
 
24
- #[derive(Debug)]
24
+ #[derive(Debug, Clone)]
25
25
  pub struct Parameters {
26
26
  next_index: NonZero<usize>,
27
27
  pub list: Vec<Parameter>,
@@ -86,8 +86,16 @@ impl Statement {
86
86
  self.query_mode
87
87
  }
88
88
 
89
+ pub fn get_program(&self) -> &vdbe::Program {
90
+ &self.program
91
+ }
92
+
93
+ pub fn get_pager(&self) -> &Arc<Pager> {
94
+ &self.pager
95
+ }
96
+
89
97
  pub fn n_change(&self) -> i64 {
90
- self.program
98
+ self.state
91
99
  .n_change
92
100
  .load(std::sync::atomic::Ordering::SeqCst)
93
101
  }
@@ -451,7 +459,7 @@ impl Statement {
451
459
  // as abort uses auto_txn_cleanup value - it needs to be called before state.reset
452
460
  self.program.abort(&self.pager, None, &mut self.state);
453
461
  self.state.reset(max_registers, max_cursors);
454
- self.program.n_change.store(0, Ordering::SeqCst);
462
+ self.state.n_change.store(0, Ordering::SeqCst);
455
463
  self.busy = false;
456
464
  self.busy_handler_state = None;
457
465
  }
@@ -4305,7 +4305,7 @@ pub fn default_page1(cipher: Option<&CipherMode>) -> PageRef {
4305
4305
  page
4306
4306
  }
4307
4307
 
4308
- #[derive(Debug)]
4308
+ #[derive(Debug, Clone, Copy)]
4309
4309
  pub struct CreateBTreeFlags(pub u8);
4310
4310
  impl CreateBTreeFlags {
4311
4311
  pub const TABLE: u8 = 0b0001;
@@ -1,7 +1,6 @@
1
- use parking_lot::RwLock;
2
1
  use std::{
3
2
  collections::HashMap,
4
- sync::{atomic::AtomicI64, Arc},
3
+ sync::Arc,
5
4
  };
6
5
 
7
6
  use tracing::{instrument, Level};
@@ -39,7 +38,7 @@ impl TableRefIdCounter {
39
38
  }
40
39
  }
41
40
 
42
- use super::{BranchOffset, CursorID, ExplainState, Insn, InsnReference, JumpTarget, Program};
41
+ use super::{BranchOffset, CursorID, Insn, InsnReference, JumpTarget, Program};
43
42
 
44
43
  /// A key that uniquely identifies a cursor.
45
44
  /// The key is a pair of table reference id and index.
@@ -1264,7 +1263,6 @@ impl ProgramBuilder {
1264
1263
  comments: self.comments,
1265
1264
  connection,
1266
1265
  parameters: self.parameters,
1267
- n_change: AtomicI64::new(0),
1268
1266
  change_cnt_on,
1269
1267
  result_columns: self.result_columns,
1270
1268
  table_references: self.table_references,
@@ -1275,7 +1273,6 @@ impl ProgramBuilder {
1275
1273
  is_subprogram: self.is_subprogram,
1276
1274
  contains_trigger_subprograms,
1277
1275
  resolve_type: self.resolve_type,
1278
- explain_state: RwLock::new(ExplainState::default()),
1279
1276
  })
1280
1277
  }
1281
1278
  }
@@ -6440,7 +6440,7 @@ pub fn op_insert(
6440
6440
  };
6441
6441
  if let Some(rowid) = maybe_rowid {
6442
6442
  program.connection.update_last_rowid(rowid);
6443
- program
6443
+ state
6444
6444
  .n_change
6445
6445
  .fetch_add(1, std::sync::atomic::Ordering::SeqCst);
6446
6446
  }
@@ -6660,7 +6660,7 @@ pub fn op_delete(
6660
6660
  if !is_part_of_update {
6661
6661
  // DELETEs do not count towards the total changes if they are part of an UPDATE statement,
6662
6662
  // i.e. the DELETE and subsequent INSERT of a row are the same "change".
6663
- program
6663
+ state
6664
6664
  .n_change
6665
6665
  .fetch_add(1, std::sync::atomic::Ordering::SeqCst);
6666
6666
  }
@@ -169,7 +169,7 @@ impl<T: Copy + std::fmt::Display> std::fmt::Display for RegisterOrLiteral<T> {
169
169
  }
170
170
 
171
171
  /// Data for HashBuild instruction (boxed to keep Insn small).
172
- #[derive(Debug)]
172
+ #[derive(Debug, Clone)]
173
173
  pub struct HashBuildData {
174
174
  pub cursor_id: CursorID,
175
175
  pub key_start_reg: usize,
@@ -186,7 +186,7 @@ pub struct HashBuildData {
186
186
 
187
187
  // There are currently 190 opcodes in sqlite
188
188
  #[repr(u8)]
189
- #[derive(Description, Debug, EnumDiscriminants)]
189
+ #[derive(Description, Debug, Clone, EnumDiscriminants)]
190
190
  #[strum_discriminants(vis(pub(crate)))]
191
191
  #[strum_discriminants(derive(VariantArray, EnumCount, FromRepr))]
192
192
  #[strum_discriminants(name(InsnVariants))]
@@ -378,6 +378,8 @@ pub struct ProgramState {
378
378
  op_hash_probe_state: Option<OpHashProbeState>,
379
379
  hash_tables: HashMap<usize, HashTable>,
380
380
  uses_subjournal: bool,
381
+ pub n_change: AtomicI64,
382
+ pub explain_state: RwLock<ExplainState>,
381
383
  }
382
384
 
383
385
  impl std::fmt::Debug for Program {
@@ -447,6 +449,8 @@ impl ProgramState {
447
449
  bloom_filters: HashMap::new(),
448
450
  hash_tables: HashMap::new(),
449
451
  uses_subjournal: false,
452
+ n_change: AtomicI64::new(0),
453
+ explain_state: RwLock::new(ExplainState::default()),
450
454
  }
451
455
  }
452
456
 
@@ -540,6 +544,8 @@ impl ProgramState {
540
544
  self.hash_tables.clear();
541
545
  self.op_hash_build_state = None;
542
546
  self.op_hash_probe_state = None;
547
+ self.n_change.store(0, Ordering::SeqCst);
548
+ *self.explain_state.write() = ExplainState::default();
543
549
  }
544
550
 
545
551
  pub fn get_cursor(&mut self, cursor_id: CursorID) -> &mut Cursor {
@@ -721,6 +727,7 @@ pub struct ExplainState {
721
727
  subprogram_start_pc: Option<usize>,
722
728
  }
723
729
 
730
+ #[derive(Clone)]
724
731
  pub struct Program {
725
732
  pub max_registers: usize,
726
733
  // we store original indices because we don't want to create new vec from
@@ -730,7 +737,6 @@ pub struct Program {
730
737
  pub comments: Vec<(InsnReference, &'static str)>,
731
738
  pub parameters: crate::parameters::Parameters,
732
739
  pub connection: Arc<Connection>,
733
- pub n_change: AtomicI64,
734
740
  pub change_cnt_on: bool,
735
741
  pub result_columns: Vec<ResultSetColumn>,
736
742
  pub table_references: TableReferences,
@@ -750,7 +756,6 @@ pub struct Program {
750
756
  /// Whether the program contains any trigger subprograms.
751
757
  pub contains_trigger_subprograms: bool,
752
758
  pub resolve_type: ResolveType,
753
- pub explain_state: RwLock<ExplainState>,
754
759
  }
755
760
 
756
761
  impl Program {
@@ -804,7 +809,7 @@ impl Program {
804
809
  // FIXME: do we need this?
805
810
  state.metrics.vm_steps = state.metrics.vm_steps.saturating_add(1);
806
811
 
807
- let mut explain_state = self.explain_state.write();
812
+ let mut explain_state = state.explain_state.write();
808
813
 
809
814
  // Check if we're processing a subprogram
810
815
  if let Some(sub_idx) = explain_state.current_subprogram_index {
@@ -848,7 +853,9 @@ impl Program {
848
853
  // Process the subprogram - it will handle its own explain_step internally
849
854
  // The subprogram's explain_step will process all its instructions (including any nested subprograms)
850
855
  // and return StepResult::Row for each instruction, then StepResult::Done when finished
856
+ drop(explain_state);
851
857
  let result = p.step(state, pager.clone(), QueryMode::Explain, None)?;
858
+ let mut explain_state = state.explain_state.write();
852
859
 
853
860
  match result {
854
861
  StepResult::Done => {
@@ -1234,22 +1241,14 @@ impl Program {
1234
1241
  let TransactionState::Write { .. } = connection.get_tx_state() else {
1235
1242
  unreachable!("invalid state for write commit step")
1236
1243
  };
1237
- self.step_end_write_txn(
1238
- &pager,
1239
- &mut program_state.commit_state,
1240
- &connection,
1241
- rollback,
1242
- )
1244
+ self.step_end_write_txn(&pager, &connection, program_state, rollback)
1243
1245
  } else if auto_commit {
1244
1246
  let current_state = connection.get_tx_state();
1245
1247
  tracing::trace!("Auto-commit state: {:?}", current_state);
1246
1248
  match current_state {
1247
- TransactionState::Write { .. } => self.step_end_write_txn(
1248
- &pager,
1249
- &mut program_state.commit_state,
1250
- &connection,
1251
- rollback,
1252
- ),
1249
+ TransactionState::Write { .. } => {
1250
+ self.step_end_write_txn(&pager, &connection, program_state, rollback)
1251
+ }
1253
1252
  TransactionState::Read => {
1254
1253
  connection.set_tx_state(TransactionState::None);
1255
1254
  pager.end_read_tx();
@@ -1263,21 +1262,22 @@ impl Program {
1263
1262
  } else {
1264
1263
  if self.change_cnt_on {
1265
1264
  self.connection
1266
- .set_changes(self.n_change.load(Ordering::SeqCst));
1265
+ .set_changes(program_state.n_change.load(Ordering::SeqCst));
1267
1266
  }
1268
1267
  Ok(IOResult::Done(()))
1269
1268
  }
1270
1269
  }
1271
1270
  }
1272
1271
 
1273
- #[instrument(skip(self, pager, connection), level = Level::DEBUG)]
1272
+ #[instrument(skip(self, pager, connection, program_state), level = Level::DEBUG)]
1274
1273
  fn step_end_write_txn(
1275
1274
  &self,
1276
1275
  pager: &Arc<Pager>,
1277
- commit_state: &mut CommitState,
1278
1276
  connection: &Connection,
1277
+ program_state: &mut ProgramState,
1279
1278
  rollback: bool,
1280
1279
  ) -> Result<IOResult<()>> {
1280
+ let commit_state = &mut program_state.commit_state;
1281
1281
  let cacheflush_status = if !rollback {
1282
1282
  match pager.commit_tx(connection) {
1283
1283
  Ok(status) => status,
@@ -1287,7 +1287,7 @@ impl Program {
1287
1287
  tracing::warn!("Commit succeeded but autocheckpoint failed: {}", msg);
1288
1288
  if self.change_cnt_on {
1289
1289
  self.connection
1290
- .set_changes(self.n_change.load(Ordering::SeqCst));
1290
+ .set_changes(program_state.n_change.load(Ordering::SeqCst));
1291
1291
  }
1292
1292
  // Update global schema if this was a DDL transaction.
1293
1293
  // Must be done before clearing TX state, otherwise abort() won't know
@@ -1310,7 +1310,7 @@ impl Program {
1310
1310
  IOResult::Done(_) => {
1311
1311
  if self.change_cnt_on {
1312
1312
  self.connection
1313
- .set_changes(self.n_change.load(Ordering::SeqCst));
1313
+ .set_changes(program_state.n_change.load(Ordering::SeqCst));
1314
1314
  }
1315
1315
  connection.set_tx_state(TransactionState::None);
1316
1316
  *commit_state = CommitState::Ready;