pyturso 0.4.2__tar.gz → 0.4.3__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.
- {pyturso-0.4.2 → pyturso-0.4.3}/Cargo.lock +31 -31
- {pyturso-0.4.2 → pyturso-0.4.3}/Cargo.toml +12 -12
- {pyturso-0.4.2 → pyturso-0.4.3}/PKG-INFO +1 -1
- {pyturso-0.4.2 → pyturso-0.4.3}/core/function.rs +3 -3
- {pyturso-0.4.2 → pyturso-0.4.3}/core/lib.rs +4 -1
- {pyturso-0.4.2 → pyturso-0.4.3}/core/parameters.rs +1 -1
- {pyturso-0.4.2 → pyturso-0.4.3}/core/statement.rs +10 -2
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/btree.rs +7 -1
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/pager.rs +19 -7
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/wal.rs +4 -7
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/schema.rs +3 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/builder.rs +2 -5
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/execute.rs +2 -2
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/insn.rs +2 -2
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/mod.rs +20 -20
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/src/rsapi.rs +52 -1
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/README.md +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/build.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/example.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/py-bindings-db-aio.mdx +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/py-bindings-db.mdx +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/py-bindings-sync-aio.mdx +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/py-bindings-sync.mdx +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/py-bindings-tests-aio.mdx +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/py-bindings-tests.mdx +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/requirements-dev.txt +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/requirements.txt +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/src/lib.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/src/turso.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/src/turso_sync.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/tests/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/tests/test_database.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/tests/test_database_aio.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/tests/test_database_sync.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/tests/test_database_sync_aio.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/tests/utils.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/aio/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/aio/sync/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/lib.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/lib_aio.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/lib_sync.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/lib_sync_aio.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/py.typed +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/sync/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/bindings/python/turso/worker.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/assert.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/benches/benchmark.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/benches/json_benchmark.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/benches/mvcc_benchmark.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/benches/tpc_h_benchmark.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/build.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/busy.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/error.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/ext/dynamic.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/ext/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/ext/vtab_xconnect.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/fast_lock.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/functions/datetime.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/functions/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/functions/printf.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/functions/strftime.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/aggregate_operator.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/compiler.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/cursor.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/dbsp.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/expr_compiler.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/filter_operator.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/input_operator.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/join_operator.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/merge_operator.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/operator.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/persistence.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/project_operator.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/incremental/view.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/index_method/backing_btree.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/index_method/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/index_method/toy_vector_sparse_ivf.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/info.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/clock.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/common.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/completions.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/generic.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/io_uring.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/memory.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/unix.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/vfs.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/io/windows.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/json/cache.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/json/error.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/json/jsonb.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/json/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/json/ops.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/json/path.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/json/vtab.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/mvcc/clock.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/mvcc/cursor.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/mvcc/database/checkpoint_state_machine.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/mvcc/database/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/mvcc/database/tests.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/mvcc/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/mvcc/persistent_storage/logical_log.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/mvcc/persistent_storage/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/numeric/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/numeric/nonnan.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/pragma.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/pseudo.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/schema.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/series.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/state_machine.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/stats.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/buffer_pool.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/checksum.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/database.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/encryption.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/journal_mode.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/page_cache.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/slot_bitmap.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/sqlite3_ondisk.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/state_machines.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/storage/subjournal.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/time/internal.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/time/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/aggregation.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/alter.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/analyze.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/attach.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/collate.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/compound_select.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/delete.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/display.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/emitter.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/expr.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/expression_index.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/fkeys.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/group_by.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/index.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/insert.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/integrity_check.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/logical.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/main_loop.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/optimizer/OPTIMIZER.md +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/optimizer/access_method.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/optimizer/constraints.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/optimizer/cost.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/optimizer/join.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/optimizer/lift_common_subexpressions.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/optimizer/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/optimizer/order.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/order_by.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/plan.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/planner.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/pragma.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/result_row.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/rollback.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/select.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/subquery.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/transaction.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/trigger.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/trigger_exec.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/update.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/upsert.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/values.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/view.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/translate/window.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/types.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/util.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/uuid.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/affinity.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/bloom_filter.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/explain.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/hash_table.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/likeop.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/metrics.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/rowset.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/sorter.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vdbe/value.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/concat.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/convert.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/distance_cos.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/distance_dot.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/distance_l2.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/jaccard.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/serialize.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/slice.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/operations/text.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vector/vector_types.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/core/vtab.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/extensions/core/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/extensions/core/README.md +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/extensions/core/build.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/extensions/core/src/functions.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/extensions/core/src/lib.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/extensions/core/src/types.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/extensions/core/src/vfs_modules.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/extensions/core/src/vtabs.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/atomic_enum.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/ext/agg_derive.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/ext/match_ignore_ascii_case.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/ext/mod.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/ext/scalars.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/ext/vfs_derive.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/ext/vtab_derive.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/lib.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/macros/src/test.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/README.md +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/benches/parser_benchmark.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/src/ast/check.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/src/ast/fmt.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/src/ast.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/src/error.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/src/lexer.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/src/lib.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/src/parser.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/parser/src/token.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/pyproject.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/README.md +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/bindgen.sh +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/readme-sdk-kit.mdx +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/src/bindings.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/src/capi.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/src/lib.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit/turso.h +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit-macros/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sdk-kit-macros/src/lib.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/.gitignore +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/database_replay_generator.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/database_sync_engine.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/database_sync_engine_io.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/database_sync_lazy_storage.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/database_sync_operations.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/database_tape.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/errors.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/io_operations.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/lib.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/server_proto.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/sparse_io.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/types.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/engine/src/wal_session.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/Cargo.toml +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/bindgen.sh +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/src/bindings.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/src/capi.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/src/lib.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/src/rsapi.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/src/sync_engine_io.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/src/turso_async_operation.rs +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/sync/sdk-kit/turso_sync.h +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/aio/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/aio/sync/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/lib.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/lib_aio.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/lib_sync.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/lib_sync_aio.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/py.typed +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/turso/sync/__init__.py +0 -0
- {pyturso-0.4.2 → pyturso-0.4.3}/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.
|
|
899
|
+
version = "0.4.3"
|
|
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.
|
|
2732
|
+
version = "0.4.3"
|
|
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.
|
|
2740
|
+
version = "0.4.3"
|
|
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.
|
|
2753
|
+
version = "0.4.3"
|
|
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.
|
|
2763
|
+
version = "0.4.3"
|
|
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.
|
|
2771
|
+
version = "0.4.3"
|
|
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.
|
|
2780
|
+
version = "0.4.3"
|
|
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.
|
|
2788
|
+
version = "0.4.3"
|
|
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.
|
|
2797
|
+
version = "0.4.3"
|
|
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.
|
|
2834
|
+
version = "0.4.3"
|
|
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.
|
|
3721
|
+
version = "0.4.3"
|
|
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.
|
|
4598
|
+
version = "0.4.3"
|
|
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.
|
|
5302
|
+
version = "0.4.3"
|
|
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.
|
|
5326
|
+
version = "0.4.3"
|
|
5327
5327
|
dependencies = [
|
|
5328
5328
|
"turso_core",
|
|
5329
5329
|
]
|
|
5330
5330
|
|
|
5331
5331
|
[[package]]
|
|
5332
5332
|
name = "turso-java"
|
|
5333
|
-
version = "0.4.
|
|
5333
|
+
version = "0.4.3"
|
|
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.
|
|
5342
|
+
version = "0.4.3"
|
|
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.
|
|
5383
|
+
version = "0.4.3"
|
|
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.
|
|
5450
|
+
version = "0.4.3"
|
|
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.
|
|
5458
|
+
version = "0.4.3"
|
|
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.
|
|
5467
|
+
version = "0.4.3"
|
|
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.
|
|
5478
|
+
version = "0.4.3"
|
|
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.
|
|
5487
|
+
version = "0.4.3"
|
|
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.
|
|
5500
|
+
version = "0.4.3"
|
|
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.
|
|
5517
|
+
version = "0.4.3"
|
|
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.
|
|
5530
|
+
version = "0.4.3"
|
|
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.
|
|
5539
|
+
version = "0.4.3"
|
|
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.
|
|
5552
|
+
version = "0.4.3"
|
|
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.
|
|
5568
|
+
version = "0.4.3"
|
|
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.
|
|
5595
|
+
version = "0.4.3"
|
|
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.
|
|
5610
|
+
version = "0.4.3"
|
|
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.
|
|
5627
|
+
version = "0.4.3"
|
|
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.
|
|
9
|
+
version = "0.4.3"
|
|
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.
|
|
17
|
-
turso_node = { path = "bindings/javascript", version = "0.4.
|
|
18
|
-
turso_sdk_kit = { path = "sdk-kit", version = "0.4.
|
|
19
|
-
turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.
|
|
20
|
-
turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.
|
|
21
|
-
limbo_completion = { path = "extensions/completion", version = "0.4.
|
|
22
|
-
turso_core = { path = "core", version = "0.4.
|
|
23
|
-
turso_sync_engine = { path = "sync/engine", version = "0.4.
|
|
24
|
-
turso_ext = { path = "extensions/core", version = "0.4.
|
|
25
|
-
turso_macros = { path = "macros", version = "0.4.
|
|
26
|
-
turso_parser = { path = "parser", version = "0.4.
|
|
16
|
+
turso = { path = "bindings/rust", version = "0.4.3" }
|
|
17
|
+
turso_node = { path = "bindings/javascript", version = "0.4.3" }
|
|
18
|
+
turso_sdk_kit = { path = "sdk-kit", version = "0.4.3" }
|
|
19
|
+
turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.3" }
|
|
20
|
+
turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.3" }
|
|
21
|
+
limbo_completion = { path = "extensions/completion", version = "0.4.3" }
|
|
22
|
+
turso_core = { path = "core", version = "0.4.3" }
|
|
23
|
+
turso_sync_engine = { path = "sync/engine", version = "0.4.3" }
|
|
24
|
+
turso_ext = { path = "extensions/core", version = "0.4.3" }
|
|
25
|
+
turso_macros = { path = "macros", version = "0.4.3" }
|
|
26
|
+
turso_parser = { path = "parser", version = "0.4.3" }
|
|
27
27
|
sql_generation = { path = "sql_generation" }
|
|
28
28
|
strum = { version = "0.26", features = ["derive"] }
|
|
29
29
|
strum_macros = "0.26"
|
|
@@ -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
|
|
@@ -682,9 +682,11 @@ impl Database {
|
|
|
682
682
|
// MVCC currently requires a WAL open to function
|
|
683
683
|
let shared_wal = WalFileShared::open_shared_if_exists(&self.io, &self.wal_path, flags)?;
|
|
684
684
|
|
|
685
|
+
let last_checksum_and_max_frame = shared_wal.read().last_checksum_and_max_frame();
|
|
685
686
|
let wal = Arc::new(WalFile::new(
|
|
686
687
|
self.io.clone(),
|
|
687
688
|
Arc::clone(&shared_wal),
|
|
689
|
+
last_checksum_and_max_frame,
|
|
688
690
|
pager.buffer_pool.clone(),
|
|
689
691
|
));
|
|
690
692
|
|
|
@@ -894,6 +896,7 @@ impl Database {
|
|
|
894
896
|
Some(Arc::new(WalFile::new(
|
|
895
897
|
self.io.clone(),
|
|
896
898
|
self.shared_wal.clone(),
|
|
899
|
+
shared_wal.last_checksum_and_max_frame(),
|
|
897
900
|
buffer_pool.clone(),
|
|
898
901
|
)))
|
|
899
902
|
} else {
|
|
@@ -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.
|
|
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.
|
|
462
|
+
self.state.n_change.store(0, Ordering::SeqCst);
|
|
455
463
|
self.busy = false;
|
|
456
464
|
self.busy_handler_state = None;
|
|
457
465
|
}
|
|
@@ -9097,7 +9097,13 @@ mod tests {
|
|
|
9097
9097
|
|
|
9098
9098
|
let wal_file = io.open_file("test.wal", OpenFlags::Create, false).unwrap();
|
|
9099
9099
|
let wal_shared = WalFileShared::new_shared(wal_file).unwrap();
|
|
9100
|
-
let
|
|
9100
|
+
let last_checksum_and_max_frame = wal_shared.read().last_checksum_and_max_frame();
|
|
9101
|
+
let wal: Arc<dyn Wal> = Arc::new(WalFile::new(
|
|
9102
|
+
io.clone(),
|
|
9103
|
+
wal_shared,
|
|
9104
|
+
last_checksum_and_max_frame,
|
|
9105
|
+
buffer_pool.clone(),
|
|
9106
|
+
));
|
|
9101
9107
|
|
|
9102
9108
|
// For new empty databases, init_page_1 must be Some(page) so allocate_page1() can be called
|
|
9103
9109
|
let init_page_1 = Arc::new(ArcSwapOption::new(Some(default_page1(None))));
|
|
@@ -4139,8 +4139,17 @@ impl Pager {
|
|
|
4139
4139
|
#[instrument(skip_all, level = Level::DEBUG)]
|
|
4140
4140
|
pub fn rollback(&self, schema_did_change: bool, connection: &Connection, is_write: bool) {
|
|
4141
4141
|
tracing::debug!(schema_did_change);
|
|
4142
|
-
self.clear_page_cache(is_write);
|
|
4143
4142
|
if is_write {
|
|
4143
|
+
let clear_dirty = true;
|
|
4144
|
+
// The page cache only needs to be cleared if we are rolling back a write transaction.
|
|
4145
|
+
// If a read transaction rolls back, and the next read transaction detects that the
|
|
4146
|
+
// database has changed in between (see db_changed() in wal.rs), then the page cache
|
|
4147
|
+
// will be cleared. Since the read transaction itself has not modified anything, it can proceed
|
|
4148
|
+
// with its cached pages in case the database has NOT changed in between.
|
|
4149
|
+
//
|
|
4150
|
+
// Even in the case of a write transaction, clearing the entire page cache is overkill,
|
|
4151
|
+
// since we only need to clear the dirty pages that were modified by the write transaction.
|
|
4152
|
+
self.clear_page_cache(clear_dirty);
|
|
4144
4153
|
self.dirty_pages.write().clear();
|
|
4145
4154
|
} else {
|
|
4146
4155
|
turso_assert!(
|
|
@@ -4296,7 +4305,7 @@ pub fn default_page1(cipher: Option<&CipherMode>) -> PageRef {
|
|
|
4296
4305
|
page
|
|
4297
4306
|
}
|
|
4298
4307
|
|
|
4299
|
-
#[derive(Debug)]
|
|
4308
|
+
#[derive(Debug, Clone, Copy)]
|
|
4300
4309
|
pub struct CreateBTreeFlags(pub u8);
|
|
4301
4310
|
impl CreateBTreeFlags {
|
|
4302
4311
|
pub const TABLE: u8 = 0b0001;
|
|
@@ -4572,13 +4581,16 @@ mod ptrmap_tests {
|
|
|
4572
4581
|
let buffer_pool = BufferPool::begin_init(&io, (sz * page_size) as usize);
|
|
4573
4582
|
let page_cache = Arc::new(RwLock::new(PageCache::new(sz as usize)));
|
|
4574
4583
|
|
|
4584
|
+
let wal_shared = WalFileShared::new_shared(
|
|
4585
|
+
io.open_file("test.db-wal", OpenFlags::Create, false)
|
|
4586
|
+
.unwrap(),
|
|
4587
|
+
)
|
|
4588
|
+
.unwrap();
|
|
4589
|
+
let last_checksum_and_max_frame = wal_shared.read().last_checksum_and_max_frame();
|
|
4575
4590
|
let wal: Arc<dyn Wal> = Arc::new(WalFile::new(
|
|
4576
4591
|
io.clone(),
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
.unwrap(),
|
|
4580
|
-
)
|
|
4581
|
-
.unwrap(),
|
|
4592
|
+
wal_shared,
|
|
4593
|
+
last_checksum_and_max_frame,
|
|
4582
4594
|
buffer_pool.clone(),
|
|
4583
4595
|
));
|
|
4584
4596
|
|
|
@@ -1924,15 +1924,9 @@ impl WalFile {
|
|
|
1924
1924
|
pub fn new(
|
|
1925
1925
|
io: Arc<dyn IO>,
|
|
1926
1926
|
shared: Arc<RwLock<WalFileShared>>,
|
|
1927
|
+
(last_checksum, max_frame): ((u32, u32), u64),
|
|
1927
1928
|
buffer_pool: Arc<BufferPool>,
|
|
1928
1929
|
) -> Self {
|
|
1929
|
-
let (last_checksum, max_frame) = {
|
|
1930
|
-
let shared_guard = shared.read();
|
|
1931
|
-
(
|
|
1932
|
-
shared_guard.last_checksum,
|
|
1933
|
-
shared_guard.max_frame.load(Ordering::Acquire),
|
|
1934
|
-
)
|
|
1935
|
-
};
|
|
1936
1930
|
let now = io.now();
|
|
1937
1931
|
Self {
|
|
1938
1932
|
io,
|
|
@@ -2693,6 +2687,9 @@ impl WalFile {
|
|
|
2693
2687
|
}
|
|
2694
2688
|
|
|
2695
2689
|
impl WalFileShared {
|
|
2690
|
+
pub fn last_checksum_and_max_frame(&self) -> ((u32, u32), u64) {
|
|
2691
|
+
(self.last_checksum, self.max_frame.load(Ordering::Acquire))
|
|
2692
|
+
}
|
|
2696
2693
|
pub fn open_shared_if_exists(
|
|
2697
2694
|
io: &Arc<dyn IO>,
|
|
2698
2695
|
path: &str,
|
|
@@ -29,6 +29,9 @@ fn validate(body: &ast::CreateTableBody, connection: &Connection) -> Result<()>
|
|
|
29
29
|
options, columns, ..
|
|
30
30
|
} = &body
|
|
31
31
|
{
|
|
32
|
+
if options.contains(ast::TableOptions::WITHOUT_ROWID) {
|
|
33
|
+
bail_parse_error!("WITHOUT ROWID tables are not supported");
|
|
34
|
+
}
|
|
32
35
|
if options.contains(ast::TableOptions::STRICT) && !connection.experimental_strict_enabled()
|
|
33
36
|
{
|
|
34
37
|
bail_parse_error!(
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
use parking_lot::RwLock;
|
|
2
1
|
use std::{
|
|
3
2
|
collections::HashMap,
|
|
4
|
-
sync::
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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))]
|