lora-python 0.20.0__tar.gz → 0.20.1__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.
Files changed (394) hide show
  1. {lora_python-0.20.0 → lora_python-0.20.1}/Cargo.lock +19 -19
  2. {lora_python-0.20.0 → lora_python-0.20.1}/Cargo.toml +13 -13
  3. {lora_python-0.20.0 → lora_python-0.20.1}/PKG-INFO +1 -1
  4. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/README.md +1 -0
  5. lora_python-0.20.1/crates/lora-database/examples/carried_probe.rs +51 -0
  6. lora_python-0.20.1/crates/lora-database/tests/carried_value_sharing.rs +163 -0
  7. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/expr.rs +21 -8
  8. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/executor/helpers.rs +39 -6
  9. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/executor/immutable.rs +5 -8
  10. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/executor/mod.rs +1 -0
  11. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/executor/mutable.rs +1 -1
  12. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/executor/optional.rs +3 -1
  13. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/hydration.rs +2 -2
  14. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/projection.rs +3 -7
  15. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/value.rs +216 -14
  16. {lora_python-0.20.0 → lora_python-0.20.1}/pyproject.toml +1 -1
  17. {lora_python-0.20.0 → lora_python-0.20.1}/LICENSE +0 -0
  18. {lora_python-0.20.0 → lora_python-0.20.1}/README.md +0 -0
  19. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-binding-buffer/Cargo.toml +0 -0
  20. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-binding-buffer/src/lib.rs +0 -0
  21. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-binding-buffer/src/stream.rs +0 -0
  22. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/.gitignore +0 -0
  23. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/Cargo.toml +0 -0
  24. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/LICENSE +0 -0
  25. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/README.md +0 -0
  26. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/build.rs +0 -0
  27. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/examples/async_demo.py +0 -0
  28. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/examples/basic.py +0 -0
  29. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/src/errors.rs +0 -0
  30. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/src/from_python.rs +0 -0
  31. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/src/gil.rs +0 -0
  32. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/src/lib.rs +0 -0
  33. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/src/stream.rs +0 -0
  34. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/src/to_python.rs +0 -0
  35. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/tests/test_async.py +0 -0
  36. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/tests/test_concurrency.py +0 -0
  37. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/tests/test_explain_profile.py +0 -0
  38. {lora_python-0.20.0 → lora_python-0.20.1}/crates/bindings/lora-python/tests/test_sync.py +0 -0
  39. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/Cargo.toml +0 -0
  40. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/analyzer/builtin_signatures.rs +0 -0
  41. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/analyzer/clauses.rs +0 -0
  42. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/analyzer/expressions.rs +0 -0
  43. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/analyzer/mod.rs +0 -0
  44. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/analyzer/patterns.rs +0 -0
  45. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/analyzer/state.rs +0 -0
  46. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/analyzer/tests.rs +0 -0
  47. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/errors.rs +0 -0
  48. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/lib.rs +0 -0
  49. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/resolved.rs +0 -0
  50. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/scope.rs +0 -0
  51. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/src/symbols.rs +0 -0
  52. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-analyzer/tests/error_messages.rs +0 -0
  53. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-ast/Cargo.toml +0 -0
  54. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-ast/src/ast.rs +0 -0
  55. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-ast/src/lib.rs +0 -0
  56. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-builtins-meta/Cargo.toml +0 -0
  57. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-builtins-meta/src/lib.rs +0 -0
  58. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-compiler/Cargo.toml +0 -0
  59. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-compiler/src/lib.rs +0 -0
  60. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-compiler/src/logical.rs +0 -0
  61. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-compiler/src/optimizer.rs +0 -0
  62. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-compiler/src/pattern.rs +0 -0
  63. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-compiler/src/physical.rs +0 -0
  64. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-compiler/src/plan_tree.rs +0 -0
  65. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-compiler/src/planner.rs +0 -0
  66. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/Cargo.toml +0 -0
  67. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/advanced.rs +0 -0
  68. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/concurrency_guard.rs +0 -0
  69. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/concurrent.rs +0 -0
  70. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/engine.rs +0 -0
  71. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/fixtures.rs +0 -0
  72. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/index_acceleration.rs +0 -0
  73. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/memory.rs +0 -0
  74. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/memory_baseline.json +0 -0
  75. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/perf_smoke.rs +0 -0
  76. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/perf_smoke_baseline.json +0 -0
  77. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/query_implementations.rs +0 -0
  78. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/realistic.rs +0 -0
  79. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/scale.rs +0 -0
  80. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/temporal_spatial.rs +0 -0
  81. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/benches/wal.rs +0 -0
  82. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/examples/bulk_probe.rs +0 -0
  83. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/examples/heap_probe.rs +0 -0
  84. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/examples/keyset_probe.rs +0 -0
  85. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/examples/optional_probe.rs +0 -0
  86. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/examples/perf_probe.rs +0 -0
  87. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/examples/pushdown_probe.rs +0 -0
  88. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/changes/build.rs +0 -0
  89. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/changes/history.rs +0 -0
  90. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/changes/mod.rs +0 -0
  91. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/builder.rs +0 -0
  92. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/changes.rs +0 -0
  93. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/compile.rs +0 -0
  94. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/execute.rs +0 -0
  95. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/explain.rs +0 -0
  96. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/graph_api.rs +0 -0
  97. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/mod.rs +0 -0
  98. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/occ.rs +0 -0
  99. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/procedures.rs +0 -0
  100. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/profile.rs +0 -0
  101. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/pull_mode.rs +0 -0
  102. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/replay.rs +0 -0
  103. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/row_projection.rs +0 -0
  104. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/schema.rs +0 -0
  105. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/show_pipeline.rs +0 -0
  106. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/stream.rs +0 -0
  107. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/database/write_guard.rs +0 -0
  108. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/durable_io.rs +0 -0
  109. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/error.rs +0 -0
  110. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/explain.rs +0 -0
  111. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/io.rs +0 -0
  112. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/lib.rs +0 -0
  113. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/live_store.rs +0 -0
  114. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/named.rs +0 -0
  115. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/plan_cache.rs +0 -0
  116. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/snapshot/json.rs +0 -0
  117. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/snapshot/mod.rs +0 -0
  118. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/snapshot/store.rs +0 -0
  119. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/stream.rs +0 -0
  120. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/transaction.rs +0 -0
  121. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/admin.rs +0 -0
  122. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/archive/format.rs +0 -0
  123. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/archive/lock.rs +0 -0
  124. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/archive/platform.rs +0 -0
  125. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/archive/worker.rs +0 -0
  126. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/archive/workspace.rs +0 -0
  127. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/archive.rs +0 -0
  128. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/mod.rs +0 -0
  129. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/src/wal/write_scope.rs +0 -0
  130. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/advanced_queries.rs +0 -0
  131. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/aggregation.rs +0 -0
  132. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/and_or_short_circuit.rs +0 -0
  133. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/backend_stub.rs +0 -0
  134. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/bbox_antimeridian.rs +0 -0
  135. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/binary.rs +0 -0
  136. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/borrowed_variable_reads.rs +0 -0
  137. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/builtin_namespaces.rs +0 -0
  138. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/call_subquery_writes.rs +0 -0
  139. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/change_feed.rs +0 -0
  140. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/comparison_ordering.rs +0 -0
  141. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/constraints.rs +0 -0
  142. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/create.rs +0 -0
  143. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/cypher_compat.rs +0 -0
  144. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/docs_examples.rs +0 -0
  145. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/early_limit.rs +0 -0
  146. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/empty_ranges.rs +0 -0
  147. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/error_messages.rs +0 -0
  148. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/errors.rs +0 -0
  149. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/explain_estimates.rs +0 -0
  150. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/explain_profile.rs +0 -0
  151. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/expressions.rs +0 -0
  152. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/foreach.rs +0 -0
  153. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/fulltext_index.rs +0 -0
  154. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/fulltext_list_properties.rs +0 -0
  155. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/functions_extended.rs +0 -0
  156. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/index_acceleration.rs +0 -0
  157. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/invariants.rs +0 -0
  158. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/limit_skip_counts.rs +0 -0
  159. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/managed_snapshots.rs +0 -0
  160. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/match.rs +0 -0
  161. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/merge.rs +0 -0
  162. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/merge_bound_end.rs +0 -0
  163. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/null_properties_and_deferred_existence.rs +0 -0
  164. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/optional_match_correlated.rs +0 -0
  165. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/order_by_index.rs +0 -0
  166. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/order_limit_semantics.rs +0 -0
  167. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/ordering.rs +0 -0
  168. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/parameters.rs +0 -0
  169. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/parser.rs +0 -0
  170. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/paths.rs +0 -0
  171. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/pattern_subquery_property_seek.rs +0 -0
  172. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/pattern_subquery_rel_properties.rs +0 -0
  173. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/pattern_subquery_scope.rs +0 -0
  174. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/pattern_subquery_var_length.rs +0 -0
  175. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/planner_pushdown.rs +0 -0
  176. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/procedure_yield.rs +0 -0
  177. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/projection.rs +0 -0
  178. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/range_scan_other_kinds.rs +0 -0
  179. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/scale.rs +0 -0
  180. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/schema.rs +0 -0
  181. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/schema_in_transaction.rs +0 -0
  182. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/seeds.rs +0 -0
  183. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/shared_index_value_writes.rs +0 -0
  184. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/snapshot.rs +0 -0
  185. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/sort_limit_probe.rs +0 -0
  186. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/spatial.rs +0 -0
  187. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/temporal.rs +0 -0
  188. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/temporal_constructor_functions.rs +0 -0
  189. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/temporal_constructors.rs +0 -0
  190. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/temporal_map_components.rs +0 -0
  191. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/temporal_range_index.rs +0 -0
  192. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/temporal_strings.rs +0 -0
  193. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/temporal_time_zones.rs +0 -0
  194. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/temporal_zone_accessors.rs +0 -0
  195. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/test_helpers.rs +0 -0
  196. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/timeouts.rs +0 -0
  197. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/transactions.rs +0 -0
  198. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/types_advanced.rs +0 -0
  199. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/union.rs +0 -0
  200. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/unknown_names.rs +0 -0
  201. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/unwind_ingestion.rs +0 -0
  202. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/update.rs +0 -0
  203. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/var_length_bound_endpoint.rs +0 -0
  204. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/var_length_hop_ranges.rs +0 -0
  205. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/vector_index.rs +0 -0
  206. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/vectors.rs +0 -0
  207. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/wal.rs +0 -0
  208. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/where_clause.rs +0 -0
  209. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/with.rs +0 -0
  210. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/with_predicates.rs +0 -0
  211. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/write_results.rs +0 -0
  212. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-database/tests/write_scaling.rs +0 -0
  213. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/Cargo.toml +0 -0
  214. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/cancel.rs +0 -0
  215. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/errors.rs +0 -0
  216. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/binops.rs +0 -0
  217. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/bits_ns.rs +0 -0
  218. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/bytes_ns.rs +0 -0
  219. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/cast_ns.rs +0 -0
  220. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/crypto.rs +0 -0
  221. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/edge.rs +0 -0
  222. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/geo.rs +0 -0
  223. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/index_ns.rs +0 -0
  224. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/json_ns.rs +0 -0
  225. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/list.rs +0 -0
  226. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/map_ns.rs +0 -0
  227. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/math_ns.rs +0 -0
  228. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/mod.rs +0 -0
  229. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/node.rs +0 -0
  230. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/number.rs +0 -0
  231. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/path.rs +0 -0
  232. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/string_ns.rs +0 -0
  233. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/temporal.rs +0 -0
  234. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/temporal_build.rs +0 -0
  235. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/text.rs +0 -0
  236. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/type_ns.rs +0 -0
  237. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/uuid_ns.rs +0 -0
  238. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/value.rs +0 -0
  239. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/builtins/vector_ns.rs +0 -0
  240. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/errors.rs +0 -0
  241. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/functions.rs +0 -0
  242. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/mod.rs +0 -0
  243. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/point.rs +0 -0
  244. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/regex.rs +0 -0
  245. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/eval/vector.rs +0 -0
  246. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/executor/aggregation.rs +0 -0
  247. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/executor/sort.rs +0 -0
  248. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/lib.rs +0 -0
  249. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/profile.rs +0 -0
  250. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/aggregate.rs +0 -0
  251. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/call_subquery.rs +0 -0
  252. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/columns.rs +0 -0
  253. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/context.rs +0 -0
  254. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/expand.rs +0 -0
  255. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/filter.rs +0 -0
  256. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/mod.rs +0 -0
  257. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/mutable.rs +0 -0
  258. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/optional.rs +0 -0
  259. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/path.rs +0 -0
  260. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/scan.rs +0 -0
  261. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/shape.rs +0 -0
  262. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/sort.rs +0 -0
  263. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/source.rs +0 -0
  264. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/tests.rs +0 -0
  265. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/traits.rs +0 -0
  266. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/src/pull/union.rs +0 -0
  267. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-executor/tests/error_messages.rs +0 -0
  268. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-io/Cargo.toml +0 -0
  269. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-io/src/csv.rs +0 -0
  270. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-io/src/format.rs +0 -0
  271. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-io/src/json_array.rs +0 -0
  272. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-io/src/jsonl.rs +0 -0
  273. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-io/src/lib.rs +0 -0
  274. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-io/src/mapping.rs +0 -0
  275. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-io/src/value_json.rs +0 -0
  276. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/Cargo.toml +0 -0
  277. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/cypher.pest +0 -0
  278. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/errors.rs +0 -0
  279. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/lib.rs +0 -0
  280. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/clauses.rs +0 -0
  281. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/expressions.rs +0 -0
  282. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/literals.rs +0 -0
  283. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/mod.rs +0 -0
  284. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/patterns.rs +0 -0
  285. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/query.rs +0 -0
  286. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/schema.rs +0 -0
  287. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/tests.rs +0 -0
  288. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/src/parser/util.rs +0 -0
  289. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-parser/tests/error_messages.rs +0 -0
  290. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/Cargo.toml +0 -0
  291. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/body.rs +0 -0
  292. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/codec.rs +0 -0
  293. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/columnar.rs +0 -0
  294. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/envelope.rs +0 -0
  295. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/errors.rs +0 -0
  296. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/format.rs +0 -0
  297. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/lib.rs +0 -0
  298. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/options.rs +0 -0
  299. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/tests.rs +0 -0
  300. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/transform.rs +0 -0
  301. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/src/view.rs +0 -0
  302. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-snapshot/tests/error_messages.rs +0 -0
  303. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/Cargo.toml +0 -0
  304. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/codec.rs +0 -0
  305. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/intern.rs +0 -0
  306. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/lib.rs +0 -0
  307. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/lock_table.rs +0 -0
  308. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/chunked_vec.rs +0 -0
  309. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/constraint_catalog.rs +0 -0
  310. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/constraint_enforce.rs +0 -0
  311. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/cow.rs +0 -0
  312. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/entity_index_store.rs +0 -0
  313. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/fulltext_index.rs +0 -0
  314. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/graph.rs +0 -0
  315. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/hnsw.rs +0 -0
  316. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/id_set.rs +0 -0
  317. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/impls.rs +0 -0
  318. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/index_catalog.rs +0 -0
  319. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/mem_report.rs +0 -0
  320. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/mod.rs +0 -0
  321. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/point_index.rs +0 -0
  322. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/property_index.rs +0 -0
  323. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/secondary_index_maintenance.rs +0 -0
  324. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/snapshot.rs +0 -0
  325. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/sorted_property_index.rs +0 -0
  326. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/stats.rs +0 -0
  327. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/tests.rs +0 -0
  328. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/text_index.rs +0 -0
  329. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/memory/vector_index.rs +0 -0
  330. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/mutation.rs +0 -0
  331. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/snapshot.rs +0 -0
  332. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/traits.rs +0 -0
  333. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/binary/mod.rs +0 -0
  334. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/binary/tests.rs +0 -0
  335. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/binary/traits.rs +0 -0
  336. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/binary/types.rs +0 -0
  337. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/graph.rs +0 -0
  338. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/mod.rs +0 -0
  339. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/property_map.rs +0 -0
  340. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/property_value.rs +0 -0
  341. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/spatial/bbox.rs +0 -0
  342. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/spatial/distance.rs +0 -0
  343. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/spatial/mod.rs +0 -0
  344. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/spatial/point.rs +0 -0
  345. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/spatial/srid.rs +0 -0
  346. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/spatial/tests.rs +0 -0
  347. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/calendar.rs +0 -0
  348. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/date.rs +0 -0
  349. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/datetime.rs +0 -0
  350. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/duration.rs +0 -0
  351. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/format.rs +0 -0
  352. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/mod.rs +0 -0
  353. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/parsing.rs +0 -0
  354. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/time.rs +0 -0
  355. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/temporal/zone.rs +0 -0
  356. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/vector/build.rs +0 -0
  357. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/vector/mod.rs +0 -0
  358. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/vector/similarity.rs +0 -0
  359. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/vector/tests.rs +0 -0
  360. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/src/types/vector/types.rs +0 -0
  361. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-store/tests/error_messages.rs +0 -0
  362. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/Cargo.toml +0 -0
  363. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/codec/decode.rs +0 -0
  364. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/codec/encode.rs +0 -0
  365. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/codec/format.rs +0 -0
  366. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/codec/mod.rs +0 -0
  367. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/codec/tests.rs +0 -0
  368. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/config.rs +0 -0
  369. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/dir.rs +0 -0
  370. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/errors.rs +0 -0
  371. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/history.rs +0 -0
  372. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/io.rs +0 -0
  373. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/lib.rs +0 -0
  374. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/lock.rs +0 -0
  375. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/lsn.rs +0 -0
  376. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/record.rs +0 -0
  377. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/recorder/errors.rs +0 -0
  378. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/recorder/mirror.rs +0 -0
  379. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/recorder/mod.rs +0 -0
  380. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/recorder/recorder.rs +0 -0
  381. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/recorder/tests.rs +0 -0
  382. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/replay.rs +0 -0
  383. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/segment.rs +0 -0
  384. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/testing.rs +0 -0
  385. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/wal/group_flusher.rs +0 -0
  386. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/wal/mod.rs +0 -0
  387. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/wal/tests.rs +0 -0
  388. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/src/wal/wal.rs +0 -0
  389. {lora_python-0.20.0 → lora_python-0.20.1}/crates/lora-wal/tests/error_messages.rs +0 -0
  390. {lora_python-0.20.0 → lora_python-0.20.1}/python/lora_python/__init__.py +0 -0
  391. {lora_python-0.20.0 → lora_python-0.20.1}/python/lora_python/_async.py +0 -0
  392. {lora_python-0.20.0 → lora_python-0.20.1}/python/lora_python/_native.pyi +0 -0
  393. {lora_python-0.20.0 → lora_python-0.20.1}/python/lora_python/py.typed +0 -0
  394. {lora_python-0.20.0 → lora_python-0.20.1}/python/lora_python/types.py +0 -0
@@ -854,7 +854,7 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
854
854
 
855
855
  [[package]]
856
856
  name = "lora-analyzer"
857
- version = "0.20.0"
857
+ version = "0.20.1"
858
858
  dependencies = [
859
859
  "lora-ast",
860
860
  "lora-builtins-meta",
@@ -865,14 +865,14 @@ dependencies = [
865
865
 
866
866
  [[package]]
867
867
  name = "lora-ast"
868
- version = "0.20.0"
868
+ version = "0.20.1"
869
869
  dependencies = [
870
870
  "smallvec 2.0.0-alpha.12",
871
871
  ]
872
872
 
873
873
  [[package]]
874
874
  name = "lora-binding-buffer"
875
- version = "0.20.0"
875
+ version = "0.20.1"
876
876
  dependencies = [
877
877
  "lora-database",
878
878
  "lora-store",
@@ -880,11 +880,11 @@ dependencies = [
880
880
 
881
881
  [[package]]
882
882
  name = "lora-builtins-meta"
883
- version = "0.20.0"
883
+ version = "0.20.1"
884
884
 
885
885
  [[package]]
886
886
  name = "lora-compiler"
887
- version = "0.20.0"
887
+ version = "0.20.1"
888
888
  dependencies = [
889
889
  "lora-analyzer",
890
890
  "lora-ast",
@@ -893,7 +893,7 @@ dependencies = [
893
893
 
894
894
  [[package]]
895
895
  name = "lora-database"
896
- version = "0.20.0"
896
+ version = "0.20.1"
897
897
  dependencies = [
898
898
  "anyhow",
899
899
  "chacha20poly1305",
@@ -918,7 +918,7 @@ dependencies = [
918
918
 
919
919
  [[package]]
920
920
  name = "lora-executor"
921
- version = "0.20.0"
921
+ version = "0.20.1"
922
922
  dependencies = [
923
923
  "blake3",
924
924
  "crc32fast",
@@ -941,7 +941,7 @@ dependencies = [
941
941
 
942
942
  [[package]]
943
943
  name = "lora-ffi"
944
- version = "0.20.0"
944
+ version = "0.20.1"
945
945
  dependencies = [
946
946
  "anyhow",
947
947
  "lora-binding-buffer",
@@ -953,7 +953,7 @@ dependencies = [
953
953
 
954
954
  [[package]]
955
955
  name = "lora-io"
956
- version = "0.20.0"
956
+ version = "0.20.1"
957
957
  dependencies = [
958
958
  "lora-executor",
959
959
  "lora-store",
@@ -964,7 +964,7 @@ dependencies = [
964
964
 
965
965
  [[package]]
966
966
  name = "lora-node"
967
- version = "0.20.0"
967
+ version = "0.20.1"
968
968
  dependencies = [
969
969
  "anyhow",
970
970
  "lora-binding-buffer",
@@ -979,7 +979,7 @@ dependencies = [
979
979
 
980
980
  [[package]]
981
981
  name = "lora-parser"
982
- version = "0.20.0"
982
+ version = "0.20.1"
983
983
  dependencies = [
984
984
  "lora-ast",
985
985
  "pest",
@@ -990,7 +990,7 @@ dependencies = [
990
990
 
991
991
  [[package]]
992
992
  name = "lora-python"
993
- version = "0.20.0"
993
+ version = "0.20.1"
994
994
  dependencies = [
995
995
  "anyhow",
996
996
  "lora-binding-buffer",
@@ -1003,7 +1003,7 @@ dependencies = [
1003
1003
 
1004
1004
  [[package]]
1005
1005
  name = "lora-query-wasm"
1006
- version = "0.20.0"
1006
+ version = "0.20.1"
1007
1007
  dependencies = [
1008
1008
  "console_error_panic_hook",
1009
1009
  "js-sys",
@@ -1017,7 +1017,7 @@ dependencies = [
1017
1017
 
1018
1018
  [[package]]
1019
1019
  name = "lora-server"
1020
- version = "0.20.0"
1020
+ version = "0.20.1"
1021
1021
  dependencies = [
1022
1022
  "anyhow",
1023
1023
  "axum",
@@ -1032,7 +1032,7 @@ dependencies = [
1032
1032
 
1033
1033
  [[package]]
1034
1034
  name = "lora-snapshot"
1035
- version = "0.20.0"
1035
+ version = "0.20.1"
1036
1036
  dependencies = [
1037
1037
  "argon2",
1038
1038
  "blake3",
@@ -1047,7 +1047,7 @@ dependencies = [
1047
1047
 
1048
1048
  [[package]]
1049
1049
  name = "lora-store"
1050
- version = "0.20.0"
1050
+ version = "0.20.1"
1051
1051
  dependencies = [
1052
1052
  "crc32fast",
1053
1053
  "jiff",
@@ -1062,7 +1062,7 @@ dependencies = [
1062
1062
 
1063
1063
  [[package]]
1064
1064
  name = "lora-wal"
1065
- version = "0.20.0"
1065
+ version = "0.20.1"
1066
1066
  dependencies = [
1067
1067
  "crc32fast",
1068
1068
  "lora-store",
@@ -1072,7 +1072,7 @@ dependencies = [
1072
1072
 
1073
1073
  [[package]]
1074
1074
  name = "lora-wasm"
1075
- version = "0.20.0"
1075
+ version = "0.20.1"
1076
1076
  dependencies = [
1077
1077
  "anyhow",
1078
1078
  "console_error_panic_hook",
@@ -1088,7 +1088,7 @@ dependencies = [
1088
1088
 
1089
1089
  [[package]]
1090
1090
  name = "lora_ruby"
1091
- version = "0.20.0"
1091
+ version = "0.20.1"
1092
1092
  dependencies = [
1093
1093
  "anyhow",
1094
1094
  "lora-database",
@@ -4,7 +4,7 @@ resolver = "2"
4
4
 
5
5
  [workspace.package]
6
6
  edition = "2021"
7
- version = "0.20.0"
7
+ version = "0.20.1"
8
8
  license = "BUSL-1.1"
9
9
  authors = ["LoraDB, Inc."]
10
10
  repository = "https://github.com/lora-db/lora"
@@ -15,18 +15,18 @@ 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.20.0" }
19
- lora-parser = { path = "crates/lora-parser", version = "=0.20.0" }
20
- lora-builtins-meta = { path = "crates/lora-builtins-meta", version = "=0.20.0" }
21
- lora-analyzer = { path = "crates/lora-analyzer", version = "=0.20.0" }
22
- lora-compiler = { path = "crates/lora-compiler", version = "=0.20.0" }
23
- lora-store = { path = "crates/lora-store", version = "=0.20.0" }
24
- lora-snapshot = { path = "crates/lora-snapshot", version = "=0.20.0", default-features = false }
25
- lora-io = { path = "crates/lora-io", version = "=0.20.0" }
26
- lora-wal = { path = "crates/lora-wal", version = "=0.20.0" }
27
- lora-executor = { path = "crates/lora-executor", version = "=0.20.0", default-features = false }
28
- lora-database = { path = "crates/lora-database", version = "=0.20.0" }
29
- lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.20.0" }
18
+ lora-ast = { path = "crates/lora-ast", version = "=0.20.1" }
19
+ lora-parser = { path = "crates/lora-parser", version = "=0.20.1" }
20
+ lora-builtins-meta = { path = "crates/lora-builtins-meta", version = "=0.20.1" }
21
+ lora-analyzer = { path = "crates/lora-analyzer", version = "=0.20.1" }
22
+ lora-compiler = { path = "crates/lora-compiler", version = "=0.20.1" }
23
+ lora-store = { path = "crates/lora-store", version = "=0.20.1" }
24
+ lora-snapshot = { path = "crates/lora-snapshot", version = "=0.20.1", default-features = false }
25
+ lora-io = { path = "crates/lora-io", version = "=0.20.1" }
26
+ lora-wal = { path = "crates/lora-wal", version = "=0.20.1" }
27
+ lora-executor = { path = "crates/lora-executor", version = "=0.20.1", default-features = false }
28
+ lora-database = { path = "crates/lora-database", version = "=0.20.1" }
29
+ lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.20.1" }
30
30
 
31
31
  # External crates.
32
32
  anyhow = "1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lora-python
3
- Version: 0.20.0
3
+ Version: 0.20.1
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Programming Language :: Python :: 3.8
@@ -34,6 +34,7 @@ compare cleanly across branches (build each branch, run the same probe):
34
34
  | --- | --- |
35
35
  | `heap_probe` | Real retained heap per node / relationship / index entry via a counting allocator (`MemoryReport` is an estimate). `-- --festimap` runs the 25k-node / 100k-relationship shape from the Festimap report |
36
36
  | `perf_probe` | Mean latency of common query shapes; `-- <scenario> <seconds>` loops one scenario for an external sampler, `-- --stream` compares `execute()` with `stream()` |
37
+ | `carried_probe` | A 200-row hop / OPTIONAL MATCH with a 10k-element list carried in the row vs none (Festimap E-4; target: within 2x). `-- '<body>'` times another query body |
37
38
  | `optional_probe` | Anchored `OPTIONAL MATCH` vs the equivalent pattern comprehension (target: within 3x) |
38
39
  | `keyset_probe` | `WHERE n.key > $after ORDER BY n.key LIMIT 20` latency at 20k and 1M nodes (target: under 1 ms p50, flat in label size) |
39
40
  | `bulk_probe` | Bulk-load time with no schema vs a uniqueness constraint, range, or full-text index declared first |
@@ -0,0 +1,51 @@
1
+ //! Festimap E-4 repro: a value the row carries (a collected list) should not
2
+ //! multiply the cost of an operator that makes a row per candidate.
3
+ //! `cargo run --release -p lora-database --example carried_probe [-- '<body>']`
4
+ //! times `MATCH (c:C {key: 'c'}) WITH c, <big> AS big <body>` with `[]` and
5
+ //! with a 10k-element list; the ratio should stay under 2x.
6
+ use std::time::Instant;
7
+
8
+ use lora_database::{Database, ExecuteOptions, InMemoryGraph, ResultFormat};
9
+
10
+ fn opts() -> Option<ExecuteOptions> {
11
+ Some(ExecuteOptions {
12
+ format: ResultFormat::Rows,
13
+ })
14
+ }
15
+
16
+ fn time(db: &Database<InMemoryGraph>, q: &str) -> f64 {
17
+ for _ in 0..3 {
18
+ db.execute(q, opts()).unwrap();
19
+ }
20
+ let n = 50;
21
+ let t = Instant::now();
22
+ for _ in 0..n {
23
+ db.execute(q, opts()).unwrap();
24
+ }
25
+ t.elapsed().as_secs_f64() * 1000.0 / n as f64
26
+ }
27
+
28
+ fn main() {
29
+ let db = Database::in_memory();
30
+ db.execute(
31
+ "CREATE (c:C {key: 'c'}) WITH c UNWIND range(1, 200) AS i CREATE (:M {i: i})-[:IN]->(c)",
32
+ opts(),
33
+ )
34
+ .unwrap();
35
+ let bodies: Vec<String> = match std::env::args().nth(1) {
36
+ Some(body) => vec![body],
37
+ None => vec![
38
+ "MATCH (c)<-[:IN]-(m:M) RETURN count(m) AS n, size(big) AS b".into(),
39
+ "OPTIONAL MATCH (c)<-[:IN]-(m:M) RETURN count(m) AS n, size(big) AS b".into(),
40
+ ],
41
+ };
42
+ for body in bodies {
43
+ let q = |big: &str| format!("MATCH (c:C {{key: 'c'}}) WITH c, {big} AS big {body}");
44
+ let small = time(&db, &q("[]"));
45
+ let large = time(&db, &q("range(1, 10000)"));
46
+ println!(
47
+ "{body}\n []: {small:.3} ms 10k: {large:.3} ms ratio {:.1}x",
48
+ large / small
49
+ );
50
+ }
51
+ }
@@ -0,0 +1,163 @@
1
+ //! A value the row carries for other reasons is shared, not copied, when an
2
+ //! operator makes one row per candidate.
3
+ //!
4
+ //! An expand, an OPTIONAL MATCH, a variable-length expand, UNWIND, FOREACH and
5
+ //! the list constructs each clone their working row per candidate. A list
6
+ //! collected earlier in the query (Festimap's E-4: a `CALL` that collects a
7
+ //! page before its counts) used to be copied with it, so a 200-row hop over
8
+ //! a row carrying a 10k-element list ran ~250x slower than the same hop
9
+ //! without it. Large values now sit behind a shared pointer in the row slot,
10
+ //! and a lone variable argument (`size(big)`) is read in place.
11
+
12
+ mod test_helpers;
13
+ use std::time::Instant;
14
+
15
+ use test_helpers::TestDb;
16
+
17
+ fn hub(members: usize) -> TestDb {
18
+ let db = TestDb::new();
19
+ db.run(&format!(
20
+ "CREATE (c:C {{key: 'c'}}) WITH c UNWIND range(1, {members}) AS i \
21
+ CREATE (:M {{i: i}})-[:IN]->(c)"
22
+ ));
23
+ db
24
+ }
25
+
26
+ /// The query body after `MATCH (c:C {key: 'c'}) WITH c, <big> AS big`, for
27
+ /// each site that makes a row per candidate.
28
+ const SITES: &[(&str, &str)] = &[
29
+ (
30
+ "expand",
31
+ "MATCH (c)<-[:IN]-(m:M) RETURN count(m) AS n, size(big) AS b",
32
+ ),
33
+ (
34
+ "optional match",
35
+ "OPTIONAL MATCH (c)<-[:IN]-(m:M) RETURN count(m) AS n, size(big) AS b",
36
+ ),
37
+ (
38
+ "expand + filter",
39
+ "MATCH (c)<-[:IN]-(m:M) WHERE m.i > 10 RETURN count(m) AS n, size(big) AS b",
40
+ ),
41
+ (
42
+ "variable-length expand",
43
+ "MATCH (c)<-[:IN*1..2]-(m:M) RETURN count(m) AS n, size(big) AS b",
44
+ ),
45
+ (
46
+ "shortest path",
47
+ "MATCH (m:M) WITH c, big, m MATCH p = shortestPath((c)-[:IN*..2]-(m)) \
48
+ RETURN count(p) AS n, size(big) AS b",
49
+ ),
50
+ (
51
+ "foreach",
52
+ "FOREACH (i IN range(1, 200) | SET c.x = i) RETURN size(big) AS b",
53
+ ),
54
+ (
55
+ "unwind + where",
56
+ "UNWIND range(1, 200) AS i WITH c, big, i WHERE i > 10 RETURN count(i) AS n, size(big) AS b",
57
+ ),
58
+ (
59
+ "call without importing with",
60
+ "CALL { MATCH (m:M) RETURN m } RETURN count(m) AS n, size(big) AS b",
61
+ ),
62
+ (
63
+ "list comprehension",
64
+ "RETURN size([i IN range(1, 200) WHERE i > 10 | i]) AS n, size(big) AS b",
65
+ ),
66
+ (
67
+ "reduce",
68
+ "RETURN reduce(s = 0, i IN range(1, 200) | s + i) AS n, size(big) AS b",
69
+ ),
70
+ (
71
+ "quantifier",
72
+ "RETURN any(i IN range(1, 200) WHERE i < 0) AS n, size(big) AS b",
73
+ ),
74
+ ];
75
+
76
+ fn per_query(db: &TestDb, q: &str) -> f64 {
77
+ db.run(q);
78
+ // The fastest of several runs: robust against a loaded host.
79
+ (0..7)
80
+ .map(|_| {
81
+ let start = Instant::now();
82
+ db.run(q);
83
+ start.elapsed().as_secs_f64()
84
+ })
85
+ .fold(f64::MAX, f64::min)
86
+ }
87
+
88
+ fn query(big: &str, body: &str) -> String {
89
+ format!("MATCH (c:C {{key: 'c'}}) WITH c, {big} AS big {body}")
90
+ }
91
+
92
+ #[test]
93
+ fn a_carried_list_does_not_multiply_the_cost_of_a_row_per_candidate() {
94
+ let db = hub(200);
95
+ let mut slow = Vec::new();
96
+ for (site, body) in SITES {
97
+ let small = per_query(&db, &query("[]", body));
98
+ let large = per_query(&db, &query("range(1, 10000)", body));
99
+ // Copying the list per candidate made the row-per-candidate sites
100
+ // 200-380x slower (17 ms against 0.07 ms for the expand in a release
101
+ // build); now they run within 2x. Building the list once is the only
102
+ // cost left; the bound leaves room for a loaded host and a debug
103
+ // build.
104
+ if large > small * 5.0 + 0.01 {
105
+ slow.push(format!("{site}: [] {small:.5}s, 10k {large:.5}s"));
106
+ }
107
+ }
108
+ assert!(slow.is_empty(), "{slow:#?}");
109
+ }
110
+
111
+ #[test]
112
+ fn a_carried_list_keeps_its_value_through_every_site() {
113
+ let db = hub(20);
114
+ for (site, body) in SITES {
115
+ let rows = db.run(&query("range(1, 50)", body));
116
+ assert_eq!(rows.len(), 1, "{site}");
117
+ assert_eq!(rows[0]["b"], 50, "{site}");
118
+ }
119
+ }
120
+
121
+ #[test]
122
+ fn shared_values_are_independent_after_a_copy() {
123
+ let db = hub(3);
124
+ // The carried list and map reach every row intact, and a value built
125
+ // from one row's copy does not leak into another's.
126
+ let rows = db.run(
127
+ "MATCH (c:C {key: 'c'}) WITH c, range(1, 100) AS big, \
128
+ {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9} AS cfg \
129
+ MATCH (c)<-[:IN]-(m:M) \
130
+ WITH m, big + [m.i] AS mine, cfg \
131
+ RETURN m.i AS i, size(mine) AS n, mine[-1] AS last, mine[0] AS first, cfg.i AS ci \
132
+ ORDER BY i",
133
+ );
134
+ assert_eq!(rows.len(), 3);
135
+ for (row, i) in rows.iter().zip(1..) {
136
+ assert_eq!(row["i"], i);
137
+ assert_eq!(row["n"], 101);
138
+ assert_eq!(row["last"], i);
139
+ assert_eq!(row["first"], 1);
140
+ assert_eq!(row["ci"], 9);
141
+ }
142
+
143
+ // A large list returned from many rows is returned whole on each.
144
+ let rows = db.run("WITH range(1, 64) AS big MATCH (m:M) RETURN m.i AS i, big ORDER BY i");
145
+ assert_eq!(rows.len(), 3);
146
+ for row in &rows {
147
+ assert_eq!(row["big"].as_array().unwrap().len(), 64);
148
+ }
149
+
150
+ // OPTIONAL MATCH with no match null-extends and keeps the carried list.
151
+ let rows = db.run("WITH range(1, 64) AS big OPTIONAL MATCH (x:Nope) RETURN x, size(big) AS b");
152
+ assert_eq!(rows[0]["x"], serde_json::Value::Null);
153
+ assert_eq!(rows[0]["b"], 64);
154
+
155
+ // FOREACH over rows carrying a list writes once per element.
156
+ db.run(
157
+ "MATCH (c:C {key: 'c'}) WITH c, range(1, 100) AS big \
158
+ FOREACH (i IN range(1, 5) | CREATE (:F {i: i, b: size(big)}))",
159
+ );
160
+ let rows = db.run("MATCH (f:F) RETURN count(f) AS n, min(f.b) AS b");
161
+ assert_eq!(rows[0]["n"], 5);
162
+ assert_eq!(rows[0]["b"], 100);
163
+ }
@@ -106,10 +106,7 @@ pub fn eval_expr<S: GraphStorage>(
106
106
  function,
107
107
  distinct: _,
108
108
  args,
109
- } => {
110
- let args: Vec<LoraValue> = args.iter().map(|a| eval_expr(a, row, ctx)).collect();
111
- eval_function(*function, &args, ctx)
112
- }
109
+ } => eval_call(*function, args, row, ctx),
113
110
 
114
111
  ResolvedExpr::Parameter(name) => ctx.params.get(name).cloned().unwrap_or(LoraValue::Null),
115
112
 
@@ -128,7 +125,7 @@ pub fn eval_expr<S: GraphStorage>(
128
125
  let mut inner_row = row.clone();
129
126
  let mut count = 0usize;
130
127
  for item in items {
131
- inner_row.insert(*variable, item);
128
+ inner_row.insert_inline(*variable, item);
132
129
  if eval_expr(predicate, &inner_row, ctx).is_truthy() {
133
130
  count += 1;
134
131
  }
@@ -159,7 +156,7 @@ pub fn eval_expr<S: GraphStorage>(
159
156
  for item in items {
160
157
  // When no map_expr, we need the item after filter —
161
158
  // stash it in the row binding and read it back if kept.
162
- inner_row.insert(*variable, item);
159
+ inner_row.insert_inline(*variable, item);
163
160
  if let Some(f) = filter {
164
161
  if !eval_expr(f, &inner_row, ctx).is_truthy() {
165
162
  continue;
@@ -197,8 +194,8 @@ pub fn eval_expr<S: GraphStorage>(
197
194
  let mut inner_row = row.clone();
198
195
  let mut acc = init_val;
199
196
  for item in items {
200
- inner_row.insert(*accumulator, acc);
201
- inner_row.insert(*variable, item);
197
+ inner_row.insert_inline(*accumulator, acc);
198
+ inner_row.insert_inline(*variable, item);
202
199
  acc = eval_expr(expr, &inner_row, ctx);
203
200
  }
204
201
  acc
@@ -373,6 +370,22 @@ fn eval_ref<'r, S: GraphStorage>(
373
370
  }
374
371
  }
375
372
 
373
+ /// A function call. A lone variable argument (`size(big)`, `head(list)`) is
374
+ /// read in place instead of copied per call.
375
+ fn eval_call<S: GraphStorage>(
376
+ function: lora_analyzer::FunctionId,
377
+ args: &[ResolvedExpr],
378
+ row: &Row,
379
+ ctx: &EvalContext<'_, S>,
380
+ ) -> LoraValue {
381
+ if let [ResolvedExpr::Variable(var)] = args {
382
+ let value = row.get(*var).unwrap_or(&NULL);
383
+ return eval_function(function, std::slice::from_ref(value), ctx);
384
+ }
385
+ let args: Vec<LoraValue> = args.iter().map(|a| eval_expr(a, row, ctx)).collect();
386
+ eval_function(function, &args, ctx)
387
+ }
388
+
376
389
  fn eval_exists_subquery<S: GraphStorage>(
377
390
  pattern: &lora_analyzer::ResolvedPattern,
378
391
  where_: Option<&ResolvedExpr>,
@@ -73,6 +73,43 @@ pub(super) fn check_deadline_at(deadline: Instant) -> ExecResult<()> {
73
73
  }
74
74
  }
75
75
 
76
+ /// Project `item` from `source` into `projected`. A bare variable takes the
77
+ /// source's slot as is, so a large value it holds is shared, not copied.
78
+ #[inline]
79
+ pub(crate) fn project_item<S: GraphStorage>(
80
+ projected: &mut Row,
81
+ source: &Row,
82
+ item: &lora_analyzer::ResolvedProjection,
83
+ eval_ctx: &EvalContext<'_, S>,
84
+ ) -> ExecResult<()> {
85
+ if let ResolvedExpr::Variable(var) = &item.expr {
86
+ if projected.insert_named_from(item.output, item.name.clone(), source, *var) {
87
+ return Ok(());
88
+ }
89
+ }
90
+ let value =
91
+ eval_expr_result(&item.expr, source, eval_ctx).map_err(ExecutorError::RuntimeError)?;
92
+ projected.insert_named(item.output, item.name.clone(), value);
93
+ Ok(())
94
+ }
95
+
96
+ /// [`project_item`] for a projection that keeps the row's existing bindings.
97
+ #[inline]
98
+ pub(crate) fn project_item_in_place<S: GraphStorage>(
99
+ row: &mut Row,
100
+ item: &lora_analyzer::ResolvedProjection,
101
+ eval_ctx: &EvalContext<'_, S>,
102
+ ) -> ExecResult<()> {
103
+ if let ResolvedExpr::Variable(var) = &item.expr {
104
+ if row.insert_named_from_self(item.output, item.name.clone(), *var) {
105
+ return Ok(());
106
+ }
107
+ }
108
+ let value = eval_expr_result(&item.expr, row, eval_ctx).map_err(ExecutorError::RuntimeError)?;
109
+ row.insert_named(item.output, item.name.clone(), value);
110
+ Ok(())
111
+ }
112
+
76
113
  pub(super) fn filter_rows_checked<S: GraphStorage>(
77
114
  input_rows: Vec<Row>,
78
115
  predicate: &ResolvedExpr,
@@ -98,17 +135,13 @@ pub(super) fn project_rows_checked<S: GraphStorage>(
98
135
  if op.include_existing {
99
136
  let mut projected = row;
100
137
  for item in &op.items {
101
- let value = eval_expr_result(&item.expr, &projected, eval_ctx)
102
- .map_err(ExecutorError::RuntimeError)?;
103
- projected.insert_named(item.output, item.name.clone(), value);
138
+ project_item_in_place(&mut projected, item, eval_ctx)?;
104
139
  }
105
140
  out.push(projected);
106
141
  } else {
107
142
  let mut projected = Row::new();
108
143
  for item in &op.items {
109
- let value = eval_expr_result(&item.expr, &row, eval_ctx)
110
- .map_err(ExecutorError::RuntimeError)?;
111
- projected.insert_named(item.output, item.name.clone(), value);
144
+ project_item(&mut projected, &row, item, eval_ctx)?;
112
145
  }
113
146
  out.push(projected);
114
147
  }
@@ -11,7 +11,7 @@
11
11
  use crate::errors::{ExecResult, ExecutorError};
12
12
  use crate::eval::{clear_eval_error, EvalContext};
13
13
  #[cfg(all(feature = "parallel", not(target_arch = "wasm32")))]
14
- use crate::eval::{eval_expr, eval_expr_result, eval_truthy_result};
14
+ use crate::eval::{eval_expr, eval_truthy_result};
15
15
  use crate::value::{LoraValue, Row};
16
16
  use crate::{project_rows, ExecuteOptions, QueryResult};
17
17
 
@@ -36,6 +36,7 @@ use super::helpers::{
36
36
  node_matches_label_groups, node_matches_property_filter, scan_node_ids_for_label_groups,
37
37
  };
38
38
  use super::{merge_optional_rows, optional_match_rows};
39
+ use super::{project_item, project_item_in_place};
39
40
  use super::{sort_row_bound, sort_rows_with_top_k};
40
41
 
41
42
  #[cfg(all(feature = "parallel", not(target_arch = "wasm32")))]
@@ -167,7 +168,7 @@ impl<'a, S: GraphStorage> Executor<'a, S> {
167
168
  let mut out = Row::new();
168
169
 
169
170
  for (var, name, value) in row.into_iter_named() {
170
- out.insert_named(var, name, self.hydrate_value(value));
171
+ out.insert_named_inline(var, name, self.hydrate_value(value));
171
172
  }
172
173
 
173
174
  out
@@ -704,17 +705,13 @@ impl<'a, S: GraphStorage> Executor<'a, S> {
704
705
  if op.include_existing {
705
706
  let mut projected = row;
706
707
  for item in &op.items {
707
- let value = eval_expr_result(&item.expr, &projected, &eval_ctx)
708
- .map_err(ExecutorError::RuntimeError)?;
709
- projected.insert_named(item.output, item.name.clone(), value);
708
+ project_item_in_place(&mut projected, item, &eval_ctx)?;
710
709
  }
711
710
  Ok(projected)
712
711
  } else {
713
712
  let mut projected = Row::new();
714
713
  for item in &op.items {
715
- let value = eval_expr_result(&item.expr, &row, &eval_ctx)
716
- .map_err(ExecutorError::RuntimeError)?;
717
- projected.insert_named(item.output, item.name.clone(), value);
714
+ project_item(&mut projected, &row, item, &eval_ctx)?;
718
715
  }
719
716
  Ok(projected)
720
717
  }
@@ -71,6 +71,7 @@ pub(crate) use helpers::{
71
71
  scan_node_ids_for_label_groups, GroupValueKey, NodePropertyCandidates,
72
72
  };
73
73
  pub(crate) use helpers::{other_kind_node_ids, OrderedRangeCursor, OtherKindScan};
74
+ pub(crate) use helpers::{project_item, project_item_in_place};
74
75
  pub(crate) use optional::{
75
76
  merge_optional_rows, null_extend_optional_row, optional_can_correlate, optional_match_rows,
76
77
  optional_rows_compatible,
@@ -243,7 +243,7 @@ impl<'a, S: GraphStorageMut> MutableExecutor<'a, S> {
243
243
  let mut out = Row::new();
244
244
 
245
245
  for (var, name, value) in row.into_iter_named() {
246
- out.insert_named(var, name, self.hydrate_value(value));
246
+ out.insert_named_inline(var, name, self.hydrate_value(value));
247
247
  }
248
248
 
249
249
  out
@@ -92,7 +92,9 @@ pub(crate) fn optional_rows_compatible(input_row: &Row, inner_row: &Row) -> bool
92
92
  input_row
93
93
  .iter()
94
94
  .all(|(var, val)| match inner_row.get(*var) {
95
- Some(inner_val) => inner_val == val,
95
+ // A seeded inner row shares the outer row's large values: the
96
+ // pointer check skips comparing a carried list element-wise.
97
+ Some(inner_val) => std::ptr::eq(inner_val, val) || inner_val == val,
96
98
  None => true,
97
99
  })
98
100
  }
@@ -27,7 +27,7 @@ impl<'a, S: GraphStorage> RowSource for HydratingSource<'a, S> {
27
27
  Some(row) => {
28
28
  let mut out = Row::new();
29
29
  for (var, name, value) in row.into_iter_named() {
30
- out.insert_named(var, name, hydrate_value(value, self.storage));
30
+ out.insert_named_inline(var, name, hydrate_value(value, self.storage));
31
31
  }
32
32
  Ok(Some(out))
33
33
  }
@@ -40,7 +40,7 @@ impl<'a, S: GraphStorage> RowSource for HydratingSource<'a, S> {
40
40
  pub fn hydrate_row<S: GraphStorage>(row: Row, storage: &S) -> Row {
41
41
  let mut out = Row::new();
42
42
  for (var, name, value) in row.into_iter_named() {
43
- out.insert_named(var, name, hydrate_value(value, storage));
43
+ out.insert_named_inline(var, name, hydrate_value(value, storage));
44
44
  }
45
45
  out
46
46
  }