lora-python 0.10.1__tar.gz → 0.11.0__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.
- {lora_python-0.10.1 → lora_python-0.11.0}/Cargo.lock +17 -17
- {lora_python-0.10.1 → lora_python-0.11.0}/Cargo.toml +11 -11
- {lora_python-0.10.1 → lora_python-0.11.0}/PKG-INFO +1 -1
- lora_python-0.11.0/crates/lora-database/tests/docs_examples.rs +65 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/lock.rs +85 -30
- {lora_python-0.10.1 → lora_python-0.11.0}/pyproject.toml +1 -1
- {lora_python-0.10.1 → lora_python-0.11.0}/LICENSE +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/README.md +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/.gitignore +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/LICENSE +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/README.md +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/build.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/examples/async_demo.py +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/examples/basic.py +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/src/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/src/from_python.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/src/to_python.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/tests/test_async.py +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/tests/test_explain_profile.py +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/tests/test_sync.py +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/analyzer/builtin_signatures.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/analyzer/clauses.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/analyzer/expressions.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/analyzer/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/analyzer/patterns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/analyzer/state.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/analyzer/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/resolved.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/scope.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/symbols.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/tests/error_messages.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-ast/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-ast/src/ast.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-ast/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-compiler/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-compiler/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-compiler/src/logical.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-compiler/src/optimizer.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-compiler/src/pattern.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-compiler/src/physical.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-compiler/src/plan_tree.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-compiler/src/planner.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/README.md +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/advanced.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/concurrency_guard.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/concurrent.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/engine.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/fixtures.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/index_acceleration.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/perf_smoke.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/perf_smoke_baseline.json +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/query_implementations.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/realistic.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/scale.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/temporal_spatial.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/wal.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/builder.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/compile.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/execute.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/explain.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/graph_api.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/occ.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/procedures.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/profile.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/pull_mode.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/replay.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/row_projection.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/schema.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/show_pipeline.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/stream.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/write_guard.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/durable_io.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/error.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/explain.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/live_store.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/named.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/plan_cache.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/snapshot/json.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/snapshot/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/snapshot/store.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/stream.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/transaction.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/admin.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/archive/format.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/archive/lock.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/archive/platform.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/archive/worker.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/archive/workspace.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/archive.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/wal/write_scope.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/advanced_queries.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/aggregation.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/backend_stub.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/binary.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/builtin_namespaces.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/constraints.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/create.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/error_messages.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/explain_profile.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/expressions.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/fulltext_index.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/functions_extended.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/index_acceleration.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/invariants.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/managed_snapshots.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/match.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/merge.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/ordering.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/parameters.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/parser.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/paths.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/projection.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/scale.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/schema.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/seeds.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/snapshot.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/spatial.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/temporal.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/test_helpers.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/transactions.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/types_advanced.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/union.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/update.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/vector_index.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/vectors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/wal.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/where_clause.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/tests/with.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/binops.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/bits_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/bytes_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/cast_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/crypto.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/edge.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/geo.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/json_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/list.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/map_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/math_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/node.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/number.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/path.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/string_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/temporal.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/text.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/type_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/uuid_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/value.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/builtins/vector_ns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/expr.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/functions.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/point.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/regex.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/eval/vector.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/executor/aggregation.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/executor/helpers.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/executor/immutable.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/executor/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/executor/mutable.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/executor/optional.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/executor/sort.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/profile.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/aggregate.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/call_subquery.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/columns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/context.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/expand.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/filter.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/hydration.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/mutable.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/optional.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/path.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/projection.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/scan.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/shape.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/sort.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/source.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/traits.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/pull/union.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/src/value.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-executor/tests/error_messages.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/cypher.pest +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/clauses.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/expressions.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/literals.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/patterns.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/query.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/schema.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/src/parser/util.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-parser/tests/error_messages.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/body.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/codec.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/columnar.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/envelope.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/format.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/options.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/transform.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/src/view.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-snapshot/tests/error_messages.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/codec.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/lock_table.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/constraint_catalog.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/constraint_enforce.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/entity_index_store.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/fulltext_index.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/graph.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/impls.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/index_catalog.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/point_index.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/property_index.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/secondary_index_maintenance.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/snapshot.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/sorted_property_index.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/stats.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/memory/text_index.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/mutation.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/snapshot.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/traits.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/binary/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/binary/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/binary/traits.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/binary/types.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/graph.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/property_value.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/spatial/distance.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/spatial/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/spatial/point.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/spatial/srid.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/spatial/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/temporal/calendar.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/temporal/date.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/temporal/datetime.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/temporal/duration.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/temporal/format.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/temporal/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/temporal/parsing.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/temporal/time.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/vector/build.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/vector/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/vector/similarity.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/vector/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/src/types/vector/types.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-store/tests/error_messages.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/Cargo.toml +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/codec/decode.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/codec/encode.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/codec/format.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/codec/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/codec/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/config.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/dir.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/io.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/lib.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/lsn.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/record.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/recorder/errors.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/recorder/mirror.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/recorder/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/recorder/recorder.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/recorder/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/replay.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/segment.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/testing.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/wal/group_flusher.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/wal/mod.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/wal/tests.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/src/wal/wal.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-wal/tests/error_messages.rs +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/python/lora_python/__init__.py +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/python/lora_python/_async.py +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/python/lora_python/_native.pyi +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/python/lora_python/py.typed +0 -0
- {lora_python-0.10.1 → lora_python-0.11.0}/python/lora_python/types.py +0 -0
|
@@ -773,7 +773,7 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
|
|
|
773
773
|
|
|
774
774
|
[[package]]
|
|
775
775
|
name = "lora-analyzer"
|
|
776
|
-
version = "0.
|
|
776
|
+
version = "0.11.0"
|
|
777
777
|
dependencies = [
|
|
778
778
|
"lora-ast",
|
|
779
779
|
"lora-parser",
|
|
@@ -783,14 +783,14 @@ dependencies = [
|
|
|
783
783
|
|
|
784
784
|
[[package]]
|
|
785
785
|
name = "lora-ast"
|
|
786
|
-
version = "0.
|
|
786
|
+
version = "0.11.0"
|
|
787
787
|
dependencies = [
|
|
788
788
|
"smallvec 2.0.0-alpha.12",
|
|
789
789
|
]
|
|
790
790
|
|
|
791
791
|
[[package]]
|
|
792
792
|
name = "lora-binding-buffer"
|
|
793
|
-
version = "0.
|
|
793
|
+
version = "0.11.0"
|
|
794
794
|
dependencies = [
|
|
795
795
|
"lora-database",
|
|
796
796
|
"lora-store",
|
|
@@ -798,7 +798,7 @@ dependencies = [
|
|
|
798
798
|
|
|
799
799
|
[[package]]
|
|
800
800
|
name = "lora-compiler"
|
|
801
|
-
version = "0.
|
|
801
|
+
version = "0.11.0"
|
|
802
802
|
dependencies = [
|
|
803
803
|
"lora-analyzer",
|
|
804
804
|
"lora-ast",
|
|
@@ -807,7 +807,7 @@ dependencies = [
|
|
|
807
807
|
|
|
808
808
|
[[package]]
|
|
809
809
|
name = "lora-database"
|
|
810
|
-
version = "0.
|
|
810
|
+
version = "0.11.0"
|
|
811
811
|
dependencies = [
|
|
812
812
|
"anyhow",
|
|
813
813
|
"chacha20poly1305",
|
|
@@ -830,7 +830,7 @@ dependencies = [
|
|
|
830
830
|
|
|
831
831
|
[[package]]
|
|
832
832
|
name = "lora-executor"
|
|
833
|
-
version = "0.
|
|
833
|
+
version = "0.11.0"
|
|
834
834
|
dependencies = [
|
|
835
835
|
"blake3",
|
|
836
836
|
"crc32fast",
|
|
@@ -852,7 +852,7 @@ dependencies = [
|
|
|
852
852
|
|
|
853
853
|
[[package]]
|
|
854
854
|
name = "lora-ffi"
|
|
855
|
-
version = "0.
|
|
855
|
+
version = "0.11.0"
|
|
856
856
|
dependencies = [
|
|
857
857
|
"anyhow",
|
|
858
858
|
"lora-binding-buffer",
|
|
@@ -864,7 +864,7 @@ dependencies = [
|
|
|
864
864
|
|
|
865
865
|
[[package]]
|
|
866
866
|
name = "lora-node"
|
|
867
|
-
version = "0.
|
|
867
|
+
version = "0.11.0"
|
|
868
868
|
dependencies = [
|
|
869
869
|
"anyhow",
|
|
870
870
|
"lora-binding-buffer",
|
|
@@ -879,7 +879,7 @@ dependencies = [
|
|
|
879
879
|
|
|
880
880
|
[[package]]
|
|
881
881
|
name = "lora-parser"
|
|
882
|
-
version = "0.
|
|
882
|
+
version = "0.11.0"
|
|
883
883
|
dependencies = [
|
|
884
884
|
"lora-ast",
|
|
885
885
|
"pest",
|
|
@@ -890,7 +890,7 @@ dependencies = [
|
|
|
890
890
|
|
|
891
891
|
[[package]]
|
|
892
892
|
name = "lora-python"
|
|
893
|
-
version = "0.
|
|
893
|
+
version = "0.11.0"
|
|
894
894
|
dependencies = [
|
|
895
895
|
"anyhow",
|
|
896
896
|
"lora-database",
|
|
@@ -902,7 +902,7 @@ dependencies = [
|
|
|
902
902
|
|
|
903
903
|
[[package]]
|
|
904
904
|
name = "lora-query-wasm"
|
|
905
|
-
version = "0.
|
|
905
|
+
version = "0.11.0"
|
|
906
906
|
dependencies = [
|
|
907
907
|
"console_error_panic_hook",
|
|
908
908
|
"js-sys",
|
|
@@ -915,7 +915,7 @@ dependencies = [
|
|
|
915
915
|
|
|
916
916
|
[[package]]
|
|
917
917
|
name = "lora-server"
|
|
918
|
-
version = "0.
|
|
918
|
+
version = "0.11.0"
|
|
919
919
|
dependencies = [
|
|
920
920
|
"anyhow",
|
|
921
921
|
"axum",
|
|
@@ -929,7 +929,7 @@ dependencies = [
|
|
|
929
929
|
|
|
930
930
|
[[package]]
|
|
931
931
|
name = "lora-snapshot"
|
|
932
|
-
version = "0.
|
|
932
|
+
version = "0.11.0"
|
|
933
933
|
dependencies = [
|
|
934
934
|
"argon2",
|
|
935
935
|
"blake3",
|
|
@@ -943,7 +943,7 @@ dependencies = [
|
|
|
943
943
|
|
|
944
944
|
[[package]]
|
|
945
945
|
name = "lora-store"
|
|
946
|
-
version = "0.
|
|
946
|
+
version = "0.11.0"
|
|
947
947
|
dependencies = [
|
|
948
948
|
"crc32fast",
|
|
949
949
|
"js-sys",
|
|
@@ -954,7 +954,7 @@ dependencies = [
|
|
|
954
954
|
|
|
955
955
|
[[package]]
|
|
956
956
|
name = "lora-wal"
|
|
957
|
-
version = "0.
|
|
957
|
+
version = "0.11.0"
|
|
958
958
|
dependencies = [
|
|
959
959
|
"crc32fast",
|
|
960
960
|
"lora-store",
|
|
@@ -964,7 +964,7 @@ dependencies = [
|
|
|
964
964
|
|
|
965
965
|
[[package]]
|
|
966
966
|
name = "lora-wasm"
|
|
967
|
-
version = "0.
|
|
967
|
+
version = "0.11.0"
|
|
968
968
|
dependencies = [
|
|
969
969
|
"anyhow",
|
|
970
970
|
"console_error_panic_hook",
|
|
@@ -980,7 +980,7 @@ dependencies = [
|
|
|
980
980
|
|
|
981
981
|
[[package]]
|
|
982
982
|
name = "lora_ruby"
|
|
983
|
-
version = "0.
|
|
983
|
+
version = "0.11.0"
|
|
984
984
|
dependencies = [
|
|
985
985
|
"anyhow",
|
|
986
986
|
"lora-database",
|
|
@@ -4,7 +4,7 @@ resolver = "2"
|
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
6
|
edition = "2021"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.11.0"
|
|
8
8
|
license = "BUSL-1.1"
|
|
9
9
|
authors = ["LoraDB, Inc."]
|
|
10
10
|
repository = "https://github.com/lora-db/lora"
|
|
@@ -15,16 +15,16 @@ rust-version = "1.87"
|
|
|
15
15
|
# Internal crates — versions are kept in lockstep with [workspace.package].version
|
|
16
16
|
# by `scripts/sync-versions.mjs`. Both `path` and `version` are set so that
|
|
17
17
|
# `cargo publish` works (crates.io cannot resolve path-only deps).
|
|
18
|
-
lora-ast = { path = "crates/lora-ast", version = "=0.
|
|
19
|
-
lora-parser = { path = "crates/lora-parser", version = "=0.
|
|
20
|
-
lora-analyzer = { path = "crates/lora-analyzer", version = "=0.
|
|
21
|
-
lora-compiler = { path = "crates/lora-compiler", version = "=0.
|
|
22
|
-
lora-store = { path = "crates/lora-store", version = "=0.
|
|
23
|
-
lora-snapshot = { path = "crates/lora-snapshot", version = "=0.
|
|
24
|
-
lora-wal = { path = "crates/lora-wal", version = "=0.
|
|
25
|
-
lora-executor = { path = "crates/lora-executor", version = "=0.
|
|
26
|
-
lora-database = { path = "crates/lora-database", version = "=0.
|
|
27
|
-
lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.
|
|
18
|
+
lora-ast = { path = "crates/lora-ast", version = "=0.11.0" }
|
|
19
|
+
lora-parser = { path = "crates/lora-parser", version = "=0.11.0" }
|
|
20
|
+
lora-analyzer = { path = "crates/lora-analyzer", version = "=0.11.0" }
|
|
21
|
+
lora-compiler = { path = "crates/lora-compiler", version = "=0.11.0" }
|
|
22
|
+
lora-store = { path = "crates/lora-store", version = "=0.11.0" }
|
|
23
|
+
lora-snapshot = { path = "crates/lora-snapshot", version = "=0.11.0", default-features = false }
|
|
24
|
+
lora-wal = { path = "crates/lora-wal", version = "=0.11.0" }
|
|
25
|
+
lora-executor = { path = "crates/lora-executor", version = "=0.11.0", default-features = false }
|
|
26
|
+
lora-database = { path = "crates/lora-database", version = "=0.11.0" }
|
|
27
|
+
lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.11.0" }
|
|
28
28
|
|
|
29
29
|
# External crates.
|
|
30
30
|
anyhow = "1"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
use std::path::Path;
|
|
2
|
+
|
|
3
|
+
use lora_database::{Database, ExecuteOptions, InMemoryGraph, ResultFormat};
|
|
4
|
+
|
|
5
|
+
fn extract_query_examples(markdown: &str) -> Vec<String> {
|
|
6
|
+
let mut examples = Vec::new();
|
|
7
|
+
let mut rest = markdown;
|
|
8
|
+
let marker = "<QueryCodeBlock code={String.raw`";
|
|
9
|
+
|
|
10
|
+
while let Some(start) = rest.find(marker) {
|
|
11
|
+
let body_start = start + marker.len();
|
|
12
|
+
let body = &rest[body_start..];
|
|
13
|
+
let Some(end) = body.find("`} />") else {
|
|
14
|
+
panic!("unterminated QueryCodeBlock in examples documentation");
|
|
15
|
+
};
|
|
16
|
+
examples.push(body[..end].to_string());
|
|
17
|
+
rest = &body[end + "`} />".len()..];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
examples
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
fn execute(db: &Database<InMemoryGraph>, query: &str) {
|
|
24
|
+
db.execute(
|
|
25
|
+
query,
|
|
26
|
+
Some(ExecuteOptions {
|
|
27
|
+
format: ResultFormat::Rows,
|
|
28
|
+
}),
|
|
29
|
+
)
|
|
30
|
+
.unwrap_or_else(|err| panic!("documentation query failed:\n{query}\n\nerror: {err}"));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
#[test]
|
|
34
|
+
fn query_examples_run_against_documented_seed_graph() {
|
|
35
|
+
let docs_path = Path::new(env!("CARGO_MANIFEST_DIR"))
|
|
36
|
+
.join("../../apps/loradb.com/docs/queries/examples.md");
|
|
37
|
+
let markdown = std::fs::read_to_string(&docs_path).unwrap_or_else(|err| {
|
|
38
|
+
panic!("failed to read {}: {err}", docs_path.display());
|
|
39
|
+
});
|
|
40
|
+
let examples = extract_query_examples(&markdown);
|
|
41
|
+
|
|
42
|
+
assert!(
|
|
43
|
+
examples.len() > 20,
|
|
44
|
+
"expected the examples page to contain runnable QueryCodeBlock snippets"
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
let seed = &examples[0];
|
|
48
|
+
execute(&Database::in_memory(), seed);
|
|
49
|
+
|
|
50
|
+
for (index, query) in examples.iter().enumerate().skip(1) {
|
|
51
|
+
let db = Database::in_memory();
|
|
52
|
+
execute(&db, seed);
|
|
53
|
+
db.execute(
|
|
54
|
+
query,
|
|
55
|
+
Some(ExecuteOptions {
|
|
56
|
+
format: ResultFormat::Rows,
|
|
57
|
+
}),
|
|
58
|
+
)
|
|
59
|
+
.unwrap_or_else(|err| {
|
|
60
|
+
panic!(
|
|
61
|
+
"documentation query #{index} failed against the seed graph:\n{query}\n\nerror: {err}"
|
|
62
|
+
)
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -7,11 +7,21 @@
|
|
|
7
7
|
use std::fs::{File, OpenOptions};
|
|
8
8
|
use std::io;
|
|
9
9
|
use std::path::Path;
|
|
10
|
+
use std::time::{Duration, Instant};
|
|
10
11
|
|
|
11
12
|
use crate::errors::WalError;
|
|
12
13
|
|
|
13
14
|
const LOCK_FILE_NAME: &str = ".lora-wal.lock";
|
|
14
15
|
|
|
16
|
+
/// Brief window for swallowing transient `EWOULDBLOCK` between a clean
|
|
17
|
+
/// drop and a subsequent re-open of the same directory. Under load on
|
|
18
|
+
/// Linux we have observed the close+flock-release of the previous
|
|
19
|
+
/// owner racing with a new `flock()` attempt; a few short retries
|
|
20
|
+
/// absorb that without weakening the invariant — a real concurrent
|
|
21
|
+
/// owner still surfaces as `AlreadyOpen` after the window elapses.
|
|
22
|
+
const ACQUIRE_RETRY_BUDGET: Duration = Duration::from_millis(100);
|
|
23
|
+
const ACQUIRE_RETRY_INITIAL_BACKOFF: Duration = Duration::from_micros(100);
|
|
24
|
+
|
|
15
25
|
/// RAII guard for a WAL directory lock.
|
|
16
26
|
pub(crate) struct DirLock {
|
|
17
27
|
_file: File,
|
|
@@ -31,14 +41,8 @@ impl DirLock {
|
|
|
31
41
|
.create(true)
|
|
32
42
|
.truncate(false)
|
|
33
43
|
.open(&lock_path)?;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
WalError::AlreadyOpen {
|
|
37
|
-
dir: dir.to_path_buf(),
|
|
38
|
-
}
|
|
39
|
-
} else {
|
|
40
|
-
WalError::Io(err)
|
|
41
|
-
}
|
|
44
|
+
retry_on_contention(dir, || {
|
|
45
|
+
lock_exclusive_nonblocking(&file).map_err(classify_unix_lock_err)
|
|
42
46
|
})?;
|
|
43
47
|
Ok(Self { _file: file })
|
|
44
48
|
}
|
|
@@ -51,14 +55,8 @@ impl DirLock {
|
|
|
51
55
|
.create(true)
|
|
52
56
|
.truncate(false)
|
|
53
57
|
.open(&lock_path)?;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
WalError::AlreadyOpen {
|
|
57
|
-
dir: dir.to_path_buf(),
|
|
58
|
-
}
|
|
59
|
-
} else {
|
|
60
|
-
WalError::Io(err)
|
|
61
|
-
}
|
|
58
|
+
retry_on_contention(dir, || {
|
|
59
|
+
lock_exclusive_nonblocking(&file).map_err(classify_windows_lock_err)
|
|
62
60
|
})?;
|
|
63
61
|
Ok(Self { _file: file })
|
|
64
62
|
}
|
|
@@ -70,22 +68,79 @@ impl DirLock {
|
|
|
70
68
|
// LoraDB handles from opening the same WAL concurrently, although
|
|
71
69
|
// a process crash can leave a stale lock file that operators must
|
|
72
70
|
// remove manually.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
dir: dir.to_path_buf(),
|
|
71
|
+
let file = retry_on_contention(dir, || {
|
|
72
|
+
OpenOptions::new()
|
|
73
|
+
.read(true)
|
|
74
|
+
.write(true)
|
|
75
|
+
.create_new(true)
|
|
76
|
+
.open(&lock_path)
|
|
77
|
+
.map_err(|err| {
|
|
78
|
+
if err.kind() == io::ErrorKind::AlreadyExists {
|
|
79
|
+
LockAttemptError::Contended
|
|
80
|
+
} else {
|
|
81
|
+
LockAttemptError::Io(err)
|
|
82
|
+
}
|
|
86
83
|
})
|
|
84
|
+
})?;
|
|
85
|
+
Ok(Self {
|
|
86
|
+
_file: file,
|
|
87
|
+
path: lock_path,
|
|
88
|
+
})
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/// Result of a single platform-specific lock attempt, classified so the
|
|
94
|
+
/// retry helper can distinguish "another live owner" (try again, briefly)
|
|
95
|
+
/// from real I/O errors (fail immediately).
|
|
96
|
+
enum LockAttemptError {
|
|
97
|
+
Contended,
|
|
98
|
+
Io(io::Error),
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
#[cfg(unix)]
|
|
102
|
+
fn classify_unix_lock_err(err: io::Error) -> LockAttemptError {
|
|
103
|
+
if err.kind() == io::ErrorKind::WouldBlock {
|
|
104
|
+
LockAttemptError::Contended
|
|
105
|
+
} else {
|
|
106
|
+
LockAttemptError::Io(err)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
#[cfg(windows)]
|
|
111
|
+
fn classify_windows_lock_err(err: io::Error) -> LockAttemptError {
|
|
112
|
+
if is_windows_lock_conflict(&err) {
|
|
113
|
+
LockAttemptError::Contended
|
|
114
|
+
} else {
|
|
115
|
+
LockAttemptError::Io(err)
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/// Run `attempt` repeatedly until it succeeds, returns a non-contention
|
|
120
|
+
/// I/O error, or the retry budget is exhausted. Contention is the
|
|
121
|
+
/// expected signal "another live owner" — under load on Linux we have
|
|
122
|
+
/// observed the close+flock-release of a previous owner racing with a
|
|
123
|
+
/// new `flock()` attempt; a short retry window absorbs that without
|
|
124
|
+
/// weakening the invariant. A real concurrent owner persists past the
|
|
125
|
+
/// window and surfaces as `AlreadyOpen` to the caller.
|
|
126
|
+
fn retry_on_contention<T, F>(dir: &Path, mut attempt: F) -> Result<T, WalError>
|
|
127
|
+
where
|
|
128
|
+
F: FnMut() -> Result<T, LockAttemptError>,
|
|
129
|
+
{
|
|
130
|
+
let start = Instant::now();
|
|
131
|
+
let mut backoff = ACQUIRE_RETRY_INITIAL_BACKOFF;
|
|
132
|
+
loop {
|
|
133
|
+
match attempt() {
|
|
134
|
+
Ok(value) => return Ok(value),
|
|
135
|
+
Err(LockAttemptError::Io(err)) => return Err(WalError::Io(err)),
|
|
136
|
+
Err(LockAttemptError::Contended) => {
|
|
137
|
+
if start.elapsed() >= ACQUIRE_RETRY_BUDGET {
|
|
138
|
+
return Err(WalError::AlreadyOpen {
|
|
139
|
+
dir: dir.to_path_buf(),
|
|
140
|
+
});
|
|
87
141
|
}
|
|
88
|
-
|
|
142
|
+
std::thread::sleep(backoff);
|
|
143
|
+
backoff = (backoff * 2).min(Duration::from_millis(5));
|
|
89
144
|
}
|
|
90
145
|
}
|
|
91
146
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/examples/async_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lora_python-0.10.1 → lora_python-0.11.0}/crates/bindings/lora-python/tests/test_explain_profile.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-analyzer/src/analyzer/builtin_signatures.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/index_acceleration.rs
RENAMED
|
File without changes
|
|
File without changes
|
{lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/perf_smoke_baseline.json
RENAMED
|
File without changes
|
{lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/benches/query_implementations.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/row_projection.rs
RENAMED
|
File without changes
|
|
File without changes
|
{lora_python-0.10.1 → lora_python-0.11.0}/crates/lora-database/src/database/show_pipeline.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|