pyturso 0.4.0rc17__tar.gz → 0.4.0rc18__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.0rc17 → pyturso-0.4.0rc18}/Cargo.lock +38 -30
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/Cargo.toml +20 -20
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/PKG-INFO +1 -1
- pyturso-0.4.0rc18/bindings/rust/src/connection.rs +281 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/src/lib.rs +2 -297
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/tests/integration_tests.rs +31 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/completions.rs +247 -2
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/mod.rs +46 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/json/jsonb.rs +6 -6
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/json/mod.rs +101 -7
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/lib.rs +224 -118
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/mvcc/cursor.rs +19 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/mvcc/database/checkpoint_state_machine.rs +12 -5
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/mvcc/database/mod.rs +58 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/mvcc/database/tests.rs +1 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/btree.rs +77 -66
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/buffer_pool.rs +15 -24
- pyturso-0.4.0rc18/core/storage/journal_mode.rs +84 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/mod.rs +1 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/page_cache.rs +183 -40
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/pager.rs +1152 -402
- pyturso-0.4.0rc18/core/storage/slot_bitmap.rs +224 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/sqlite3_ondisk.rs +62 -16
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/wal.rs +283 -264
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/optimizer/join.rs +60 -61
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/optimizer/mod.rs +61 -8
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/optimizer/order.rs +53 -11
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/pragma.rs +1 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/trigger_exec.rs +0 -26
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/util.rs +25 -5
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/builder.rs +57 -1
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/execute.rs +286 -126
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/explain.rs +2 -1
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/hash_table.rs +2 -36
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/mod.rs +17 -31
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/sorter.rs +5 -28
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/value.rs +64 -20
- pyturso-0.4.0rc17/core/storage/slot_bitmap.rs +0 -626
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/README.md +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/build.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/example.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/py-bindings-db-aio.mdx +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/py-bindings-db.mdx +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/py-bindings-sync-aio.mdx +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/py-bindings-sync.mdx +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/py-bindings-tests-aio.mdx +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/py-bindings-tests.mdx +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/requirements-dev.txt +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/requirements.txt +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/src/lib.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/src/turso.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/src/turso_sync.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/tests/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/tests/test_database.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/tests/test_database_aio.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/tests/test_database_sync.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/tests/test_database_sync_aio.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/aio/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/aio/sync/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/lib.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/lib_aio.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/lib_sync.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/lib_sync_aio.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/py.typed +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/sync/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/python/turso/worker.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/README.md +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/examples/example.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/examples/example_struct.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/src/params.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/src/rows.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/src/transaction.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/bindings/rust/src/value.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/assert.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/benches/benchmark.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/benches/json_benchmark.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/benches/mvcc_benchmark.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/benches/tpc_h_benchmark.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/build.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/error.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/ext/dynamic.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/ext/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/ext/vtab_xconnect.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/fast_lock.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/function.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/functions/datetime.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/functions/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/functions/printf.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/functions/strftime.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/aggregate_operator.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/compiler.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/cursor.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/dbsp.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/expr_compiler.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/filter_operator.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/input_operator.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/join_operator.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/merge_operator.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/operator.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/persistence.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/project_operator.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/incremental/view.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/index_method/backing_btree.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/index_method/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/index_method/toy_vector_sparse_ivf.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/info.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/clock.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/common.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/generic.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/io_uring.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/memory.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/unix.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/vfs.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/io/windows.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/json/cache.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/json/error.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/json/ops.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/json/path.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/json/vtab.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/mvcc/clock.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/mvcc/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/mvcc/persistent_storage/logical_log.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/mvcc/persistent_storage/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/numeric/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/numeric/nonnan.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/parameters.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/pragma.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/pseudo.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/schema.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/series.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/state_machine.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/stats.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/checksum.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/database.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/encryption.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/state_machines.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/storage/subjournal.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/time/internal.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/time/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/aggregation.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/alter.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/analyze.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/attach.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/collate.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/compound_select.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/delete.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/display.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/emitter.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/expr.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/expression_index.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/fkeys.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/group_by.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/index.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/insert.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/integrity_check.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/logical.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/main_loop.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/optimizer/OPTIMIZER.md +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/optimizer/access_method.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/optimizer/constraints.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/optimizer/cost.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/optimizer/lift_common_subexpressions.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/order_by.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/plan.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/planner.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/result_row.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/rollback.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/schema.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/select.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/subquery.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/transaction.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/trigger.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/update.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/upsert.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/values.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/view.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/translate/window.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/types.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/uuid.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/affinity.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/bloom_filter.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/insn.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/likeop.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/metrics.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vdbe/rowset.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/concat.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/convert.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/distance_cos.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/distance_dot.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/distance_l2.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/jaccard.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/serialize.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/slice.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/operations/text.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vector/vector_types.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/core/vtab.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/extensions/core/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/extensions/core/README.md +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/extensions/core/build.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/extensions/core/src/functions.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/extensions/core/src/lib.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/extensions/core/src/types.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/extensions/core/src/vfs_modules.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/extensions/core/src/vtabs.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/atomic_enum.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/ext/agg_derive.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/ext/match_ignore_ascii_case.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/ext/mod.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/ext/scalars.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/ext/vfs_derive.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/ext/vtab_derive.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/lib.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/macros/src/test.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/README.md +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/benches/parser_benchmark.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/src/ast/check.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/src/ast/fmt.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/src/ast.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/src/error.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/src/lexer.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/src/lib.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/src/parser.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/parser/src/token.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/pyproject.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/README.md +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/bindgen.sh +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/readme-sdk-kit.mdx +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/src/bindings.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/src/capi.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/src/lib.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/src/rsapi.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit/turso.h +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit-macros/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sdk-kit-macros/src/lib.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/.gitignore +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/database_replay_generator.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/database_sync_engine.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/database_sync_engine_io.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/database_sync_lazy_storage.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/database_sync_operations.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/database_tape.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/errors.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/io_operations.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/lib.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/server_proto.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/sparse_io.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/types.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/engine/src/wal_session.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/Cargo.toml +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/bindgen.sh +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/src/bindings.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/src/capi.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/src/lib.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/src/rsapi.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/src/sync_engine_io.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/src/turso_async_operation.rs +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/sync/sdk-kit/turso_sync.h +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/aio/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/aio/sync/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/lib.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/lib_aio.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/lib_sync.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/lib_sync_aio.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/py.typed +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/sync/__init__.py +0 -0
- {pyturso-0.4.0rc17 → pyturso-0.4.0rc18}/turso/worker.py +0 -0
|
@@ -877,7 +877,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
|
877
877
|
|
|
878
878
|
[[package]]
|
|
879
879
|
name = "core_tester"
|
|
880
|
-
version = "0.4.0-pre.
|
|
880
|
+
version = "0.4.0-pre.18"
|
|
881
881
|
dependencies = [
|
|
882
882
|
"anyhow",
|
|
883
883
|
"assert_cmd",
|
|
@@ -887,6 +887,7 @@ dependencies = [
|
|
|
887
887
|
"rand 0.9.2",
|
|
888
888
|
"rand_chacha 0.9.0",
|
|
889
889
|
"rusqlite",
|
|
890
|
+
"similar-asserts",
|
|
890
891
|
"sql_generation",
|
|
891
892
|
"tempfile",
|
|
892
893
|
"test-log",
|
|
@@ -2632,7 +2633,7 @@ dependencies = [
|
|
|
2632
2633
|
|
|
2633
2634
|
[[package]]
|
|
2634
2635
|
name = "limbo_completion"
|
|
2635
|
-
version = "0.4.0-pre.
|
|
2636
|
+
version = "0.4.0-pre.18"
|
|
2636
2637
|
dependencies = [
|
|
2637
2638
|
"mimalloc",
|
|
2638
2639
|
"turso_ext",
|
|
@@ -2640,7 +2641,7 @@ dependencies = [
|
|
|
2640
2641
|
|
|
2641
2642
|
[[package]]
|
|
2642
2643
|
name = "limbo_crypto"
|
|
2643
|
-
version = "0.4.0-pre.
|
|
2644
|
+
version = "0.4.0-pre.18"
|
|
2644
2645
|
dependencies = [
|
|
2645
2646
|
"blake3",
|
|
2646
2647
|
"data-encoding",
|
|
@@ -2653,7 +2654,7 @@ dependencies = [
|
|
|
2653
2654
|
|
|
2654
2655
|
[[package]]
|
|
2655
2656
|
name = "limbo_csv"
|
|
2656
|
-
version = "0.4.0-pre.
|
|
2657
|
+
version = "0.4.0-pre.18"
|
|
2657
2658
|
dependencies = [
|
|
2658
2659
|
"csv",
|
|
2659
2660
|
"mimalloc",
|
|
@@ -2663,7 +2664,7 @@ dependencies = [
|
|
|
2663
2664
|
|
|
2664
2665
|
[[package]]
|
|
2665
2666
|
name = "limbo_fuzzy"
|
|
2666
|
-
version = "0.4.0-pre.
|
|
2667
|
+
version = "0.4.0-pre.18"
|
|
2667
2668
|
dependencies = [
|
|
2668
2669
|
"mimalloc",
|
|
2669
2670
|
"turso_ext",
|
|
@@ -2671,7 +2672,7 @@ dependencies = [
|
|
|
2671
2672
|
|
|
2672
2673
|
[[package]]
|
|
2673
2674
|
name = "limbo_ipaddr"
|
|
2674
|
-
version = "0.4.0-pre.
|
|
2675
|
+
version = "0.4.0-pre.18"
|
|
2675
2676
|
dependencies = [
|
|
2676
2677
|
"ipnetwork",
|
|
2677
2678
|
"mimalloc",
|
|
@@ -2680,7 +2681,7 @@ dependencies = [
|
|
|
2680
2681
|
|
|
2681
2682
|
[[package]]
|
|
2682
2683
|
name = "limbo_percentile"
|
|
2683
|
-
version = "0.4.0-pre.
|
|
2684
|
+
version = "0.4.0-pre.18"
|
|
2684
2685
|
dependencies = [
|
|
2685
2686
|
"mimalloc",
|
|
2686
2687
|
"turso_ext",
|
|
@@ -2688,7 +2689,7 @@ dependencies = [
|
|
|
2688
2689
|
|
|
2689
2690
|
[[package]]
|
|
2690
2691
|
name = "limbo_regexp"
|
|
2691
|
-
version = "0.4.0-pre.
|
|
2692
|
+
version = "0.4.0-pre.18"
|
|
2692
2693
|
dependencies = [
|
|
2693
2694
|
"mimalloc",
|
|
2694
2695
|
"regex",
|
|
@@ -2697,7 +2698,7 @@ dependencies = [
|
|
|
2697
2698
|
|
|
2698
2699
|
[[package]]
|
|
2699
2700
|
name = "limbo_sim"
|
|
2700
|
-
version = "0.4.0-pre.
|
|
2701
|
+
version = "0.4.0-pre.18"
|
|
2701
2702
|
dependencies = [
|
|
2702
2703
|
"anyhow",
|
|
2703
2704
|
"bitflags 2.9.4",
|
|
@@ -2734,7 +2735,7 @@ dependencies = [
|
|
|
2734
2735
|
|
|
2735
2736
|
[[package]]
|
|
2736
2737
|
name = "limbo_sqlite_test_ext"
|
|
2737
|
-
version = "0.4.0-pre.
|
|
2738
|
+
version = "0.4.0-pre.18"
|
|
2738
2739
|
dependencies = [
|
|
2739
2740
|
"cc",
|
|
2740
2741
|
]
|
|
@@ -3560,7 +3561,7 @@ dependencies = [
|
|
|
3560
3561
|
|
|
3561
3562
|
[[package]]
|
|
3562
3563
|
name = "py-turso"
|
|
3563
|
-
version = "0.4.0-pre.
|
|
3564
|
+
version = "0.4.0-pre.18"
|
|
3564
3565
|
dependencies = [
|
|
3565
3566
|
"anyhow",
|
|
3566
3567
|
"pyo3",
|
|
@@ -4320,7 +4321,7 @@ checksum = "d372029cb5195f9ab4e4b9aef550787dce78b124fcaee8d82519925defcd6f0d"
|
|
|
4320
4321
|
|
|
4321
4322
|
[[package]]
|
|
4322
4323
|
name = "sql_generation"
|
|
4323
|
-
version = "0.4.0-pre.
|
|
4324
|
+
version = "0.4.0-pre.18"
|
|
4324
4325
|
dependencies = [
|
|
4325
4326
|
"anarchist-readable-name-generator-lib",
|
|
4326
4327
|
"anyhow",
|
|
@@ -4948,7 +4949,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
|
|
4948
4949
|
|
|
4949
4950
|
[[package]]
|
|
4950
4951
|
name = "turso"
|
|
4951
|
-
version = "0.4.0-pre.
|
|
4952
|
+
version = "0.4.0-pre.18"
|
|
4952
4953
|
dependencies = [
|
|
4953
4954
|
"mimalloc",
|
|
4954
4955
|
"rand 0.9.2",
|
|
@@ -4961,9 +4962,16 @@ dependencies = [
|
|
|
4961
4962
|
"turso_core",
|
|
4962
4963
|
]
|
|
4963
4964
|
|
|
4965
|
+
[[package]]
|
|
4966
|
+
name = "turso-dotnet"
|
|
4967
|
+
version = "0.4.0-pre.18"
|
|
4968
|
+
dependencies = [
|
|
4969
|
+
"turso_core",
|
|
4970
|
+
]
|
|
4971
|
+
|
|
4964
4972
|
[[package]]
|
|
4965
4973
|
name = "turso-java"
|
|
4966
|
-
version = "0.4.0-pre.
|
|
4974
|
+
version = "0.4.0-pre.18"
|
|
4967
4975
|
dependencies = [
|
|
4968
4976
|
"jni",
|
|
4969
4977
|
"thiserror 2.0.16",
|
|
@@ -4972,7 +4980,7 @@ dependencies = [
|
|
|
4972
4980
|
|
|
4973
4981
|
[[package]]
|
|
4974
4982
|
name = "turso_cli"
|
|
4975
|
-
version = "0.4.0-pre.
|
|
4983
|
+
version = "0.4.0-pre.18"
|
|
4976
4984
|
dependencies = [
|
|
4977
4985
|
"anyhow",
|
|
4978
4986
|
"cfg-if",
|
|
@@ -5009,7 +5017,7 @@ dependencies = [
|
|
|
5009
5017
|
|
|
5010
5018
|
[[package]]
|
|
5011
5019
|
name = "turso_core"
|
|
5012
|
-
version = "0.4.0-pre.
|
|
5020
|
+
version = "0.4.0-pre.18"
|
|
5013
5021
|
dependencies = [
|
|
5014
5022
|
"aegis",
|
|
5015
5023
|
"aes",
|
|
@@ -5074,7 +5082,7 @@ dependencies = [
|
|
|
5074
5082
|
|
|
5075
5083
|
[[package]]
|
|
5076
5084
|
name = "turso_dart"
|
|
5077
|
-
version = "0.4.0-pre.
|
|
5085
|
+
version = "0.4.0-pre.18"
|
|
5078
5086
|
dependencies = [
|
|
5079
5087
|
"flutter_rust_bridge",
|
|
5080
5088
|
"turso_core",
|
|
@@ -5082,7 +5090,7 @@ dependencies = [
|
|
|
5082
5090
|
|
|
5083
5091
|
[[package]]
|
|
5084
5092
|
name = "turso_ext"
|
|
5085
|
-
version = "0.4.0-pre.
|
|
5093
|
+
version = "0.4.0-pre.18"
|
|
5086
5094
|
dependencies = [
|
|
5087
5095
|
"chrono",
|
|
5088
5096
|
"getrandom 0.3.2",
|
|
@@ -5091,7 +5099,7 @@ dependencies = [
|
|
|
5091
5099
|
|
|
5092
5100
|
[[package]]
|
|
5093
5101
|
name = "turso_ext_tests"
|
|
5094
|
-
version = "0.4.0-pre.
|
|
5102
|
+
version = "0.4.0-pre.18"
|
|
5095
5103
|
dependencies = [
|
|
5096
5104
|
"env_logger 0.11.7",
|
|
5097
5105
|
"lazy_static",
|
|
@@ -5102,7 +5110,7 @@ dependencies = [
|
|
|
5102
5110
|
|
|
5103
5111
|
[[package]]
|
|
5104
5112
|
name = "turso_macros"
|
|
5105
|
-
version = "0.4.0-pre.
|
|
5113
|
+
version = "0.4.0-pre.18"
|
|
5106
5114
|
dependencies = [
|
|
5107
5115
|
"proc-macro2",
|
|
5108
5116
|
"quote",
|
|
@@ -5111,7 +5119,7 @@ dependencies = [
|
|
|
5111
5119
|
|
|
5112
5120
|
[[package]]
|
|
5113
5121
|
name = "turso_node"
|
|
5114
|
-
version = "0.4.0-pre.
|
|
5122
|
+
version = "0.4.0-pre.18"
|
|
5115
5123
|
dependencies = [
|
|
5116
5124
|
"chrono",
|
|
5117
5125
|
"napi",
|
|
@@ -5124,7 +5132,7 @@ dependencies = [
|
|
|
5124
5132
|
|
|
5125
5133
|
[[package]]
|
|
5126
5134
|
name = "turso_parser"
|
|
5127
|
-
version = "0.4.0-pre.
|
|
5135
|
+
version = "0.4.0-pre.18"
|
|
5128
5136
|
dependencies = [
|
|
5129
5137
|
"bitflags 2.9.4",
|
|
5130
5138
|
"criterion",
|
|
@@ -5140,7 +5148,7 @@ dependencies = [
|
|
|
5140
5148
|
|
|
5141
5149
|
[[package]]
|
|
5142
5150
|
name = "turso_sdk_kit"
|
|
5143
|
-
version = "0.4.0-pre.
|
|
5151
|
+
version = "0.4.0-pre.18"
|
|
5144
5152
|
dependencies = [
|
|
5145
5153
|
"bindgen",
|
|
5146
5154
|
"env_logger 0.11.7",
|
|
@@ -5153,7 +5161,7 @@ dependencies = [
|
|
|
5153
5161
|
|
|
5154
5162
|
[[package]]
|
|
5155
5163
|
name = "turso_sdk_kit_macros"
|
|
5156
|
-
version = "0.4.0-pre.
|
|
5164
|
+
version = "0.4.0-pre.18"
|
|
5157
5165
|
dependencies = [
|
|
5158
5166
|
"proc-macro2",
|
|
5159
5167
|
"quote",
|
|
@@ -5162,7 +5170,7 @@ dependencies = [
|
|
|
5162
5170
|
|
|
5163
5171
|
[[package]]
|
|
5164
5172
|
name = "turso_sqlite3"
|
|
5165
|
-
version = "0.4.0-pre.
|
|
5173
|
+
version = "0.4.0-pre.18"
|
|
5166
5174
|
dependencies = [
|
|
5167
5175
|
"env_logger 0.11.7",
|
|
5168
5176
|
"libc",
|
|
@@ -5175,7 +5183,7 @@ dependencies = [
|
|
|
5175
5183
|
|
|
5176
5184
|
[[package]]
|
|
5177
5185
|
name = "turso_stress"
|
|
5178
|
-
version = "0.4.0-pre.
|
|
5186
|
+
version = "0.4.0-pre.18"
|
|
5179
5187
|
dependencies = [
|
|
5180
5188
|
"antithesis_sdk",
|
|
5181
5189
|
"clap",
|
|
@@ -5192,7 +5200,7 @@ dependencies = [
|
|
|
5192
5200
|
|
|
5193
5201
|
[[package]]
|
|
5194
5202
|
name = "turso_sync_engine"
|
|
5195
|
-
version = "0.4.0-pre.
|
|
5203
|
+
version = "0.4.0-pre.18"
|
|
5196
5204
|
dependencies = [
|
|
5197
5205
|
"base64 0.22.1",
|
|
5198
5206
|
"bytes",
|
|
@@ -5220,7 +5228,7 @@ dependencies = [
|
|
|
5220
5228
|
|
|
5221
5229
|
[[package]]
|
|
5222
5230
|
name = "turso_sync_js"
|
|
5223
|
-
version = "0.4.0-pre.
|
|
5231
|
+
version = "0.4.0-pre.18"
|
|
5224
5232
|
dependencies = [
|
|
5225
5233
|
"genawaiter",
|
|
5226
5234
|
"napi",
|
|
@@ -5235,7 +5243,7 @@ dependencies = [
|
|
|
5235
5243
|
|
|
5236
5244
|
[[package]]
|
|
5237
5245
|
name = "turso_sync_sdk_kit"
|
|
5238
|
-
version = "0.4.0-pre.
|
|
5246
|
+
version = "0.4.0-pre.18"
|
|
5239
5247
|
dependencies = [
|
|
5240
5248
|
"bindgen",
|
|
5241
5249
|
"env_logger 0.11.7",
|
|
@@ -5252,7 +5260,7 @@ dependencies = [
|
|
|
5252
5260
|
|
|
5253
5261
|
[[package]]
|
|
5254
5262
|
name = "turso_whopper"
|
|
5255
|
-
version = "0.4.0-pre.
|
|
5263
|
+
version = "0.4.0-pre.18"
|
|
5256
5264
|
dependencies = [
|
|
5257
5265
|
"anyhow",
|
|
5258
5266
|
"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.
|
|
9
|
+
version = "0.4.0-pre.18"
|
|
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.
|
|
17
|
-
turso_node = { path = "bindings/javascript", version = "0.4.0-pre.
|
|
18
|
-
turso_sdk_kit = { path = "sdk-kit", version = "0.4.0-pre.
|
|
19
|
-
turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.0-pre.
|
|
20
|
-
turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.0-pre.
|
|
21
|
-
limbo_completion = { path = "extensions/completion", version = "0.4.0-pre.
|
|
22
|
-
turso_core = { path = "core", version = "0.4.0-pre.
|
|
23
|
-
turso_sync_engine = { path = "sync/engine", version = "0.4.0-pre.
|
|
24
|
-
limbo_crypto = { path = "extensions/crypto", version = "0.4.0-pre.
|
|
25
|
-
limbo_csv = { path = "extensions/csv", version = "0.4.0-pre.
|
|
26
|
-
turso_ext = { path = "extensions/core", version = "0.4.0-pre.
|
|
27
|
-
turso_ext_tests = { path = "extensions/tests", version = "0.4.0-pre.
|
|
28
|
-
limbo_ipaddr = { path = "extensions/ipaddr", version = "0.4.0-pre.
|
|
29
|
-
turso_macros = { path = "macros", version = "0.4.0-pre.
|
|
30
|
-
limbo_percentile = { path = "extensions/percentile", version = "0.4.0-pre.
|
|
31
|
-
limbo_regexp = { path = "extensions/regexp", version = "0.4.0-pre.
|
|
32
|
-
limbo_uuid = { path = "extensions/uuid", version = "0.4.0-pre.
|
|
33
|
-
turso_parser = { path = "parser", version = "0.4.0-pre.
|
|
34
|
-
limbo_fuzzy = { path = "extensions/fuzzy", version = "0.4.0-pre.
|
|
16
|
+
turso = { path = "bindings/rust", version = "0.4.0-pre.18" }
|
|
17
|
+
turso_node = { path = "bindings/javascript", version = "0.4.0-pre.18" }
|
|
18
|
+
turso_sdk_kit = { path = "sdk-kit", version = "0.4.0-pre.18" }
|
|
19
|
+
turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.0-pre.18" }
|
|
20
|
+
turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.0-pre.18" }
|
|
21
|
+
limbo_completion = { path = "extensions/completion", version = "0.4.0-pre.18" }
|
|
22
|
+
turso_core = { path = "core", version = "0.4.0-pre.18" }
|
|
23
|
+
turso_sync_engine = { path = "sync/engine", version = "0.4.0-pre.18" }
|
|
24
|
+
limbo_crypto = { path = "extensions/crypto", version = "0.4.0-pre.18" }
|
|
25
|
+
limbo_csv = { path = "extensions/csv", version = "0.4.0-pre.18" }
|
|
26
|
+
turso_ext = { path = "extensions/core", version = "0.4.0-pre.18" }
|
|
27
|
+
turso_ext_tests = { path = "extensions/tests", version = "0.4.0-pre.18" }
|
|
28
|
+
limbo_ipaddr = { path = "extensions/ipaddr", version = "0.4.0-pre.18" }
|
|
29
|
+
turso_macros = { path = "macros", version = "0.4.0-pre.18" }
|
|
30
|
+
limbo_percentile = { path = "extensions/percentile", version = "0.4.0-pre.18" }
|
|
31
|
+
limbo_regexp = { path = "extensions/regexp", version = "0.4.0-pre.18" }
|
|
32
|
+
limbo_uuid = { path = "extensions/uuid", version = "0.4.0-pre.18" }
|
|
33
|
+
turso_parser = { path = "parser", version = "0.4.0-pre.18" }
|
|
34
|
+
limbo_fuzzy = { path = "extensions/fuzzy", version = "0.4.0-pre.18" }
|
|
35
35
|
sql_generation = { path = "sql_generation" }
|
|
36
36
|
strum = { version = "0.26", features = ["derive"] }
|
|
37
37
|
strum_macros = "0.26"
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
use crate::transaction::DropBehavior;
|
|
2
|
+
use crate::transaction::TransactionBehavior;
|
|
3
|
+
use crate::Error;
|
|
4
|
+
use crate::IntoParams;
|
|
5
|
+
use crate::Row;
|
|
6
|
+
use crate::Rows;
|
|
7
|
+
use crate::Statement;
|
|
8
|
+
use std::fmt::Debug;
|
|
9
|
+
use std::sync::atomic::AtomicU8;
|
|
10
|
+
use std::sync::atomic::Ordering;
|
|
11
|
+
use std::sync::MutexGuard;
|
|
12
|
+
use std::sync::{Arc, Mutex};
|
|
13
|
+
#[cfg(feature = "conn_raw_api")]
|
|
14
|
+
use turso_core::types::WalFrameInfo;
|
|
15
|
+
pub type Result<T> = std::result::Result<T, Error>;
|
|
16
|
+
|
|
17
|
+
/// Atomic wrapper for [DropBehavior]
|
|
18
|
+
pub(crate) struct AtomicDropBehavior {
|
|
19
|
+
inner: AtomicU8,
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
impl AtomicDropBehavior {
|
|
23
|
+
fn new(behavior: DropBehavior) -> Self {
|
|
24
|
+
Self {
|
|
25
|
+
inner: AtomicU8::new(behavior.into()),
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
fn load(&self, ordering: Ordering) -> DropBehavior {
|
|
30
|
+
self.inner.load(ordering).into()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
pub(crate) fn store(&self, behavior: DropBehavior, ordering: Ordering) {
|
|
34
|
+
self.inner.store(behavior.into(), ordering);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// A database connection.
|
|
39
|
+
pub struct Connection {
|
|
40
|
+
/// Inner is an Option so that when a Connection is dropped we can take the inner
|
|
41
|
+
/// (Actual connection) out of it and put it back into the ConnectionPool
|
|
42
|
+
/// the only time inner will be None is just before the Connection is freed after the
|
|
43
|
+
/// inner connection has been recyled into the connection pool
|
|
44
|
+
inner: Option<Arc<Mutex<Arc<turso_core::Connection>>>>,
|
|
45
|
+
pub(crate) transaction_behavior: TransactionBehavior,
|
|
46
|
+
/// If there is a dangling transaction after it was dropped without being finished,
|
|
47
|
+
/// [Connection::dangling_tx] will be set to the [DropBehavior] of the dangling transaction,
|
|
48
|
+
/// and the corresponding action will be taken when a new transaction is requested
|
|
49
|
+
/// or the connection queries/executes.
|
|
50
|
+
/// We cannot do this eagerly on Drop because drop is not async.
|
|
51
|
+
///
|
|
52
|
+
/// By default, the value is [DropBehavior::Ignore] which effectively does nothing.
|
|
53
|
+
pub(crate) dangling_tx: AtomicDropBehavior,
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
impl Clone for Connection {
|
|
57
|
+
fn clone(&self) -> Self {
|
|
58
|
+
let i = self.inner.clone();
|
|
59
|
+
|
|
60
|
+
Self {
|
|
61
|
+
inner: i,
|
|
62
|
+
//inner: Arc::clone(&self.inner),
|
|
63
|
+
transaction_behavior: self.transaction_behavior,
|
|
64
|
+
dangling_tx: AtomicDropBehavior::new(self.dangling_tx.load(Ordering::SeqCst)),
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
unsafe impl Send for Connection {}
|
|
70
|
+
unsafe impl Sync for Connection {}
|
|
71
|
+
|
|
72
|
+
impl Connection {
|
|
73
|
+
pub fn create(conn: Arc<turso_core::Connection>) -> Self {
|
|
74
|
+
#[allow(clippy::arc_with_non_send_sync)]
|
|
75
|
+
let connection = Connection {
|
|
76
|
+
inner: Some(Arc::new(Mutex::new(conn))),
|
|
77
|
+
transaction_behavior: TransactionBehavior::Deferred,
|
|
78
|
+
dangling_tx: AtomicDropBehavior::new(DropBehavior::Ignore),
|
|
79
|
+
};
|
|
80
|
+
connection
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
pub(crate) async fn maybe_handle_dangling_tx(&self) -> Result<()> {
|
|
84
|
+
match self.dangling_tx.load(Ordering::SeqCst) {
|
|
85
|
+
DropBehavior::Rollback => {
|
|
86
|
+
let mut stmt = self.prepare("ROLLBACK").await?;
|
|
87
|
+
stmt.execute(()).await?;
|
|
88
|
+
self.dangling_tx
|
|
89
|
+
.store(DropBehavior::Ignore, Ordering::SeqCst);
|
|
90
|
+
}
|
|
91
|
+
DropBehavior::Commit => {
|
|
92
|
+
let mut stmt = self.prepare("COMMIT").await?;
|
|
93
|
+
stmt.execute(()).await?;
|
|
94
|
+
self.dangling_tx
|
|
95
|
+
.store(DropBehavior::Ignore, Ordering::SeqCst);
|
|
96
|
+
}
|
|
97
|
+
DropBehavior::Ignore => {}
|
|
98
|
+
DropBehavior::Panic => {
|
|
99
|
+
panic!("Transaction dropped unexpectedly.");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
Ok(())
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/// Query the database with SQL.
|
|
106
|
+
pub async fn query(&self, sql: &str, params: impl IntoParams) -> Result<Rows> {
|
|
107
|
+
self.maybe_handle_dangling_tx().await?;
|
|
108
|
+
let mut stmt = self.prepare(sql).await?;
|
|
109
|
+
stmt.query(params).await
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/// Execute SQL statement on the database.
|
|
113
|
+
pub async fn execute(&self, sql: &str, params: impl IntoParams) -> Result<u64> {
|
|
114
|
+
self.maybe_handle_dangling_tx().await?;
|
|
115
|
+
let mut stmt = self.prepare(sql).await?;
|
|
116
|
+
stmt.execute(params).await
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/// get the inner connection
|
|
120
|
+
fn get_inner_connection(&self) -> Result<MutexGuard<'_, Arc<turso_core::Connection>>> {
|
|
121
|
+
match &self.inner {
|
|
122
|
+
Some(inner) => Ok(inner.lock().map_err(|e| Error::MutexError(e.to_string()))?),
|
|
123
|
+
None => Err(Error::MutexError(
|
|
124
|
+
"Inner connection can't be none".to_string(),
|
|
125
|
+
)),
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
#[cfg(feature = "conn_raw_api")]
|
|
130
|
+
pub fn wal_frame_count(&self) -> Result<u64> {
|
|
131
|
+
let conn = self.get_inner_connection()?;
|
|
132
|
+
conn.wal_state()
|
|
133
|
+
.map_err(|e| Error::WalOperationError(format!("wal_insert_begin failed: {e}")))
|
|
134
|
+
.map(|state| state.max_frame)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
#[cfg(feature = "conn_raw_api")]
|
|
138
|
+
pub fn try_wal_watermark_read_page(
|
|
139
|
+
&self,
|
|
140
|
+
page_idx: u32,
|
|
141
|
+
page: &mut [u8],
|
|
142
|
+
frame_watermark: Option<u64>,
|
|
143
|
+
) -> Result<bool> {
|
|
144
|
+
let conn = self.get_inner_connection()?;
|
|
145
|
+
conn.try_wal_watermark_read_page(page_idx, page, frame_watermark)
|
|
146
|
+
.map_err(|e| {
|
|
147
|
+
Error::WalOperationError(format!("try_wal_watermark_read_page failed: {e}"))
|
|
148
|
+
})
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
#[cfg(feature = "conn_raw_api")]
|
|
152
|
+
pub fn wal_changed_pages_after(&self, frame_watermark: u64) -> Result<Vec<u32>> {
|
|
153
|
+
let conn = self.get_inner_connection()?;
|
|
154
|
+
conn.wal_changed_pages_after(frame_watermark)
|
|
155
|
+
.map_err(|e| Error::WalOperationError(format!("wal_changed_pages_after failed: {e}")))
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
#[cfg(feature = "conn_raw_api")]
|
|
159
|
+
pub fn wal_insert_begin(&self) -> Result<()> {
|
|
160
|
+
let conn = self.get_inner_connection()?;
|
|
161
|
+
conn.wal_insert_begin()
|
|
162
|
+
.map_err(|e| Error::WalOperationError(format!("wal_insert_begin failed: {e}")))
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
#[cfg(feature = "conn_raw_api")]
|
|
166
|
+
pub fn wal_insert_end(&self, force_commit: bool) -> Result<()> {
|
|
167
|
+
let conn = self.get_inner_connection()?;
|
|
168
|
+
conn.wal_insert_end(force_commit)
|
|
169
|
+
.map_err(|e| Error::WalOperationError(format!("wal_insert_end failed: {e}")))
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
#[cfg(feature = "conn_raw_api")]
|
|
173
|
+
pub fn wal_insert_frame(&self, frame_no: u64, frame: &[u8]) -> Result<WalFrameInfo> {
|
|
174
|
+
let conn = self.get_inner_connection()?;
|
|
175
|
+
conn.wal_insert_frame(frame_no, frame)
|
|
176
|
+
.map_err(|e| Error::WalOperationError(format!("wal_insert_frame failed: {e}")))
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
#[cfg(feature = "conn_raw_api")]
|
|
180
|
+
pub fn wal_get_frame(&self, frame_no: u64, frame: &mut [u8]) -> Result<WalFrameInfo> {
|
|
181
|
+
let conn = self.get_inner_connection()?;
|
|
182
|
+
conn.wal_get_frame(frame_no, frame)
|
|
183
|
+
.map_err(|e| Error::WalOperationError(format!("wal_insert_frame failed: {e}")))
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/// Execute a batch of SQL statements on the database.
|
|
187
|
+
pub async fn execute_batch(&self, sql: &str) -> Result<()> {
|
|
188
|
+
self.maybe_handle_dangling_tx().await?;
|
|
189
|
+
self.prepare_execute_batch(sql).await?;
|
|
190
|
+
Ok(())
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/// Prepare a SQL statement for later execution.
|
|
194
|
+
pub async fn prepare(&self, sql: &str) -> Result<Statement> {
|
|
195
|
+
let conn = self.get_inner_connection()?;
|
|
196
|
+
let stmt = conn.prepare(sql)?;
|
|
197
|
+
|
|
198
|
+
#[allow(clippy::arc_with_non_send_sync)]
|
|
199
|
+
let statement = Statement {
|
|
200
|
+
inner: Arc::new(Mutex::new(stmt)),
|
|
201
|
+
};
|
|
202
|
+
Ok(statement)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
async fn prepare_execute_batch(&self, sql: impl AsRef<str>) -> Result<()> {
|
|
206
|
+
self.maybe_handle_dangling_tx().await?;
|
|
207
|
+
let conn = self.get_inner_connection()?;
|
|
208
|
+
conn.prepare_execute_batch(sql)?;
|
|
209
|
+
Ok(())
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/// Query a pragma.
|
|
213
|
+
pub fn pragma_query<F>(&self, pragma_name: &str, mut f: F) -> Result<()>
|
|
214
|
+
where
|
|
215
|
+
F: FnMut(&Row) -> turso_core::Result<()>,
|
|
216
|
+
{
|
|
217
|
+
let conn = self.get_inner_connection()?;
|
|
218
|
+
let rows: Vec<Row> = conn
|
|
219
|
+
.pragma_query(pragma_name)
|
|
220
|
+
.map_err(|e| Error::SqlExecutionFailure(e.to_string()))?
|
|
221
|
+
.iter()
|
|
222
|
+
.map(|row| row.iter().collect::<Row>())
|
|
223
|
+
.collect();
|
|
224
|
+
|
|
225
|
+
rows.iter().try_for_each(|row| {
|
|
226
|
+
f(row).map_err(|e| {
|
|
227
|
+
Error::SqlExecutionFailure(format!("Error executing user defined function: {e}"))
|
|
228
|
+
})
|
|
229
|
+
})?;
|
|
230
|
+
Ok(())
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/// Returns the rowid of the last row inserted.
|
|
234
|
+
pub fn last_insert_rowid(&self) -> i64 {
|
|
235
|
+
let conn = self.get_inner_connection().unwrap();
|
|
236
|
+
conn.last_insert_rowid()
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/// Flush dirty pages to disk.
|
|
240
|
+
/// This will write the dirty pages to the WAL.
|
|
241
|
+
pub fn cacheflush(&self) -> Result<()> {
|
|
242
|
+
let conn = self.get_inner_connection()?;
|
|
243
|
+
let completions = conn.cacheflush()?;
|
|
244
|
+
let pager = conn.get_pager();
|
|
245
|
+
for c in completions {
|
|
246
|
+
pager.io.wait_for_completion(c)?;
|
|
247
|
+
}
|
|
248
|
+
Ok(())
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
pub fn is_autocommit(&self) -> Result<bool> {
|
|
252
|
+
let conn = self.get_inner_connection()?;
|
|
253
|
+
Ok(conn.get_auto_commit())
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/// Sets maximum total accumuated timeout. If the duration is None or Zero, we unset the busy handler for this Connection
|
|
257
|
+
///
|
|
258
|
+
/// This api defers slighty from: https://www.sqlite.org/c3ref/busy_timeout.html
|
|
259
|
+
///
|
|
260
|
+
/// Instead of sleeping for linear amount of time specified by the user,
|
|
261
|
+
/// we will sleep in phases, until the the total amount of time is reached.
|
|
262
|
+
/// This means we first sleep of 1ms, then if we still return busy, we sleep for 2 ms, and repeat until a maximum of 100 ms per phase.
|
|
263
|
+
///
|
|
264
|
+
/// Example:
|
|
265
|
+
/// 1. Set duration to 5ms
|
|
266
|
+
/// 2. Step through query -> returns Busy -> sleep/yield for 1 ms
|
|
267
|
+
/// 3. Step through query -> returns Busy -> sleep/yield for 2 ms
|
|
268
|
+
/// 4. Step through query -> returns Busy -> sleep/yield for 2 ms (totaling 5 ms of sleep)
|
|
269
|
+
/// 5. Step through query -> returns Busy -> return Busy to user
|
|
270
|
+
pub fn busy_timeout(&self, duration: std::time::Duration) -> Result<()> {
|
|
271
|
+
let conn = self.get_inner_connection()?;
|
|
272
|
+
conn.set_busy_timeout(duration);
|
|
273
|
+
Ok(())
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
impl Debug for Connection {
|
|
278
|
+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
279
|
+
f.debug_struct("Connection").finish()
|
|
280
|
+
}
|
|
281
|
+
}
|