pyturso 0.4.0rc14__tar.gz → 0.4.0rc16__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.0rc14 → pyturso-0.4.0rc16}/Cargo.lock +30 -30
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/Cargo.toml +20 -20
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/PKG-INFO +5 -2
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/README.md +4 -1
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/src/turso_sync.rs +8 -8
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/tests/test_database_sync.py +1 -1
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/tests/test_database_sync_aio.py +1 -1
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/functions/datetime.rs +31 -2
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/expr_compiler.rs +1 -1
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/mvcc/cursor.rs +2 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/mvcc/database/checkpoint_state_machine.rs +7 -9
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/schema.rs +8 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/expr.rs +1 -1
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/insert.rs +33 -23
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/mod.rs +1 -1
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/optimizer/join.rs +209 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/trigger_exec.rs +2 -1
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/builder.rs +66 -57
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/execute.rs +46 -15
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/value.rs +9 -0
- pyturso-0.4.0rc16/sdk-kit/src/bindings.rs +376 -0
- pyturso-0.4.0rc16/sdk-kit/src/capi.rs +1116 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sdk-kit/src/rsapi.rs +154 -132
- pyturso-0.4.0rc16/sdk-kit/turso.h +292 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/sdk-kit/bindgen.sh +5 -0
- pyturso-0.4.0rc16/sync/sdk-kit/src/bindings.rs +461 -0
- pyturso-0.4.0rc16/sync/sdk-kit/src/capi.rs +670 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/sdk-kit/src/rsapi.rs +37 -34
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/sdk-kit/src/sync_engine_io.rs +57 -42
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/sdk-kit/src/turso_async_operation.rs +79 -72
- pyturso-0.4.0rc16/sync/sdk-kit/turso_sync.h +336 -0
- pyturso-0.4.0rc14/sdk-kit/src/bindings.rs +0 -701
- pyturso-0.4.0rc14/sdk-kit/src/capi.rs +0 -1319
- pyturso-0.4.0rc14/sdk-kit/turso.h +0 -306
- pyturso-0.4.0rc14/sync/sdk-kit/src/bindings.rs +0 -730
- pyturso-0.4.0rc14/sync/sdk-kit/src/capi.rs +0 -615
- pyturso-0.4.0rc14/sync/sdk-kit/turso_sync.h +0 -324
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/build.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/example.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/py-bindings-db-aio.mdx +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/py-bindings-db.mdx +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/py-bindings-sync-aio.mdx +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/py-bindings-sync.mdx +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/py-bindings-tests-aio.mdx +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/py-bindings-tests.mdx +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/requirements-dev.txt +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/requirements.txt +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/src/turso.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/tests/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/tests/test_database.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/tests/test_database_aio.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/aio/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/aio/sync/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/lib.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/lib_aio.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/lib_sync.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/lib_sync_aio.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/py.typed +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/sync/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/python/turso/worker.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/README.md +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/examples/example.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/examples/example_struct.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/src/params.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/src/rows.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/src/transaction.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/src/value.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/bindings/rust/tests/integration_tests.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/assert.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/benches/benchmark.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/benches/json_benchmark.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/benches/mvcc_benchmark.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/benches/tpc_h_benchmark.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/build.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/error.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/ext/dynamic.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/ext/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/ext/vtab_xconnect.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/fast_lock.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/function.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/functions/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/functions/printf.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/functions/strftime.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/aggregate_operator.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/compiler.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/cursor.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/dbsp.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/filter_operator.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/input_operator.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/join_operator.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/merge_operator.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/operator.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/persistence.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/project_operator.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/incremental/view.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/index_method/backing_btree.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/index_method/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/index_method/toy_vector_sparse_ivf.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/info.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/clock.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/common.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/completions.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/generic.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/io_uring.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/memory.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/unix.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/vfs.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/io/windows.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/json/cache.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/json/error.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/json/jsonb.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/json/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/json/ops.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/json/path.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/json/vtab.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/mvcc/clock.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/mvcc/database/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/mvcc/database/tests.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/mvcc/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/mvcc/persistent_storage/logical_log.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/mvcc/persistent_storage/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/numeric/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/numeric/nonnan.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/parameters.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/pragma.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/pseudo.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/series.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/state_machine.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/stats.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/btree.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/buffer_pool.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/checksum.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/database.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/encryption.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/page_cache.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/pager.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/slot_bitmap.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/sqlite3_ondisk.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/state_machines.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/subjournal.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/storage/wal.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/time/internal.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/time/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/aggregation.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/alter.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/analyze.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/attach.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/collate.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/compound_select.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/delete.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/display.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/emitter.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/expression_index.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/fkeys.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/group_by.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/index.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/integrity_check.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/logical.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/main_loop.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/optimizer/OPTIMIZER.md +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/optimizer/access_method.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/optimizer/constraints.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/optimizer/cost.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/optimizer/lift_common_subexpressions.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/optimizer/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/optimizer/order.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/order_by.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/plan.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/planner.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/pragma.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/result_row.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/rollback.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/schema.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/select.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/subquery.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/transaction.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/trigger.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/update.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/upsert.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/values.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/view.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/translate/window.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/types.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/util.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/uuid.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/affinity.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/bloom_filter.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/explain.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/hash_table.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/insn.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/likeop.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/metrics.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/rowset.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vdbe/sorter.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/concat.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/convert.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/distance_cos.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/distance_dot.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/distance_l2.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/jaccard.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/serialize.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/slice.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/operations/text.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vector/vector_types.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/core/vtab.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/extensions/core/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/extensions/core/README.md +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/extensions/core/build.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/extensions/core/src/functions.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/extensions/core/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/extensions/core/src/types.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/extensions/core/src/vfs_modules.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/extensions/core/src/vtabs.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/atomic_enum.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/ext/agg_derive.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/ext/match_ignore_ascii_case.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/ext/mod.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/ext/scalars.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/ext/vfs_derive.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/ext/vtab_derive.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/macros/src/test.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/README.md +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/benches/parser_benchmark.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/src/ast/check.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/src/ast/fmt.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/src/ast.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/src/error.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/src/lexer.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/src/parser.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/parser/src/token.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/pyproject.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sdk-kit/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sdk-kit/README.md +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sdk-kit/bindgen.sh +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sdk-kit/readme-sdk-kit.mdx +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sdk-kit/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sdk-kit-macros/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sdk-kit-macros/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/.gitignore +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/database_replay_generator.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/database_sync_engine.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/database_sync_engine_io.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/database_sync_lazy_storage.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/database_sync_operations.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/database_tape.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/errors.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/io_operations.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/server_proto.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/sparse_io.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/types.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/engine/src/wal_session.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/sdk-kit/Cargo.toml +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/sync/sdk-kit/src/lib.rs +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/aio/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/aio/sync/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/lib.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/lib_aio.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/lib_sync.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/lib_sync_aio.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/py.typed +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/sync/__init__.py +0 -0
- {pyturso-0.4.0rc14 → pyturso-0.4.0rc16}/turso/worker.py +0 -0
|
@@ -886,7 +886,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
|
886
886
|
|
|
887
887
|
[[package]]
|
|
888
888
|
name = "core_tester"
|
|
889
|
-
version = "0.4.0-pre.
|
|
889
|
+
version = "0.4.0-pre.16"
|
|
890
890
|
dependencies = [
|
|
891
891
|
"anyhow",
|
|
892
892
|
"assert_cmd",
|
|
@@ -2641,7 +2641,7 @@ dependencies = [
|
|
|
2641
2641
|
|
|
2642
2642
|
[[package]]
|
|
2643
2643
|
name = "limbo_completion"
|
|
2644
|
-
version = "0.4.0-pre.
|
|
2644
|
+
version = "0.4.0-pre.16"
|
|
2645
2645
|
dependencies = [
|
|
2646
2646
|
"mimalloc",
|
|
2647
2647
|
"turso_ext",
|
|
@@ -2649,7 +2649,7 @@ dependencies = [
|
|
|
2649
2649
|
|
|
2650
2650
|
[[package]]
|
|
2651
2651
|
name = "limbo_crypto"
|
|
2652
|
-
version = "0.4.0-pre.
|
|
2652
|
+
version = "0.4.0-pre.16"
|
|
2653
2653
|
dependencies = [
|
|
2654
2654
|
"blake3",
|
|
2655
2655
|
"data-encoding",
|
|
@@ -2662,7 +2662,7 @@ dependencies = [
|
|
|
2662
2662
|
|
|
2663
2663
|
[[package]]
|
|
2664
2664
|
name = "limbo_csv"
|
|
2665
|
-
version = "0.4.0-pre.
|
|
2665
|
+
version = "0.4.0-pre.16"
|
|
2666
2666
|
dependencies = [
|
|
2667
2667
|
"csv",
|
|
2668
2668
|
"mimalloc",
|
|
@@ -2672,7 +2672,7 @@ dependencies = [
|
|
|
2672
2672
|
|
|
2673
2673
|
[[package]]
|
|
2674
2674
|
name = "limbo_fuzzy"
|
|
2675
|
-
version = "0.4.0-pre.
|
|
2675
|
+
version = "0.4.0-pre.16"
|
|
2676
2676
|
dependencies = [
|
|
2677
2677
|
"mimalloc",
|
|
2678
2678
|
"turso_ext",
|
|
@@ -2680,7 +2680,7 @@ dependencies = [
|
|
|
2680
2680
|
|
|
2681
2681
|
[[package]]
|
|
2682
2682
|
name = "limbo_ipaddr"
|
|
2683
|
-
version = "0.4.0-pre.
|
|
2683
|
+
version = "0.4.0-pre.16"
|
|
2684
2684
|
dependencies = [
|
|
2685
2685
|
"ipnetwork",
|
|
2686
2686
|
"mimalloc",
|
|
@@ -2689,7 +2689,7 @@ dependencies = [
|
|
|
2689
2689
|
|
|
2690
2690
|
[[package]]
|
|
2691
2691
|
name = "limbo_percentile"
|
|
2692
|
-
version = "0.4.0-pre.
|
|
2692
|
+
version = "0.4.0-pre.16"
|
|
2693
2693
|
dependencies = [
|
|
2694
2694
|
"mimalloc",
|
|
2695
2695
|
"turso_ext",
|
|
@@ -2697,7 +2697,7 @@ dependencies = [
|
|
|
2697
2697
|
|
|
2698
2698
|
[[package]]
|
|
2699
2699
|
name = "limbo_regexp"
|
|
2700
|
-
version = "0.4.0-pre.
|
|
2700
|
+
version = "0.4.0-pre.16"
|
|
2701
2701
|
dependencies = [
|
|
2702
2702
|
"mimalloc",
|
|
2703
2703
|
"regex",
|
|
@@ -2706,7 +2706,7 @@ dependencies = [
|
|
|
2706
2706
|
|
|
2707
2707
|
[[package]]
|
|
2708
2708
|
name = "limbo_sim"
|
|
2709
|
-
version = "0.4.0-pre.
|
|
2709
|
+
version = "0.4.0-pre.16"
|
|
2710
2710
|
dependencies = [
|
|
2711
2711
|
"anyhow",
|
|
2712
2712
|
"bitflags 2.9.4",
|
|
@@ -2743,7 +2743,7 @@ dependencies = [
|
|
|
2743
2743
|
|
|
2744
2744
|
[[package]]
|
|
2745
2745
|
name = "limbo_sqlite_test_ext"
|
|
2746
|
-
version = "0.4.0-pre.
|
|
2746
|
+
version = "0.4.0-pre.16"
|
|
2747
2747
|
dependencies = [
|
|
2748
2748
|
"cc",
|
|
2749
2749
|
]
|
|
@@ -3569,7 +3569,7 @@ dependencies = [
|
|
|
3569
3569
|
|
|
3570
3570
|
[[package]]
|
|
3571
3571
|
name = "py-turso"
|
|
3572
|
-
version = "0.4.0-pre.
|
|
3572
|
+
version = "0.4.0-pre.16"
|
|
3573
3573
|
dependencies = [
|
|
3574
3574
|
"anyhow",
|
|
3575
3575
|
"pyo3",
|
|
@@ -4329,7 +4329,7 @@ checksum = "d372029cb5195f9ab4e4b9aef550787dce78b124fcaee8d82519925defcd6f0d"
|
|
|
4329
4329
|
|
|
4330
4330
|
[[package]]
|
|
4331
4331
|
name = "sql_generation"
|
|
4332
|
-
version = "0.4.0-pre.
|
|
4332
|
+
version = "0.4.0-pre.16"
|
|
4333
4333
|
dependencies = [
|
|
4334
4334
|
"anarchist-readable-name-generator-lib 0.2.0",
|
|
4335
4335
|
"anyhow",
|
|
@@ -4957,7 +4957,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
|
|
4957
4957
|
|
|
4958
4958
|
[[package]]
|
|
4959
4959
|
name = "turso"
|
|
4960
|
-
version = "0.4.0-pre.
|
|
4960
|
+
version = "0.4.0-pre.16"
|
|
4961
4961
|
dependencies = [
|
|
4962
4962
|
"mimalloc",
|
|
4963
4963
|
"rand 0.9.2",
|
|
@@ -4972,7 +4972,7 @@ dependencies = [
|
|
|
4972
4972
|
|
|
4973
4973
|
[[package]]
|
|
4974
4974
|
name = "turso-java"
|
|
4975
|
-
version = "0.4.0-pre.
|
|
4975
|
+
version = "0.4.0-pre.16"
|
|
4976
4976
|
dependencies = [
|
|
4977
4977
|
"jni",
|
|
4978
4978
|
"thiserror 2.0.16",
|
|
@@ -4981,7 +4981,7 @@ dependencies = [
|
|
|
4981
4981
|
|
|
4982
4982
|
[[package]]
|
|
4983
4983
|
name = "turso_cli"
|
|
4984
|
-
version = "0.4.0-pre.
|
|
4984
|
+
version = "0.4.0-pre.16"
|
|
4985
4985
|
dependencies = [
|
|
4986
4986
|
"anyhow",
|
|
4987
4987
|
"cfg-if",
|
|
@@ -5017,7 +5017,7 @@ dependencies = [
|
|
|
5017
5017
|
|
|
5018
5018
|
[[package]]
|
|
5019
5019
|
name = "turso_core"
|
|
5020
|
-
version = "0.4.0-pre.
|
|
5020
|
+
version = "0.4.0-pre.16"
|
|
5021
5021
|
dependencies = [
|
|
5022
5022
|
"aegis",
|
|
5023
5023
|
"aes",
|
|
@@ -5082,7 +5082,7 @@ dependencies = [
|
|
|
5082
5082
|
|
|
5083
5083
|
[[package]]
|
|
5084
5084
|
name = "turso_dart"
|
|
5085
|
-
version = "0.4.0-pre.
|
|
5085
|
+
version = "0.4.0-pre.16"
|
|
5086
5086
|
dependencies = [
|
|
5087
5087
|
"flutter_rust_bridge",
|
|
5088
5088
|
"turso_core",
|
|
@@ -5090,7 +5090,7 @@ dependencies = [
|
|
|
5090
5090
|
|
|
5091
5091
|
[[package]]
|
|
5092
5092
|
name = "turso_ext"
|
|
5093
|
-
version = "0.4.0-pre.
|
|
5093
|
+
version = "0.4.0-pre.16"
|
|
5094
5094
|
dependencies = [
|
|
5095
5095
|
"chrono",
|
|
5096
5096
|
"getrandom 0.3.2",
|
|
@@ -5099,7 +5099,7 @@ dependencies = [
|
|
|
5099
5099
|
|
|
5100
5100
|
[[package]]
|
|
5101
5101
|
name = "turso_ext_tests"
|
|
5102
|
-
version = "0.4.0-pre.
|
|
5102
|
+
version = "0.4.0-pre.16"
|
|
5103
5103
|
dependencies = [
|
|
5104
5104
|
"env_logger 0.11.7",
|
|
5105
5105
|
"lazy_static",
|
|
@@ -5110,7 +5110,7 @@ dependencies = [
|
|
|
5110
5110
|
|
|
5111
5111
|
[[package]]
|
|
5112
5112
|
name = "turso_macros"
|
|
5113
|
-
version = "0.4.0-pre.
|
|
5113
|
+
version = "0.4.0-pre.16"
|
|
5114
5114
|
dependencies = [
|
|
5115
5115
|
"proc-macro2",
|
|
5116
5116
|
"quote",
|
|
@@ -5119,7 +5119,7 @@ dependencies = [
|
|
|
5119
5119
|
|
|
5120
5120
|
[[package]]
|
|
5121
5121
|
name = "turso_node"
|
|
5122
|
-
version = "0.4.0-pre.
|
|
5122
|
+
version = "0.4.0-pre.16"
|
|
5123
5123
|
dependencies = [
|
|
5124
5124
|
"chrono",
|
|
5125
5125
|
"napi",
|
|
@@ -5132,7 +5132,7 @@ dependencies = [
|
|
|
5132
5132
|
|
|
5133
5133
|
[[package]]
|
|
5134
5134
|
name = "turso_parser"
|
|
5135
|
-
version = "0.4.0-pre.
|
|
5135
|
+
version = "0.4.0-pre.16"
|
|
5136
5136
|
dependencies = [
|
|
5137
5137
|
"bitflags 2.9.4",
|
|
5138
5138
|
"criterion",
|
|
@@ -5148,7 +5148,7 @@ dependencies = [
|
|
|
5148
5148
|
|
|
5149
5149
|
[[package]]
|
|
5150
5150
|
name = "turso_sdk_kit"
|
|
5151
|
-
version = "0.4.0-pre.
|
|
5151
|
+
version = "0.4.0-pre.16"
|
|
5152
5152
|
dependencies = [
|
|
5153
5153
|
"bindgen",
|
|
5154
5154
|
"env_logger 0.11.7",
|
|
@@ -5161,7 +5161,7 @@ dependencies = [
|
|
|
5161
5161
|
|
|
5162
5162
|
[[package]]
|
|
5163
5163
|
name = "turso_sdk_kit_macros"
|
|
5164
|
-
version = "0.4.0-pre.
|
|
5164
|
+
version = "0.4.0-pre.16"
|
|
5165
5165
|
dependencies = [
|
|
5166
5166
|
"proc-macro2",
|
|
5167
5167
|
"quote",
|
|
@@ -5170,7 +5170,7 @@ dependencies = [
|
|
|
5170
5170
|
|
|
5171
5171
|
[[package]]
|
|
5172
5172
|
name = "turso_sqlite3"
|
|
5173
|
-
version = "0.4.0-pre.
|
|
5173
|
+
version = "0.4.0-pre.16"
|
|
5174
5174
|
dependencies = [
|
|
5175
5175
|
"env_logger 0.11.7",
|
|
5176
5176
|
"libc",
|
|
@@ -5183,7 +5183,7 @@ dependencies = [
|
|
|
5183
5183
|
|
|
5184
5184
|
[[package]]
|
|
5185
5185
|
name = "turso_stress"
|
|
5186
|
-
version = "0.4.0-pre.
|
|
5186
|
+
version = "0.4.0-pre.16"
|
|
5187
5187
|
dependencies = [
|
|
5188
5188
|
"anarchist-readable-name-generator-lib 0.1.2",
|
|
5189
5189
|
"antithesis_sdk",
|
|
@@ -5200,7 +5200,7 @@ dependencies = [
|
|
|
5200
5200
|
|
|
5201
5201
|
[[package]]
|
|
5202
5202
|
name = "turso_sync_engine"
|
|
5203
|
-
version = "0.4.0-pre.
|
|
5203
|
+
version = "0.4.0-pre.16"
|
|
5204
5204
|
dependencies = [
|
|
5205
5205
|
"base64 0.22.1",
|
|
5206
5206
|
"bytes",
|
|
@@ -5228,7 +5228,7 @@ dependencies = [
|
|
|
5228
5228
|
|
|
5229
5229
|
[[package]]
|
|
5230
5230
|
name = "turso_sync_js"
|
|
5231
|
-
version = "0.4.0-pre.
|
|
5231
|
+
version = "0.4.0-pre.16"
|
|
5232
5232
|
dependencies = [
|
|
5233
5233
|
"genawaiter",
|
|
5234
5234
|
"napi",
|
|
@@ -5243,7 +5243,7 @@ dependencies = [
|
|
|
5243
5243
|
|
|
5244
5244
|
[[package]]
|
|
5245
5245
|
name = "turso_sync_sdk_kit"
|
|
5246
|
-
version = "0.4.0-pre.
|
|
5246
|
+
version = "0.4.0-pre.16"
|
|
5247
5247
|
dependencies = [
|
|
5248
5248
|
"bindgen",
|
|
5249
5249
|
"env_logger 0.11.7",
|
|
@@ -5260,7 +5260,7 @@ dependencies = [
|
|
|
5260
5260
|
|
|
5261
5261
|
[[package]]
|
|
5262
5262
|
name = "turso_whopper"
|
|
5263
|
-
version = "0.4.0-pre.
|
|
5263
|
+
version = "0.4.0-pre.16"
|
|
5264
5264
|
dependencies = [
|
|
5265
5265
|
"anyhow",
|
|
5266
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.16"
|
|
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.16" }
|
|
17
|
+
turso_node = { path = "bindings/javascript", version = "0.4.0-pre.16" }
|
|
18
|
+
turso_sdk_kit = { path = "sdk-kit", version = "0.4.0-pre.16" }
|
|
19
|
+
turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.0-pre.16" }
|
|
20
|
+
turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.0-pre.16" }
|
|
21
|
+
limbo_completion = { path = "extensions/completion", version = "0.4.0-pre.16" }
|
|
22
|
+
turso_core = { path = "core", version = "0.4.0-pre.16" }
|
|
23
|
+
turso_sync_engine = { path = "sync/engine", version = "0.4.0-pre.16" }
|
|
24
|
+
limbo_crypto = { path = "extensions/crypto", version = "0.4.0-pre.16" }
|
|
25
|
+
limbo_csv = { path = "extensions/csv", version = "0.4.0-pre.16" }
|
|
26
|
+
turso_ext = { path = "extensions/core", version = "0.4.0-pre.16" }
|
|
27
|
+
turso_ext_tests = { path = "extensions/tests", version = "0.4.0-pre.16" }
|
|
28
|
+
limbo_ipaddr = { path = "extensions/ipaddr", version = "0.4.0-pre.16" }
|
|
29
|
+
turso_macros = { path = "macros", version = "0.4.0-pre.16" }
|
|
30
|
+
limbo_percentile = { path = "extensions/percentile", version = "0.4.0-pre.16" }
|
|
31
|
+
limbo_regexp = { path = "extensions/regexp", version = "0.4.0-pre.16" }
|
|
32
|
+
limbo_uuid = { path = "extensions/uuid", version = "0.4.0-pre.16" }
|
|
33
|
+
turso_parser = { path = "parser", version = "0.4.0-pre.16" }
|
|
34
|
+
limbo_fuzzy = { path = "extensions/fuzzy", version = "0.4.0-pre.16" }
|
|
35
35
|
sql_generation = { path = "sql_generation" }
|
|
36
36
|
strum = { version = "0.26", features = ["derive"] }
|
|
37
37
|
strum_macros = "0.26"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyturso
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.0rc16
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: Programming Language :: Python
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -163,7 +163,10 @@ import turso.sync
|
|
|
163
163
|
conn = turso.sync.connect(
|
|
164
164
|
"local.db",
|
|
165
165
|
remote_url="https://<db>.<region>.turso.io",
|
|
166
|
-
|
|
166
|
+
# fetch first 128 KiB upfront
|
|
167
|
+
partial_sync_opts=turso.sync.PartialSyncOpts(
|
|
168
|
+
bootstrap_strategy=turso.sync.PartialSyncPrefixBootstrap(length=128 * 1024),
|
|
169
|
+
),
|
|
167
170
|
)
|
|
168
171
|
```
|
|
169
172
|
|
|
@@ -128,7 +128,10 @@ import turso.sync
|
|
|
128
128
|
conn = turso.sync.connect(
|
|
129
129
|
"local.db",
|
|
130
130
|
remote_url="https://<db>.<region>.turso.io",
|
|
131
|
-
|
|
131
|
+
# fetch first 128 KiB upfront
|
|
132
|
+
partial_sync_opts=turso.sync.PartialSyncOpts(
|
|
133
|
+
bootstrap_strategy=turso.sync.PartialSyncPrefixBootstrap(length=128 * 1024),
|
|
134
|
+
),
|
|
132
135
|
)
|
|
133
136
|
```
|
|
134
137
|
|
|
@@ -264,13 +264,13 @@ impl PyTursoAsyncOperation {
|
|
|
264
264
|
/// If returns Ok(None) - operation is not finished yet and must be resumed after one iteration of sync engine IO
|
|
265
265
|
/// If returns Ok(Some(...)) - operation is finished and result must be processed accordingly
|
|
266
266
|
pub fn resume(&self, py: Python) -> PyResult<Option<PyTursoAsyncOperationResult>> {
|
|
267
|
-
let
|
|
268
|
-
if result
|
|
267
|
+
let result = self.operation.resume().map_err(turso_error_to_py_err)?;
|
|
268
|
+
if result == TursoStatusCode::Io {
|
|
269
269
|
Ok(None)
|
|
270
|
-
} else if result
|
|
271
|
-
let result =
|
|
270
|
+
} else if result == TursoStatusCode::Done {
|
|
271
|
+
let result = self.operation.take_result();
|
|
272
272
|
match result {
|
|
273
|
-
|
|
273
|
+
Ok(TursoAsyncOperationResult::Changes { changes }) => {
|
|
274
274
|
Ok(Some(PyTursoAsyncOperationResult {
|
|
275
275
|
kind: PyTursoAsyncOperationResultKind::Changes,
|
|
276
276
|
changes: Some(pyo3::Py::new(
|
|
@@ -283,7 +283,7 @@ impl PyTursoAsyncOperation {
|
|
|
283
283
|
stats: None,
|
|
284
284
|
}))
|
|
285
285
|
}
|
|
286
|
-
|
|
286
|
+
Ok(TursoAsyncOperationResult::Connection { connection }) => {
|
|
287
287
|
Ok(Some(PyTursoAsyncOperationResult {
|
|
288
288
|
kind: PyTursoAsyncOperationResultKind::Connection,
|
|
289
289
|
changes: None,
|
|
@@ -291,7 +291,7 @@ impl PyTursoAsyncOperation {
|
|
|
291
291
|
stats: None,
|
|
292
292
|
}))
|
|
293
293
|
}
|
|
294
|
-
|
|
294
|
+
Ok(TursoAsyncOperationResult::Stats { stats }) => {
|
|
295
295
|
Ok(Some(PyTursoAsyncOperationResult {
|
|
296
296
|
kind: PyTursoAsyncOperationResultKind::Stats,
|
|
297
297
|
changes: None,
|
|
@@ -311,7 +311,7 @@ impl PyTursoAsyncOperation {
|
|
|
311
311
|
)?),
|
|
312
312
|
}))
|
|
313
313
|
}
|
|
314
|
-
|
|
314
|
+
Err(..) => Ok(Some(PyTursoAsyncOperationResult {
|
|
315
315
|
kind: PyTursoAsyncOperationResultKind::No,
|
|
316
316
|
changes: None,
|
|
317
317
|
connection: None,
|
|
@@ -170,7 +170,7 @@ def test_partial_sync():
|
|
|
170
170
|
),
|
|
171
171
|
)
|
|
172
172
|
assert conn_partial.execute("SELECT LENGTH(x) FROM t LIMIT 1").fetchall() == [(1024,)]
|
|
173
|
-
assert conn_partial.stats().network_received_bytes < 256 * 1024
|
|
173
|
+
assert conn_partial.stats().network_received_bytes < 256 * (1024 + 10)
|
|
174
174
|
|
|
175
175
|
start = time.time()
|
|
176
176
|
assert conn_partial.execute("SELECT SUM(LENGTH(x)) FROM t").fetchall() == [(2000 * 1024,)]
|
|
@@ -174,7 +174,7 @@ async def test_partial_sync():
|
|
|
174
174
|
),
|
|
175
175
|
)
|
|
176
176
|
assert await (await conn_partial.execute("SELECT LENGTH(x) FROM t LIMIT 1")).fetchall() == [(1024,)]
|
|
177
|
-
assert (await conn_partial.stats()).network_received_bytes < 256 * 1024
|
|
177
|
+
assert (await conn_partial.stats()).network_received_bytes < 256 * (1024 + 10)
|
|
178
178
|
|
|
179
179
|
start = time.time()
|
|
180
180
|
assert await (await conn_partial.execute("SELECT SUM(LENGTH(x)) FROM t")).fetchall() == [(2000 * 1024,)]
|
|
@@ -669,10 +669,16 @@ fn parse_modifier_time(s: &str) -> Result<NaiveTime> {
|
|
|
669
669
|
fn parse_modifier(modifier: &str) -> Result<Modifier> {
|
|
670
670
|
// Small helpers to check string suffix/prefix in a case-insensitive way with no allocation
|
|
671
671
|
fn ends_with_ignore_ascii_case(s: &str, suffix: &str) -> bool {
|
|
672
|
-
|
|
672
|
+
// suffix is always ASCII, so suffix.len() is the char count
|
|
673
|
+
// But s might have multi-byte UTF-8 chars, so we need to check char boundary
|
|
674
|
+
let start = s.len().saturating_sub(suffix.len());
|
|
675
|
+
s.is_char_boundary(start) && s[start..].eq_ignore_ascii_case(suffix)
|
|
673
676
|
}
|
|
674
677
|
fn starts_with_ignore_ascii_case(s: &str, prefix: &str) -> bool {
|
|
675
|
-
|
|
678
|
+
// prefix is always ASCII, so prefix.len() is the char count
|
|
679
|
+
s.is_char_boundary(prefix.len())
|
|
680
|
+
&& s.len() >= prefix.len()
|
|
681
|
+
&& s[..prefix.len()].eq_ignore_ascii_case(prefix)
|
|
676
682
|
}
|
|
677
683
|
|
|
678
684
|
let modifier = modifier.trim();
|
|
@@ -1998,4 +2004,27 @@ mod tests {
|
|
|
1998
2004
|
"Case insensitivity check failed"
|
|
1999
2005
|
);
|
|
2000
2006
|
}
|
|
2007
|
+
|
|
2008
|
+
#[test]
|
|
2009
|
+
fn test_parse_modifier_unicode_no_panic() {
|
|
2010
|
+
// Regression test: parse_modifier should not panic on multi-byte UTF-8 strings
|
|
2011
|
+
// that are shorter than expected modifier suffixes when measured in bytes
|
|
2012
|
+
let unicode_inputs = [
|
|
2013
|
+
"!*\u{ea37}", // <-- this produced a crash in SQLancer :]
|
|
2014
|
+
"\u{1F600}", // Emoji (4 bytes)
|
|
2015
|
+
"日本語", // Japanese text
|
|
2016
|
+
"中", // Single Chinese character
|
|
2017
|
+
"\u{0080}", // 2-byte UTF-8
|
|
2018
|
+
"", // Empty string
|
|
2019
|
+
];
|
|
2020
|
+
|
|
2021
|
+
for input in unicode_inputs {
|
|
2022
|
+
// Should not panic - just return an error for invalid modifiers
|
|
2023
|
+
let result = parse_modifier(input);
|
|
2024
|
+
assert!(
|
|
2025
|
+
result.is_err(),
|
|
2026
|
+
"Expected error for invalid modifier: {input}"
|
|
2027
|
+
);
|
|
2028
|
+
}
|
|
2029
|
+
}
|
|
2001
2030
|
}
|
|
@@ -404,7 +404,7 @@ impl CompiledExpression {
|
|
|
404
404
|
});
|
|
405
405
|
|
|
406
406
|
// Build the program from the compiled expression bytecode
|
|
407
|
-
let program = Arc::new(builder.build(connection, false, ""));
|
|
407
|
+
let program = Arc::new(builder.build(connection, false, "")?);
|
|
408
408
|
|
|
409
409
|
Ok(CompiledExpression {
|
|
410
410
|
executor: ExpressionExecutor::Compiled(program),
|
|
@@ -951,6 +951,7 @@ impl<Clock: LogicalClock + 'static> CursorTrait for MvccLazyCursor<Clock> {
|
|
|
951
951
|
}
|
|
952
952
|
}
|
|
953
953
|
CursorPosition::End => {
|
|
954
|
+
self.state.replace(None);
|
|
954
955
|
return Ok(IOResult::Done(false));
|
|
955
956
|
}
|
|
956
957
|
};
|
|
@@ -1047,6 +1048,7 @@ impl<Clock: LogicalClock + 'static> CursorTrait for MvccLazyCursor<Clock> {
|
|
|
1047
1048
|
}
|
|
1048
1049
|
}
|
|
1049
1050
|
CursorPosition::BeforeFirst => {
|
|
1051
|
+
self.state.replace(None);
|
|
1050
1052
|
return Ok(IOResult::Done(false));
|
|
1051
1053
|
}
|
|
1052
1054
|
};
|
|
@@ -205,7 +205,7 @@ impl<Clock: LogicalClock> CheckpointStateMachine<Clock> {
|
|
|
205
205
|
begin_ts = Some(b);
|
|
206
206
|
if self
|
|
207
207
|
.checkpointed_txid_max_old
|
|
208
|
-
.
|
|
208
|
+
.is_none_or(|txid_max_old| b <= txid_max_old.into())
|
|
209
209
|
{
|
|
210
210
|
exists_in_db_file = true;
|
|
211
211
|
}
|
|
@@ -229,11 +229,9 @@ impl<Clock: LogicalClock> CheckpointStateMachine<Clock> {
|
|
|
229
229
|
// We need the `self.checkpointed_txid_max_old.is_none()` check as we may have not checkpointed yet,
|
|
230
230
|
// and without this check, recovered rows could skipped accidently
|
|
231
231
|
let is_uncheckpointed_insert = end_ts.is_none()
|
|
232
|
-
&&
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
.is_some_and(|txid_max_old| b > txid_max_old.into())
|
|
236
|
-
}));
|
|
232
|
+
&& self
|
|
233
|
+
.checkpointed_txid_max_old
|
|
234
|
+
.is_none_or(|txid_max_old| begin_ts.is_some_and(|b| b > txid_max_old.into()));
|
|
237
235
|
// - It is a delete, AND some version of the row exists in the database file.
|
|
238
236
|
let is_delete_and_exists_in_db_file = end_ts.is_some() && exists_in_db_file;
|
|
239
237
|
let should_checkpoint = is_uncheckpointed_insert || is_delete_and_exists_in_db_file;
|
|
@@ -1110,10 +1108,10 @@ impl<Clock: LogicalClock> CheckpointStateMachine<Clock> {
|
|
|
1110
1108
|
self.connection.db.with_schema_mut(|schema| {
|
|
1111
1109
|
for table in schema.tables.values_mut() {
|
|
1112
1110
|
let table = Arc::get_mut(table).expect("this should be the only reference");
|
|
1113
|
-
let Some(
|
|
1111
|
+
let Some(btree_table) = table.btree_mut() else {
|
|
1114
1112
|
continue;
|
|
1115
1113
|
};
|
|
1116
|
-
let btree_table = Arc::make_mut(
|
|
1114
|
+
let btree_table = Arc::make_mut(btree_table);
|
|
1117
1115
|
if btree_table.root_page < 0 {
|
|
1118
1116
|
btree_table.root_page = btree_table.root_page.abs();
|
|
1119
1117
|
}
|
|
@@ -1134,7 +1132,7 @@ impl<Clock: LogicalClock> CheckpointStateMachine<Clock> {
|
|
|
1134
1132
|
self.mvstore.global_header.write().replace(*header);
|
|
1135
1133
|
IOResult::Done(())
|
|
1136
1134
|
})
|
|
1137
|
-
})
|
|
1135
|
+
})?;
|
|
1138
1136
|
Ok(())
|
|
1139
1137
|
})?;
|
|
1140
1138
|
|
|
@@ -1448,6 +1448,14 @@ impl Table {
|
|
|
1448
1448
|
}
|
|
1449
1449
|
}
|
|
1450
1450
|
|
|
1451
|
+
pub fn btree_mut(&mut self) -> Option<&mut Arc<BTreeTable>> {
|
|
1452
|
+
match self {
|
|
1453
|
+
Self::BTree(table) => Some(table),
|
|
1454
|
+
Self::Virtual(_) => None,
|
|
1455
|
+
Self::FromClauseSubquery(_) => None,
|
|
1456
|
+
}
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1451
1459
|
pub fn virtual_table(&self) -> Option<Arc<VirtualTable>> {
|
|
1452
1460
|
match self {
|
|
1453
1461
|
Self::Virtual(table) => Some(table.clone()),
|
|
@@ -806,7 +806,7 @@ pub fn translate_expr(
|
|
|
806
806
|
}
|
|
807
807
|
}
|
|
808
808
|
ast::Expr::Between { .. } => {
|
|
809
|
-
|
|
809
|
+
crate::bail_parse_error!("expression should have been rewritten in optmizer")
|
|
810
810
|
}
|
|
811
811
|
ast::Expr::Binary(e1, op, e2) => {
|
|
812
812
|
binary_expr_shared(
|
|
@@ -972,6 +972,7 @@ fn emit_notnulls(
|
|
|
972
972
|
resolver: &Resolver,
|
|
973
973
|
) -> Result<Option<BranchOffset>> {
|
|
974
974
|
let on_replace = matches!(ctx.on_conflict, ResolveType::Replace);
|
|
975
|
+
let on_ignore = matches!(ctx.on_conflict, ResolveType::Ignore);
|
|
975
976
|
let mut pending_resume_label = None;
|
|
976
977
|
for column_mapping in insertion
|
|
977
978
|
.col_mappings
|
|
@@ -1024,32 +1025,41 @@ fn emit_notnulls(
|
|
|
1024
1025
|
}
|
|
1025
1026
|
// OR REPLACE but no DEFAULT, fall through to ABORT behavior
|
|
1026
1027
|
}
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1028
|
+
|
|
1029
|
+
// For INSERT OR IGNORE, skip to the next row if NULL
|
|
1030
|
+
if on_ignore {
|
|
1031
|
+
program.emit_insn(Insn::IsNull {
|
|
1032
|
+
reg: column_mapping.register,
|
|
1033
|
+
target_pc: ctx.row_done_label,
|
|
1034
|
+
});
|
|
1035
|
+
} else {
|
|
1036
|
+
program.emit_insn(Insn::HaltIfNull {
|
|
1037
|
+
target_reg: column_mapping.register,
|
|
1038
|
+
err_code: SQLITE_CONSTRAINT_NOTNULL,
|
|
1039
|
+
description: {
|
|
1040
|
+
let mut description = String::with_capacity(
|
|
1041
|
+
ctx.table.name.as_str().len()
|
|
1042
|
+
+ column_mapping
|
|
1043
|
+
.column
|
|
1044
|
+
.name
|
|
1045
|
+
.as_ref()
|
|
1046
|
+
.expect("Column name must be present")
|
|
1047
|
+
.len()
|
|
1048
|
+
+ 2,
|
|
1049
|
+
);
|
|
1050
|
+
description.push_str(ctx.table.name.as_str());
|
|
1051
|
+
description.push('.');
|
|
1052
|
+
description.push_str(
|
|
1053
|
+
column_mapping
|
|
1034
1054
|
.column
|
|
1035
1055
|
.name
|
|
1036
1056
|
.as_ref()
|
|
1037
|
-
.expect("Column name must be present")
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
description.push_str(
|
|
1044
|
-
column_mapping
|
|
1045
|
-
.column
|
|
1046
|
-
.name
|
|
1047
|
-
.as_ref()
|
|
1048
|
-
.expect("Column name must be present"),
|
|
1049
|
-
);
|
|
1050
|
-
description
|
|
1051
|
-
},
|
|
1052
|
-
});
|
|
1057
|
+
.expect("Column name must be present"),
|
|
1058
|
+
);
|
|
1059
|
+
description
|
|
1060
|
+
},
|
|
1061
|
+
});
|
|
1062
|
+
}
|
|
1053
1063
|
}
|
|
1054
1064
|
Ok(pending_resume_label)
|
|
1055
1065
|
}
|
|
@@ -108,7 +108,7 @@ pub fn translate(
|
|
|
108
108
|
|
|
109
109
|
program.epilogue(schema);
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
program.build(connection, change_cnt_on, input)
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
// TODO: for now leaving the return value as a Program. But ideally to support nested parsing of arbitraty
|