pyturso 0.3.0rc3__tar.gz → 0.3.0rc5__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.
Potentially problematic release.
This version of pyturso might be problematic. Click here for more details.
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/Cargo.lock +58 -41
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/Cargo.toml +18 -18
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/PKG-INFO +1 -1
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/src/lib.rs +1 -1
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/Cargo.toml +6 -6
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/benches/benchmark.rs +113 -1
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/error.rs +1 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/ext/mod.rs +16 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/functions/datetime.rs +86 -32
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/aggregate_operator.rs +1301 -75
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/compiler.rs +113 -53
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/cursor.rs +6 -9
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/operator.rs +596 -116
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/persistence.rs +14 -5
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/project_operator.rs +1 -1
- pyturso-0.3.0rc5/core/index_method/backing_btree.rs +45 -0
- pyturso-0.3.0rc5/core/index_method/mod.rs +171 -0
- pyturso-0.3.0rc5/core/index_method/toy_vector_sparse_ivf.rs +725 -0
- pyturso-0.3.0rc3/core/io/mod.rs → pyturso-0.3.0rc5/core/io/completions.rs +16 -327
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/io/generic.rs +1 -3
- pyturso-0.3.0rc5/core/io/mod.rs +328 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/lib.rs +160 -88
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/mvcc/cursor.rs +81 -26
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/mvcc/database/checkpoint_state_machine.rs +7 -12
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/mvcc/database/mod.rs +2 -3
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/mvcc/database/tests.rs +50 -45
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/mvcc/mod.rs +5 -5
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/mvcc/persistent_storage/logical_log.rs +5 -5
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/schema.rs +127 -34
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/btree.rs +92 -196
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/buffer_pool.rs +4 -4
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/encryption.rs +32 -21
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/mod.rs +1 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/page_cache.rs +4 -6
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/pager.rs +383 -72
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/slot_bitmap.rs +9 -7
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/sqlite3_ondisk.rs +45 -6
- pyturso-0.3.0rc5/core/storage/subjournal.rs +88 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/wal.rs +278 -255
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/aggregation.rs +1 -1
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/collate.rs +2 -2
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/compound_select.rs +1 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/display.rs +3 -2
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/emitter.rs +29 -24
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/expr.rs +239 -41
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/fkeys.rs +71 -128
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/index.rs +242 -213
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/insert.rs +5 -4
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/main_loop.rs +94 -41
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/mod.rs +3 -17
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/optimizer/constraints.rs +6 -5
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/optimizer/join.rs +92 -36
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/optimizer/mod.rs +19 -5
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/order_by.rs +212 -72
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/plan.rs +145 -13
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/planner.rs +70 -5
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/pragma.rs +39 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/result_row.rs +18 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/select.rs +22 -0
- pyturso-0.3.0rc5/core/translate/subquery.rs +560 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/upsert.rs +5 -2
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/values.rs +29 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/window.rs +1 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/util.rs +86 -4
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vdbe/builder.rs +51 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vdbe/execute.rs +505 -235
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vdbe/explain.rs +4 -4
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vdbe/insn.rs +2 -2
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vdbe/mod.rs +89 -20
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vdbe/sorter.rs +0 -17
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/mod.rs +2 -2
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/operations/concat.rs +14 -12
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/operations/convert.rs +12 -8
- pyturso-0.3.0rc5/core/vector/operations/distance_cos.rs +217 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/operations/distance_l2.rs +74 -21
- pyturso-0.3.0rc5/core/vector/operations/serialize.rs +22 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/operations/slice.rs +9 -5
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/operations/text.rs +11 -7
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/vector_types.rs +78 -33
- pyturso-0.3.0rc5/macros/src/atomic_enum.rs +290 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/macros/src/lib.rs +28 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/src/ast/fmt.rs +25 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/src/ast.rs +38 -0
- pyturso-0.3.0rc5/parser/src/error.rs +108 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/src/lexer.rs +125 -33
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/src/parser.rs +121 -5
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/src/token.rs +43 -0
- pyturso-0.3.0rc3/core/translate/subquery.rs +0 -139
- pyturso-0.3.0rc3/core/vector/operations/distance_cos.rs +0 -172
- pyturso-0.3.0rc3/core/vector/operations/serialize.rs +0 -19
- pyturso-0.3.0rc3/parser/src/error.rs +0 -52
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/Cargo.toml +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/build.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/example.py +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/requirements-dev.txt +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/requirements.txt +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/src/errors.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/tests/__init__.py +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/tests/test_database.py +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/turso/__init__.py +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/bindings/python/turso/py.typed +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/assert.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/benches/json_benchmark.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/benches/mvcc_benchmark.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/benches/tpc_h_benchmark.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/build.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/ext/dynamic.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/ext/vtab_xconnect.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/fast_lock.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/function.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/functions/mod.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/functions/printf.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/functions/strftime.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/dbsp.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/expr_compiler.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/filter_operator.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/input_operator.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/join_operator.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/merge_operator.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/mod.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/incremental/view.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/info.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/io/clock.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/io/common.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/io/io_uring.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/io/memory.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/io/unix.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/io/vfs.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/io/windows.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/json/cache.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/json/error.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/json/jsonb.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/json/mod.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/json/ops.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/json/path.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/json/vtab.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/mvcc/clock.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/mvcc/persistent_storage/mod.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/numeric/mod.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/numeric/nonnan.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/parameters.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/pragma.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/pseudo.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/series.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/state_machine.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/checksum.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/database.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/storage/state_machines.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/time/internal.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/time/mod.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/alter.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/analyze.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/attach.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/delete.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/group_by.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/integrity_check.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/logical.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/optimizer/OPTIMIZER.md +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/optimizer/access_method.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/optimizer/cost.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/optimizer/lift_common_subexpressions.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/optimizer/order.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/rollback.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/schema.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/transaction.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/update.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/translate/view.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/types.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/uuid.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vdbe/likeop.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vdbe/metrics.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/operations/jaccard.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vector/operations/mod.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/core/vtab.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/extensions/core/Cargo.toml +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/extensions/core/README.md +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/extensions/core/build.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/extensions/core/src/functions.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/extensions/core/src/lib.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/extensions/core/src/types.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/extensions/core/src/vfs_modules.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/extensions/core/src/vtabs.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/macros/Cargo.toml +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/macros/src/ext/agg_derive.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/macros/src/ext/match_ignore_ascii_case.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/macros/src/ext/mod.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/macros/src/ext/scalars.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/macros/src/ext/vfs_derive.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/macros/src/ext/vtab_derive.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/Cargo.toml +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/README.md +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/benches/parser_benchmark.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/src/ast/check.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/parser/src/lib.rs +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/pyproject.toml +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/turso/__init__.py +0 -0
- {pyturso-0.3.0rc3 → pyturso-0.3.0rc5}/turso/py.typed +0 -0
|
@@ -227,6 +227,12 @@ version = "1.0.98"
|
|
|
227
227
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
228
228
|
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
|
|
229
229
|
|
|
230
|
+
[[package]]
|
|
231
|
+
name = "arc-swap"
|
|
232
|
+
version = "1.7.1"
|
|
233
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
234
|
+
checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
|
|
235
|
+
|
|
230
236
|
[[package]]
|
|
231
237
|
name = "arrayref"
|
|
232
238
|
version = "0.3.9"
|
|
@@ -523,10 +529,11 @@ dependencies = [
|
|
|
523
529
|
|
|
524
530
|
[[package]]
|
|
525
531
|
name = "cc"
|
|
526
|
-
version = "1.2.
|
|
532
|
+
version = "1.2.41"
|
|
527
533
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
528
|
-
checksum = "
|
|
534
|
+
checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7"
|
|
529
535
|
dependencies = [
|
|
536
|
+
"find-msvc-tools",
|
|
530
537
|
"jobserver",
|
|
531
538
|
"libc",
|
|
532
539
|
"shlex",
|
|
@@ -821,7 +828,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
|
821
828
|
|
|
822
829
|
[[package]]
|
|
823
830
|
name = "core_tester"
|
|
824
|
-
version = "0.3.0-pre.
|
|
831
|
+
version = "0.3.0-pre.5"
|
|
825
832
|
dependencies = [
|
|
826
833
|
"anyhow",
|
|
827
834
|
"assert_cmd",
|
|
@@ -831,6 +838,7 @@ dependencies = [
|
|
|
831
838
|
"rand 0.9.2",
|
|
832
839
|
"rand_chacha 0.9.0",
|
|
833
840
|
"rusqlite",
|
|
841
|
+
"sql_generation",
|
|
834
842
|
"tempfile",
|
|
835
843
|
"test-log",
|
|
836
844
|
"tokio",
|
|
@@ -838,6 +846,7 @@ dependencies = [
|
|
|
838
846
|
"tracing-subscriber",
|
|
839
847
|
"turso",
|
|
840
848
|
"turso_core",
|
|
849
|
+
"turso_parser",
|
|
841
850
|
"twox-hash",
|
|
842
851
|
"zerocopy 0.8.26",
|
|
843
852
|
]
|
|
@@ -1502,6 +1511,12 @@ dependencies = [
|
|
|
1502
1511
|
"windows-sys 0.59.0",
|
|
1503
1512
|
]
|
|
1504
1513
|
|
|
1514
|
+
[[package]]
|
|
1515
|
+
name = "find-msvc-tools"
|
|
1516
|
+
version = "0.1.4"
|
|
1517
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1518
|
+
checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
|
|
1519
|
+
|
|
1505
1520
|
[[package]]
|
|
1506
1521
|
name = "findshlibs"
|
|
1507
1522
|
version = "0.10.2"
|
|
@@ -2401,15 +2416,6 @@ dependencies = [
|
|
|
2401
2416
|
"serde",
|
|
2402
2417
|
]
|
|
2403
2418
|
|
|
2404
|
-
[[package]]
|
|
2405
|
-
name = "julian_day_converter"
|
|
2406
|
-
version = "0.4.5"
|
|
2407
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2408
|
-
checksum = "f2987f71b89b85c812c8484cbf0c5d7912589e77bfdc66fd3e52f760e7859f16"
|
|
2409
|
-
dependencies = [
|
|
2410
|
-
"chrono",
|
|
2411
|
-
]
|
|
2412
|
-
|
|
2413
2419
|
[[package]]
|
|
2414
2420
|
name = "kqueue"
|
|
2415
2421
|
version = "1.0.8"
|
|
@@ -2539,7 +2545,7 @@ dependencies = [
|
|
|
2539
2545
|
|
|
2540
2546
|
[[package]]
|
|
2541
2547
|
name = "limbo_completion"
|
|
2542
|
-
version = "0.3.0-pre.
|
|
2548
|
+
version = "0.3.0-pre.5"
|
|
2543
2549
|
dependencies = [
|
|
2544
2550
|
"mimalloc",
|
|
2545
2551
|
"turso_ext",
|
|
@@ -2547,7 +2553,7 @@ dependencies = [
|
|
|
2547
2553
|
|
|
2548
2554
|
[[package]]
|
|
2549
2555
|
name = "limbo_crypto"
|
|
2550
|
-
version = "0.3.0-pre.
|
|
2556
|
+
version = "0.3.0-pre.5"
|
|
2551
2557
|
dependencies = [
|
|
2552
2558
|
"blake3",
|
|
2553
2559
|
"data-encoding",
|
|
@@ -2560,7 +2566,7 @@ dependencies = [
|
|
|
2560
2566
|
|
|
2561
2567
|
[[package]]
|
|
2562
2568
|
name = "limbo_csv"
|
|
2563
|
-
version = "0.3.0-pre.
|
|
2569
|
+
version = "0.3.0-pre.5"
|
|
2564
2570
|
dependencies = [
|
|
2565
2571
|
"csv",
|
|
2566
2572
|
"mimalloc",
|
|
@@ -2570,7 +2576,7 @@ dependencies = [
|
|
|
2570
2576
|
|
|
2571
2577
|
[[package]]
|
|
2572
2578
|
name = "limbo_fuzzy"
|
|
2573
|
-
version = "0.3.0-pre.
|
|
2579
|
+
version = "0.3.0-pre.5"
|
|
2574
2580
|
dependencies = [
|
|
2575
2581
|
"mimalloc",
|
|
2576
2582
|
"turso_ext",
|
|
@@ -2578,7 +2584,7 @@ dependencies = [
|
|
|
2578
2584
|
|
|
2579
2585
|
[[package]]
|
|
2580
2586
|
name = "limbo_ipaddr"
|
|
2581
|
-
version = "0.3.0-pre.
|
|
2587
|
+
version = "0.3.0-pre.5"
|
|
2582
2588
|
dependencies = [
|
|
2583
2589
|
"ipnetwork",
|
|
2584
2590
|
"mimalloc",
|
|
@@ -2587,7 +2593,7 @@ dependencies = [
|
|
|
2587
2593
|
|
|
2588
2594
|
[[package]]
|
|
2589
2595
|
name = "limbo_percentile"
|
|
2590
|
-
version = "0.3.0-pre.
|
|
2596
|
+
version = "0.3.0-pre.5"
|
|
2591
2597
|
dependencies = [
|
|
2592
2598
|
"mimalloc",
|
|
2593
2599
|
"turso_ext",
|
|
@@ -2595,7 +2601,7 @@ dependencies = [
|
|
|
2595
2601
|
|
|
2596
2602
|
[[package]]
|
|
2597
2603
|
name = "limbo_regexp"
|
|
2598
|
-
version = "0.3.0-pre.
|
|
2604
|
+
version = "0.3.0-pre.5"
|
|
2599
2605
|
dependencies = [
|
|
2600
2606
|
"mimalloc",
|
|
2601
2607
|
"regex",
|
|
@@ -2604,7 +2610,7 @@ dependencies = [
|
|
|
2604
2610
|
|
|
2605
2611
|
[[package]]
|
|
2606
2612
|
name = "limbo_sim"
|
|
2607
|
-
version = "0.3.0-pre.
|
|
2613
|
+
version = "0.3.0-pre.5"
|
|
2608
2614
|
dependencies = [
|
|
2609
2615
|
"anyhow",
|
|
2610
2616
|
"bitflags 2.9.4",
|
|
@@ -2640,7 +2646,7 @@ dependencies = [
|
|
|
2640
2646
|
|
|
2641
2647
|
[[package]]
|
|
2642
2648
|
name = "limbo_sqlite_test_ext"
|
|
2643
|
-
version = "0.3.0-pre.
|
|
2649
|
+
version = "0.3.0-pre.5"
|
|
2644
2650
|
dependencies = [
|
|
2645
2651
|
"cc",
|
|
2646
2652
|
]
|
|
@@ -3456,7 +3462,7 @@ dependencies = [
|
|
|
3456
3462
|
|
|
3457
3463
|
[[package]]
|
|
3458
3464
|
name = "py-turso"
|
|
3459
|
-
version = "0.3.0-pre.
|
|
3465
|
+
version = "0.3.0-pre.5"
|
|
3460
3466
|
dependencies = [
|
|
3461
3467
|
"anyhow",
|
|
3462
3468
|
"pyo3",
|
|
@@ -4141,6 +4147,15 @@ dependencies = [
|
|
|
4141
4147
|
"similar",
|
|
4142
4148
|
]
|
|
4143
4149
|
|
|
4150
|
+
[[package]]
|
|
4151
|
+
name = "simsimd"
|
|
4152
|
+
version = "6.5.3"
|
|
4153
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4154
|
+
checksum = "0e3f209c5a8155b8458b1a0d3a6fc9fa09d201e6086fdaae18e9e283b9274f8f"
|
|
4155
|
+
dependencies = [
|
|
4156
|
+
"cc",
|
|
4157
|
+
]
|
|
4158
|
+
|
|
4144
4159
|
[[package]]
|
|
4145
4160
|
name = "slab"
|
|
4146
4161
|
version = "0.4.9"
|
|
@@ -4193,7 +4208,7 @@ checksum = "d372029cb5195f9ab4e4b9aef550787dce78b124fcaee8d82519925defcd6f0d"
|
|
|
4193
4208
|
|
|
4194
4209
|
[[package]]
|
|
4195
4210
|
name = "sql_generation"
|
|
4196
|
-
version = "0.3.0-pre.
|
|
4211
|
+
version = "0.3.0-pre.5"
|
|
4197
4212
|
dependencies = [
|
|
4198
4213
|
"anarchist-readable-name-generator-lib 0.2.0",
|
|
4199
4214
|
"anyhow",
|
|
@@ -4821,8 +4836,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
|
|
4821
4836
|
|
|
4822
4837
|
[[package]]
|
|
4823
4838
|
name = "turso"
|
|
4824
|
-
version = "0.3.0-pre.
|
|
4839
|
+
version = "0.3.0-pre.5"
|
|
4825
4840
|
dependencies = [
|
|
4841
|
+
"mimalloc",
|
|
4826
4842
|
"rand 0.9.2",
|
|
4827
4843
|
"rand_chacha 0.9.0",
|
|
4828
4844
|
"tempfile",
|
|
@@ -4835,7 +4851,7 @@ dependencies = [
|
|
|
4835
4851
|
|
|
4836
4852
|
[[package]]
|
|
4837
4853
|
name = "turso-java"
|
|
4838
|
-
version = "0.3.0-pre.
|
|
4854
|
+
version = "0.3.0-pre.5"
|
|
4839
4855
|
dependencies = [
|
|
4840
4856
|
"jni",
|
|
4841
4857
|
"thiserror 2.0.16",
|
|
@@ -4844,7 +4860,7 @@ dependencies = [
|
|
|
4844
4860
|
|
|
4845
4861
|
[[package]]
|
|
4846
4862
|
name = "turso_cli"
|
|
4847
|
-
version = "0.3.0-pre.
|
|
4863
|
+
version = "0.3.0-pre.5"
|
|
4848
4864
|
dependencies = [
|
|
4849
4865
|
"anyhow",
|
|
4850
4866
|
"cfg-if",
|
|
@@ -4880,12 +4896,13 @@ dependencies = [
|
|
|
4880
4896
|
|
|
4881
4897
|
[[package]]
|
|
4882
4898
|
name = "turso_core"
|
|
4883
|
-
version = "0.3.0-pre.
|
|
4899
|
+
version = "0.3.0-pre.5"
|
|
4884
4900
|
dependencies = [
|
|
4885
4901
|
"aegis",
|
|
4886
4902
|
"aes",
|
|
4887
4903
|
"aes-gcm",
|
|
4888
4904
|
"antithesis_sdk",
|
|
4905
|
+
"arc-swap",
|
|
4889
4906
|
"bitflags 2.9.4",
|
|
4890
4907
|
"built",
|
|
4891
4908
|
"bytemuck",
|
|
@@ -4895,11 +4912,9 @@ dependencies = [
|
|
|
4895
4912
|
"crossbeam-skiplist",
|
|
4896
4913
|
"env_logger 0.11.7",
|
|
4897
4914
|
"fallible-iterator",
|
|
4898
|
-
"getrandom 0.2.15",
|
|
4899
4915
|
"hex",
|
|
4900
4916
|
"intrusive-collections",
|
|
4901
4917
|
"io-uring",
|
|
4902
|
-
"julian_day_converter",
|
|
4903
4918
|
"libc",
|
|
4904
4919
|
"libloading",
|
|
4905
4920
|
"libm",
|
|
@@ -4913,16 +4928,18 @@ dependencies = [
|
|
|
4913
4928
|
"pprof",
|
|
4914
4929
|
"quickcheck",
|
|
4915
4930
|
"quickcheck_macros",
|
|
4916
|
-
"rand 0.
|
|
4931
|
+
"rand 0.9.2",
|
|
4917
4932
|
"rand_chacha 0.9.0",
|
|
4918
4933
|
"regex",
|
|
4919
4934
|
"regex-syntax",
|
|
4920
4935
|
"roaring",
|
|
4921
4936
|
"rstest",
|
|
4922
4937
|
"rusqlite",
|
|
4938
|
+
"rustc-hash",
|
|
4923
4939
|
"rustix 1.0.7",
|
|
4924
4940
|
"ryu",
|
|
4925
4941
|
"serde",
|
|
4942
|
+
"simsimd",
|
|
4926
4943
|
"sorted-vec",
|
|
4927
4944
|
"strum",
|
|
4928
4945
|
"strum_macros",
|
|
@@ -4940,7 +4957,7 @@ dependencies = [
|
|
|
4940
4957
|
|
|
4941
4958
|
[[package]]
|
|
4942
4959
|
name = "turso_dart"
|
|
4943
|
-
version = "0.3.0-pre.
|
|
4960
|
+
version = "0.3.0-pre.5"
|
|
4944
4961
|
dependencies = [
|
|
4945
4962
|
"flutter_rust_bridge",
|
|
4946
4963
|
"turso_core",
|
|
@@ -4948,7 +4965,7 @@ dependencies = [
|
|
|
4948
4965
|
|
|
4949
4966
|
[[package]]
|
|
4950
4967
|
name = "turso_ext"
|
|
4951
|
-
version = "0.3.0-pre.
|
|
4968
|
+
version = "0.3.0-pre.5"
|
|
4952
4969
|
dependencies = [
|
|
4953
4970
|
"chrono",
|
|
4954
4971
|
"getrandom 0.3.2",
|
|
@@ -4957,7 +4974,7 @@ dependencies = [
|
|
|
4957
4974
|
|
|
4958
4975
|
[[package]]
|
|
4959
4976
|
name = "turso_ext_tests"
|
|
4960
|
-
version = "0.3.0-pre.
|
|
4977
|
+
version = "0.3.0-pre.5"
|
|
4961
4978
|
dependencies = [
|
|
4962
4979
|
"env_logger 0.11.7",
|
|
4963
4980
|
"lazy_static",
|
|
@@ -4968,7 +4985,7 @@ dependencies = [
|
|
|
4968
4985
|
|
|
4969
4986
|
[[package]]
|
|
4970
4987
|
name = "turso_macros"
|
|
4971
|
-
version = "0.3.0-pre.
|
|
4988
|
+
version = "0.3.0-pre.5"
|
|
4972
4989
|
dependencies = [
|
|
4973
4990
|
"proc-macro2",
|
|
4974
4991
|
"quote",
|
|
@@ -4977,7 +4994,7 @@ dependencies = [
|
|
|
4977
4994
|
|
|
4978
4995
|
[[package]]
|
|
4979
4996
|
name = "turso_node"
|
|
4980
|
-
version = "0.3.0-pre.
|
|
4997
|
+
version = "0.3.0-pre.5"
|
|
4981
4998
|
dependencies = [
|
|
4982
4999
|
"chrono",
|
|
4983
5000
|
"napi",
|
|
@@ -4990,7 +5007,7 @@ dependencies = [
|
|
|
4990
5007
|
|
|
4991
5008
|
[[package]]
|
|
4992
5009
|
name = "turso_parser"
|
|
4993
|
-
version = "0.3.0-pre.
|
|
5010
|
+
version = "0.3.0-pre.5"
|
|
4994
5011
|
dependencies = [
|
|
4995
5012
|
"bitflags 2.9.4",
|
|
4996
5013
|
"criterion",
|
|
@@ -5006,7 +5023,7 @@ dependencies = [
|
|
|
5006
5023
|
|
|
5007
5024
|
[[package]]
|
|
5008
5025
|
name = "turso_sqlite3"
|
|
5009
|
-
version = "0.3.0-pre.
|
|
5026
|
+
version = "0.3.0-pre.5"
|
|
5010
5027
|
dependencies = [
|
|
5011
5028
|
"env_logger 0.11.7",
|
|
5012
5029
|
"libc",
|
|
@@ -5019,7 +5036,7 @@ dependencies = [
|
|
|
5019
5036
|
|
|
5020
5037
|
[[package]]
|
|
5021
5038
|
name = "turso_stress"
|
|
5022
|
-
version = "0.3.0-pre.
|
|
5039
|
+
version = "0.3.0-pre.5"
|
|
5023
5040
|
dependencies = [
|
|
5024
5041
|
"anarchist-readable-name-generator-lib 0.1.2",
|
|
5025
5042
|
"antithesis_sdk",
|
|
@@ -5036,7 +5053,7 @@ dependencies = [
|
|
|
5036
5053
|
|
|
5037
5054
|
[[package]]
|
|
5038
5055
|
name = "turso_sync_engine"
|
|
5039
|
-
version = "0.3.0-pre.
|
|
5056
|
+
version = "0.3.0-pre.5"
|
|
5040
5057
|
dependencies = [
|
|
5041
5058
|
"base64 0.22.1",
|
|
5042
5059
|
"bytes",
|
|
@@ -5063,7 +5080,7 @@ dependencies = [
|
|
|
5063
5080
|
|
|
5064
5081
|
[[package]]
|
|
5065
5082
|
name = "turso_sync_js"
|
|
5066
|
-
version = "0.3.0-pre.
|
|
5083
|
+
version = "0.3.0-pre.5"
|
|
5067
5084
|
dependencies = [
|
|
5068
5085
|
"genawaiter",
|
|
5069
5086
|
"napi",
|
|
@@ -5078,7 +5095,7 @@ dependencies = [
|
|
|
5078
5095
|
|
|
5079
5096
|
[[package]]
|
|
5080
5097
|
name = "turso_whopper"
|
|
5081
|
-
version = "0.3.0-pre.
|
|
5098
|
+
version = "0.3.0-pre.5"
|
|
5082
5099
|
dependencies = [
|
|
5083
5100
|
"anyhow",
|
|
5084
5101
|
"clap",
|
|
@@ -8,29 +8,29 @@ exclude = [
|
|
|
8
8
|
]
|
|
9
9
|
|
|
10
10
|
[workspace.package]
|
|
11
|
-
version = "0.3.0-pre.
|
|
11
|
+
version = "0.3.0-pre.5"
|
|
12
12
|
authors = ["the Limbo authors"]
|
|
13
13
|
edition = "2021"
|
|
14
14
|
license = "MIT"
|
|
15
15
|
repository = "https://github.com/tursodatabase/turso"
|
|
16
16
|
|
|
17
17
|
[workspace.dependencies]
|
|
18
|
-
turso = { path = "bindings/rust", version = "0.3.0-pre.
|
|
19
|
-
turso_node = { path = "bindings/javascript", version = "0.3.0-pre.
|
|
20
|
-
limbo_completion = { path = "extensions/completion", version = "0.3.0-pre.
|
|
21
|
-
turso_core = { path = "core", version = "0.3.0-pre.
|
|
22
|
-
turso_sync_engine = { path = "sync/engine", version = "0.3.0-pre.
|
|
23
|
-
limbo_crypto = { path = "extensions/crypto", version = "0.3.0-pre.
|
|
24
|
-
limbo_csv = { path = "extensions/csv", version = "0.3.0-pre.
|
|
25
|
-
turso_ext = { path = "extensions/core", version = "0.3.0-pre.
|
|
26
|
-
turso_ext_tests = { path = "extensions/tests", version = "0.3.0-pre.
|
|
27
|
-
limbo_ipaddr = { path = "extensions/ipaddr", version = "0.3.0-pre.
|
|
28
|
-
turso_macros = { path = "macros", version = "0.3.0-pre.
|
|
29
|
-
limbo_percentile = { path = "extensions/percentile", version = "0.3.0-pre.
|
|
30
|
-
limbo_regexp = { path = "extensions/regexp", version = "0.3.0-pre.
|
|
31
|
-
limbo_uuid = { path = "extensions/uuid", version = "0.3.0-pre.
|
|
32
|
-
turso_parser = { path = "parser", version = "0.3.0-pre.
|
|
33
|
-
limbo_fuzzy = { path = "extensions/fuzzy", version = "0.3.0-pre.
|
|
18
|
+
turso = { path = "bindings/rust", version = "0.3.0-pre.5" }
|
|
19
|
+
turso_node = { path = "bindings/javascript", version = "0.3.0-pre.5" }
|
|
20
|
+
limbo_completion = { path = "extensions/completion", version = "0.3.0-pre.5" }
|
|
21
|
+
turso_core = { path = "core", version = "0.3.0-pre.5" }
|
|
22
|
+
turso_sync_engine = { path = "sync/engine", version = "0.3.0-pre.5" }
|
|
23
|
+
limbo_crypto = { path = "extensions/crypto", version = "0.3.0-pre.5" }
|
|
24
|
+
limbo_csv = { path = "extensions/csv", version = "0.3.0-pre.5" }
|
|
25
|
+
turso_ext = { path = "extensions/core", version = "0.3.0-pre.5" }
|
|
26
|
+
turso_ext_tests = { path = "extensions/tests", version = "0.3.0-pre.5" }
|
|
27
|
+
limbo_ipaddr = { path = "extensions/ipaddr", version = "0.3.0-pre.5" }
|
|
28
|
+
turso_macros = { path = "macros", version = "0.3.0-pre.5" }
|
|
29
|
+
limbo_percentile = { path = "extensions/percentile", version = "0.3.0-pre.5" }
|
|
30
|
+
limbo_regexp = { path = "extensions/regexp", version = "0.3.0-pre.5" }
|
|
31
|
+
limbo_uuid = { path = "extensions/uuid", version = "0.3.0-pre.5" }
|
|
32
|
+
turso_parser = { path = "parser", version = "0.3.0-pre.5" }
|
|
33
|
+
limbo_fuzzy = { path = "extensions/fuzzy", version = "0.3.0-pre.5" }
|
|
34
34
|
sql_generation = { path = "sql_generation" }
|
|
35
35
|
strum = { version = "0.26", features = ["derive"] }
|
|
36
36
|
strum_macros = "0.26"
|
|
@@ -59,7 +59,7 @@ fallible-iterator = "0.3.0"
|
|
|
59
59
|
criterion = "0.5"
|
|
60
60
|
chrono = { version = "0.4.42", default-features = false }
|
|
61
61
|
hex = "0.4"
|
|
62
|
-
antithesis_sdk = "0.2"
|
|
62
|
+
antithesis_sdk = { version = "0.2", default-features = false }
|
|
63
63
|
cfg-if = "1.0.0"
|
|
64
64
|
tracing-appender = "0.2.3"
|
|
65
65
|
env_logger = { version = "0.11.6", default-features = false }
|
|
@@ -317,7 +317,7 @@ impl Drop for Connection {
|
|
|
317
317
|
#[allow(clippy::arc_with_non_send_sync)]
|
|
318
318
|
#[pyfunction(signature = (path))]
|
|
319
319
|
pub fn connect(path: &str) -> Result<Connection> {
|
|
320
|
-
match turso_core::Connection::from_uri(path, true, false, false, false, false) {
|
|
320
|
+
match turso_core::Connection::from_uri(path, true, false, false, false, false, false) {
|
|
321
321
|
Ok((io, conn)) => Ok(Connection { conn, _io: io }),
|
|
322
322
|
Err(e) => Err(PyErr::new::<ProgrammingError, _>(format!(
|
|
323
323
|
"Failed to create connection: {e:?}"
|
|
@@ -15,7 +15,7 @@ path = "lib.rs"
|
|
|
15
15
|
|
|
16
16
|
[features]
|
|
17
17
|
default = ["fs", "uuid", "time", "json", "series", "encryption"]
|
|
18
|
-
antithesis = ["dep:antithesis_sdk"]
|
|
18
|
+
antithesis = ["dep:antithesis_sdk", "antithesis_sdk?/full"]
|
|
19
19
|
tracing_release = ["tracing/release_max_level_info"]
|
|
20
20
|
conn_raw_api = []
|
|
21
21
|
fs = ["turso_ext/vfs"]
|
|
@@ -52,14 +52,12 @@ cfg_block = "0.1.1"
|
|
|
52
52
|
fallible-iterator = { workspace = true }
|
|
53
53
|
hex = { workspace = true }
|
|
54
54
|
thiserror = { workspace = true }
|
|
55
|
-
getrandom = { version = "0.2.15" }
|
|
56
55
|
regex = { workspace = true }
|
|
57
56
|
regex-syntax = { workspace = true, default-features = false, features = [
|
|
58
57
|
"unicode",
|
|
59
58
|
] }
|
|
60
59
|
chrono = { workspace = true, default-features = false, features = ["clock"] }
|
|
61
|
-
|
|
62
|
-
rand = "0.8.5"
|
|
60
|
+
rand = { workspace = true }
|
|
63
61
|
libm = "0.2"
|
|
64
62
|
turso_macros = { workspace = true }
|
|
65
63
|
miette = { workspace = true }
|
|
@@ -84,6 +82,9 @@ aegis = "0.9.0"
|
|
|
84
82
|
twox-hash = "2.1.1"
|
|
85
83
|
intrusive-collections = "0.9.7"
|
|
86
84
|
roaring = "0.11.2"
|
|
85
|
+
simsimd = "6.5.3"
|
|
86
|
+
arc-swap = "1.7"
|
|
87
|
+
rustc-hash = "2.0"
|
|
87
88
|
|
|
88
89
|
[build-dependencies]
|
|
89
90
|
chrono = { workspace = true, default-features = false }
|
|
@@ -100,10 +101,9 @@ criterion = { workspace = true, features = [
|
|
|
100
101
|
"async_futures",
|
|
101
102
|
] }
|
|
102
103
|
rstest = "0.18.2"
|
|
103
|
-
rusqlite
|
|
104
|
+
rusqlite = { workspace = true, features = ["series"] }
|
|
104
105
|
quickcheck = { version = "1.0", default-features = false }
|
|
105
106
|
quickcheck_macros = { version = "1.0", default-features = false }
|
|
106
|
-
rand = "0.8.5" # Required for quickcheck
|
|
107
107
|
rand_chacha = { workspace = true }
|
|
108
108
|
env_logger = { workspace = true }
|
|
109
109
|
test-log = { version = "0.2.17", features = ["trace"] }
|
|
@@ -2,6 +2,7 @@ use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criteri
|
|
|
2
2
|
use pprof::criterion::{Output, PProfProfiler};
|
|
3
3
|
use regex::Regex;
|
|
4
4
|
use std::{sync::Arc, time::Instant};
|
|
5
|
+
use tempfile::TempDir;
|
|
5
6
|
use turso_core::{Database, LimboError, PlatformIO, StepResult};
|
|
6
7
|
|
|
7
8
|
#[cfg(not(target_family = "wasm"))]
|
|
@@ -16,6 +17,36 @@ fn rusqlite_open() -> rusqlite::Connection {
|
|
|
16
17
|
sqlite_conn
|
|
17
18
|
}
|
|
18
19
|
|
|
20
|
+
fn setup_rusqlite(temp_dir: &TempDir, query: &str) -> rusqlite::Connection {
|
|
21
|
+
let db_path = temp_dir.path().join("bench.db");
|
|
22
|
+
let sqlite_conn = rusqlite::Connection::open(db_path).unwrap();
|
|
23
|
+
sqlite_conn
|
|
24
|
+
.pragma_update(None, "synchronous", "FULL")
|
|
25
|
+
.unwrap();
|
|
26
|
+
sqlite_conn
|
|
27
|
+
.pragma_update(None, "journal_mode", "WAL")
|
|
28
|
+
.unwrap();
|
|
29
|
+
sqlite_conn
|
|
30
|
+
.pragma_update(None, "locking_mode", "EXCLUSIVE")
|
|
31
|
+
.unwrap();
|
|
32
|
+
let journal_mode = sqlite_conn
|
|
33
|
+
.pragma_query_value(None, "journal_mode", |row| row.get::<_, String>(0))
|
|
34
|
+
.unwrap();
|
|
35
|
+
assert_eq!(journal_mode.to_lowercase(), "wal");
|
|
36
|
+
let synchronous = sqlite_conn
|
|
37
|
+
.pragma_query_value(None, "synchronous", |row| row.get::<_, usize>(0))
|
|
38
|
+
.unwrap();
|
|
39
|
+
const FULL: usize = 2;
|
|
40
|
+
assert_eq!(synchronous, FULL);
|
|
41
|
+
|
|
42
|
+
// load the generate_series extension
|
|
43
|
+
rusqlite::vtab::series::load_module(&sqlite_conn).unwrap();
|
|
44
|
+
|
|
45
|
+
// Create test table
|
|
46
|
+
sqlite_conn.execute(query, []).unwrap();
|
|
47
|
+
sqlite_conn
|
|
48
|
+
}
|
|
49
|
+
|
|
19
50
|
fn bench_open(criterion: &mut Criterion) {
|
|
20
51
|
// https://github.com/tursodatabase/turso/issues/174
|
|
21
52
|
// The rusqlite benchmark crashes on Mac M1 when using the flamegraph features
|
|
@@ -896,9 +927,90 @@ fn bench_concurrent_writes(criterion: &mut Criterion) {
|
|
|
896
927
|
});
|
|
897
928
|
}
|
|
898
929
|
|
|
930
|
+
fn bench_insert_randomblob(criterion: &mut Criterion) {
|
|
931
|
+
// The rusqlite benchmark crashes on Mac M1 when using the flamegraph features
|
|
932
|
+
let enable_rusqlite = std::env::var("DISABLE_RUSQLITE_BENCHMARK").is_err();
|
|
933
|
+
|
|
934
|
+
let mut group = criterion.benchmark_group("Insert rows in batches");
|
|
935
|
+
|
|
936
|
+
// Test different batch sizes
|
|
937
|
+
for batch_size in [1, 10, 100] {
|
|
938
|
+
let temp_dir = tempfile::tempdir().unwrap();
|
|
939
|
+
let db_path = temp_dir.path().join("bench.db");
|
|
940
|
+
|
|
941
|
+
#[allow(clippy::arc_with_non_send_sync)]
|
|
942
|
+
let io = Arc::new(PlatformIO::new().unwrap());
|
|
943
|
+
let db = Database::open_file(io.clone(), db_path.to_str().unwrap(), false, false).unwrap();
|
|
944
|
+
let limbo_conn = db.connect().unwrap();
|
|
945
|
+
|
|
946
|
+
let mut stmt = limbo_conn.query("CREATE TABLE test(x)").unwrap().unwrap();
|
|
947
|
+
|
|
948
|
+
loop {
|
|
949
|
+
match stmt.step().unwrap() {
|
|
950
|
+
turso_core::StepResult::IO => {
|
|
951
|
+
stmt.run_once().unwrap();
|
|
952
|
+
}
|
|
953
|
+
turso_core::StepResult::Done => {
|
|
954
|
+
break;
|
|
955
|
+
}
|
|
956
|
+
turso_core::StepResult::Row => {
|
|
957
|
+
unreachable!();
|
|
958
|
+
}
|
|
959
|
+
turso_core::StepResult::Interrupt | turso_core::StepResult::Busy => {
|
|
960
|
+
unreachable!();
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
let random_blob = format!(
|
|
966
|
+
"INSERT INTO test select randomblob(1024 * 100) from generate_series(1, {batch_size});"
|
|
967
|
+
);
|
|
968
|
+
|
|
969
|
+
group.bench_function(format!("limbo_insert_{batch_size}_randomblob"), |b| {
|
|
970
|
+
let mut stmt = limbo_conn.prepare(&random_blob).unwrap();
|
|
971
|
+
b.iter(|| {
|
|
972
|
+
loop {
|
|
973
|
+
match stmt.step().unwrap() {
|
|
974
|
+
turso_core::StepResult::IO => {
|
|
975
|
+
stmt.run_once().unwrap();
|
|
976
|
+
}
|
|
977
|
+
turso_core::StepResult::Done => {
|
|
978
|
+
break;
|
|
979
|
+
}
|
|
980
|
+
turso_core::StepResult::Row => {
|
|
981
|
+
unreachable!();
|
|
982
|
+
}
|
|
983
|
+
turso_core::StepResult::Interrupt | turso_core::StepResult::Busy => {
|
|
984
|
+
unreachable!();
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
stmt.reset();
|
|
989
|
+
});
|
|
990
|
+
});
|
|
991
|
+
|
|
992
|
+
if enable_rusqlite {
|
|
993
|
+
let temp_dir = tempfile::tempdir().unwrap();
|
|
994
|
+
let sqlite_conn = setup_rusqlite(&temp_dir, "CREATE TABLE test(x)");
|
|
995
|
+
|
|
996
|
+
group.bench_function(format!("sqlite_insert_{batch_size}_randomblob"), |b| {
|
|
997
|
+
let mut stmt = sqlite_conn.prepare(&random_blob).unwrap();
|
|
998
|
+
b.iter(|| {
|
|
999
|
+
let mut rows = stmt.raw_query();
|
|
1000
|
+
while let Some(row) = rows.next().unwrap() {
|
|
1001
|
+
black_box(row);
|
|
1002
|
+
}
|
|
1003
|
+
});
|
|
1004
|
+
});
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
group.finish();
|
|
1009
|
+
}
|
|
1010
|
+
|
|
899
1011
|
criterion_group! {
|
|
900
1012
|
name = benches;
|
|
901
1013
|
config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
|
|
902
|
-
targets = bench_open, bench_alter, bench_prepare_query, bench_execute_select_1, bench_execute_select_rows, bench_execute_select_count, bench_insert_rows, bench_concurrent_writes
|
|
1014
|
+
targets = bench_open, bench_alter, bench_prepare_query, bench_execute_select_1, bench_execute_select_rows, bench_execute_select_count, bench_insert_rows, bench_concurrent_writes, bench_insert_randomblob
|
|
903
1015
|
}
|
|
904
1016
|
criterion_main!(benches);
|
|
@@ -163,6 +163,7 @@ impl From<turso_ext::ResultCode> for LimboError {
|
|
|
163
163
|
|
|
164
164
|
pub const SQLITE_CONSTRAINT: usize = 19;
|
|
165
165
|
pub const SQLITE_CONSTRAINT_PRIMARYKEY: usize = SQLITE_CONSTRAINT | (6 << 8);
|
|
166
|
+
#[allow(dead_code)]
|
|
166
167
|
pub const SQLITE_CONSTRAINT_FOREIGNKEY: usize = SQLITE_CONSTRAINT | (7 << 8);
|
|
167
168
|
pub const SQLITE_CONSTRAINT_NOTNULL: usize = SQLITE_CONSTRAINT | (5 << 8);
|
|
168
169
|
pub const SQLITE_FULL: usize = 13; // we want this in autoincrement - incase if user inserts max allowed int
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
#[cfg(feature = "fs")]
|
|
2
2
|
mod dynamic;
|
|
3
3
|
mod vtab_xconnect;
|
|
4
|
+
use crate::index_method::backing_btree::BackingBtreeIndexMethod;
|
|
5
|
+
use crate::index_method::toy_vector_sparse_ivf::VectorSparseInvertedIndexMethod;
|
|
6
|
+
use crate::index_method::{
|
|
7
|
+
BACKING_BTREE_INDEX_METHOD_NAME, TOY_VECTOR_SPARSE_IVF_INDEX_METHOD_NAME,
|
|
8
|
+
};
|
|
4
9
|
use crate::schema::{Schema, Table};
|
|
5
10
|
#[cfg(all(target_os = "linux", feature = "io_uring", not(miri)))]
|
|
6
11
|
use crate::UringIO;
|
|
@@ -162,6 +167,17 @@ impl Database {
|
|
|
162
167
|
/// Register any built-in extensions that can be stored on the Database so we do not have
|
|
163
168
|
/// to register these once-per-connection, and the connection can just extend its symbol table
|
|
164
169
|
pub fn register_global_builtin_extensions(&self) -> Result<(), String> {
|
|
170
|
+
{
|
|
171
|
+
let mut syms = self.builtin_syms.write();
|
|
172
|
+
syms.index_methods.insert(
|
|
173
|
+
TOY_VECTOR_SPARSE_IVF_INDEX_METHOD_NAME.to_string(),
|
|
174
|
+
Arc::new(VectorSparseInvertedIndexMethod),
|
|
175
|
+
);
|
|
176
|
+
syms.index_methods.insert(
|
|
177
|
+
BACKING_BTREE_INDEX_METHOD_NAME.to_string(),
|
|
178
|
+
Arc::new(BackingBtreeIndexMethod),
|
|
179
|
+
);
|
|
180
|
+
}
|
|
165
181
|
let syms = self.builtin_syms.data_ptr();
|
|
166
182
|
// Pass the mutex pointer and the appropriate handler
|
|
167
183
|
let schema_mutex_ptr = &self.schema as *const Mutex<Arc<Schema>> as *mut Mutex<Arc<Schema>>;
|