lora-python 0.11.2__tar.gz → 0.11.3__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 (307) hide show
  1. {lora_python-0.11.2 → lora_python-0.11.3}/Cargo.lock +17 -17
  2. {lora_python-0.11.2 → lora_python-0.11.3}/Cargo.toml +11 -11
  3. {lora_python-0.11.2 → lora_python-0.11.3}/PKG-INFO +1 -1
  4. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/analyzer/builtin_signatures.rs +3 -0
  5. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/lib.rs +2 -2
  6. lora_python-0.11.3/crates/lora-database/tests/unwind_ingestion.rs +219 -0
  7. {lora_python-0.11.2 → lora_python-0.11.3}/pyproject.toml +1 -1
  8. {lora_python-0.11.2 → lora_python-0.11.3}/LICENSE +0 -0
  9. {lora_python-0.11.2 → lora_python-0.11.3}/README.md +0 -0
  10. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/.gitignore +0 -0
  11. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/Cargo.toml +0 -0
  12. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/LICENSE +0 -0
  13. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/README.md +0 -0
  14. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/build.rs +0 -0
  15. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/examples/async_demo.py +0 -0
  16. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/examples/basic.py +0 -0
  17. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/src/errors.rs +0 -0
  18. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/src/from_python.rs +0 -0
  19. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/src/lib.rs +0 -0
  20. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/src/to_python.rs +0 -0
  21. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/tests/test_async.py +0 -0
  22. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/tests/test_explain_profile.py +0 -0
  23. {lora_python-0.11.2 → lora_python-0.11.3}/crates/bindings/lora-python/tests/test_sync.py +0 -0
  24. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/Cargo.toml +0 -0
  25. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/analyzer/clauses.rs +0 -0
  26. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/analyzer/expressions.rs +0 -0
  27. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/analyzer/mod.rs +0 -0
  28. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/analyzer/patterns.rs +0 -0
  29. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/analyzer/state.rs +0 -0
  30. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/analyzer/tests.rs +0 -0
  31. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/errors.rs +0 -0
  32. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/lib.rs +0 -0
  33. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/resolved.rs +0 -0
  34. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/scope.rs +0 -0
  35. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/src/symbols.rs +0 -0
  36. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-analyzer/tests/error_messages.rs +0 -0
  37. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-ast/Cargo.toml +0 -0
  38. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-ast/src/ast.rs +0 -0
  39. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-ast/src/lib.rs +0 -0
  40. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-compiler/Cargo.toml +0 -0
  41. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-compiler/src/lib.rs +0 -0
  42. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-compiler/src/logical.rs +0 -0
  43. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-compiler/src/optimizer.rs +0 -0
  44. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-compiler/src/pattern.rs +0 -0
  45. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-compiler/src/physical.rs +0 -0
  46. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-compiler/src/plan_tree.rs +0 -0
  47. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-compiler/src/planner.rs +0 -0
  48. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/Cargo.toml +0 -0
  49. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/README.md +0 -0
  50. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/advanced.rs +0 -0
  51. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/concurrency_guard.rs +0 -0
  52. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/concurrent.rs +0 -0
  53. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/engine.rs +0 -0
  54. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/fixtures.rs +0 -0
  55. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/index_acceleration.rs +0 -0
  56. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/perf_smoke.rs +0 -0
  57. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/perf_smoke_baseline.json +0 -0
  58. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/query_implementations.rs +0 -0
  59. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/realistic.rs +0 -0
  60. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/scale.rs +0 -0
  61. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/temporal_spatial.rs +0 -0
  62. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/benches/wal.rs +0 -0
  63. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/builder.rs +0 -0
  64. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/compile.rs +0 -0
  65. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/execute.rs +0 -0
  66. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/explain.rs +0 -0
  67. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/graph_api.rs +0 -0
  68. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/mod.rs +0 -0
  69. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/occ.rs +0 -0
  70. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/procedures.rs +0 -0
  71. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/profile.rs +0 -0
  72. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/pull_mode.rs +0 -0
  73. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/replay.rs +0 -0
  74. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/row_projection.rs +0 -0
  75. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/schema.rs +0 -0
  76. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/show_pipeline.rs +0 -0
  77. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/stream.rs +0 -0
  78. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/database/write_guard.rs +0 -0
  79. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/durable_io.rs +0 -0
  80. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/error.rs +0 -0
  81. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/explain.rs +0 -0
  82. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/live_store.rs +0 -0
  83. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/named.rs +0 -0
  84. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/plan_cache.rs +0 -0
  85. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/snapshot/json.rs +0 -0
  86. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/snapshot/mod.rs +0 -0
  87. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/snapshot/store.rs +0 -0
  88. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/stream.rs +0 -0
  89. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/transaction.rs +0 -0
  90. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/admin.rs +0 -0
  91. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/archive/format.rs +0 -0
  92. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/archive/lock.rs +0 -0
  93. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/archive/platform.rs +0 -0
  94. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/archive/worker.rs +0 -0
  95. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/archive/workspace.rs +0 -0
  96. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/archive.rs +0 -0
  97. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/mod.rs +0 -0
  98. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/src/wal/write_scope.rs +0 -0
  99. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/advanced_queries.rs +0 -0
  100. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/aggregation.rs +0 -0
  101. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/backend_stub.rs +0 -0
  102. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/binary.rs +0 -0
  103. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/builtin_namespaces.rs +0 -0
  104. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/constraints.rs +0 -0
  105. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/create.rs +0 -0
  106. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/docs_examples.rs +0 -0
  107. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/error_messages.rs +0 -0
  108. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/errors.rs +0 -0
  109. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/explain_profile.rs +0 -0
  110. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/expressions.rs +0 -0
  111. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/fulltext_index.rs +0 -0
  112. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/functions_extended.rs +0 -0
  113. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/index_acceleration.rs +0 -0
  114. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/invariants.rs +0 -0
  115. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/managed_snapshots.rs +0 -0
  116. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/match.rs +0 -0
  117. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/merge.rs +0 -0
  118. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/ordering.rs +0 -0
  119. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/parameters.rs +0 -0
  120. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/parser.rs +0 -0
  121. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/paths.rs +0 -0
  122. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/projection.rs +0 -0
  123. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/scale.rs +0 -0
  124. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/schema.rs +0 -0
  125. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/seeds.rs +0 -0
  126. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/snapshot.rs +0 -0
  127. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/spatial.rs +0 -0
  128. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/temporal.rs +0 -0
  129. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/test_helpers.rs +0 -0
  130. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/transactions.rs +0 -0
  131. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/types_advanced.rs +0 -0
  132. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/union.rs +0 -0
  133. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/update.rs +0 -0
  134. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/vector_index.rs +0 -0
  135. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/vectors.rs +0 -0
  136. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/wal.rs +0 -0
  137. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/where_clause.rs +0 -0
  138. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-database/tests/with.rs +0 -0
  139. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/Cargo.toml +0 -0
  140. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/errors.rs +0 -0
  141. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/binops.rs +0 -0
  142. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/bits_ns.rs +0 -0
  143. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/bytes_ns.rs +0 -0
  144. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/cast_ns.rs +0 -0
  145. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/crypto.rs +0 -0
  146. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/edge.rs +0 -0
  147. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/geo.rs +0 -0
  148. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/json_ns.rs +0 -0
  149. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/list.rs +0 -0
  150. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/map_ns.rs +0 -0
  151. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/math_ns.rs +0 -0
  152. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/mod.rs +0 -0
  153. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/node.rs +0 -0
  154. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/number.rs +0 -0
  155. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/path.rs +0 -0
  156. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/string_ns.rs +0 -0
  157. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/temporal.rs +0 -0
  158. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/text.rs +0 -0
  159. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/type_ns.rs +0 -0
  160. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/uuid_ns.rs +0 -0
  161. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/value.rs +0 -0
  162. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/builtins/vector_ns.rs +0 -0
  163. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/errors.rs +0 -0
  164. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/expr.rs +0 -0
  165. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/functions.rs +0 -0
  166. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/mod.rs +0 -0
  167. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/point.rs +0 -0
  168. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/regex.rs +0 -0
  169. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/eval/vector.rs +0 -0
  170. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/executor/aggregation.rs +0 -0
  171. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/executor/helpers.rs +0 -0
  172. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/executor/immutable.rs +0 -0
  173. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/executor/mod.rs +0 -0
  174. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/executor/mutable.rs +0 -0
  175. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/executor/optional.rs +0 -0
  176. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/executor/sort.rs +0 -0
  177. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/lib.rs +0 -0
  178. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/profile.rs +0 -0
  179. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/aggregate.rs +0 -0
  180. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/call_subquery.rs +0 -0
  181. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/columns.rs +0 -0
  182. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/context.rs +0 -0
  183. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/expand.rs +0 -0
  184. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/filter.rs +0 -0
  185. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/hydration.rs +0 -0
  186. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/mod.rs +0 -0
  187. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/mutable.rs +0 -0
  188. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/optional.rs +0 -0
  189. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/path.rs +0 -0
  190. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/projection.rs +0 -0
  191. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/scan.rs +0 -0
  192. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/shape.rs +0 -0
  193. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/sort.rs +0 -0
  194. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/source.rs +0 -0
  195. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/tests.rs +0 -0
  196. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/traits.rs +0 -0
  197. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/pull/union.rs +0 -0
  198. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/src/value.rs +0 -0
  199. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-executor/tests/error_messages.rs +0 -0
  200. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/Cargo.toml +0 -0
  201. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/cypher.pest +0 -0
  202. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/errors.rs +0 -0
  203. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/lib.rs +0 -0
  204. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/clauses.rs +0 -0
  205. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/expressions.rs +0 -0
  206. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/literals.rs +0 -0
  207. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/mod.rs +0 -0
  208. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/patterns.rs +0 -0
  209. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/query.rs +0 -0
  210. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/schema.rs +0 -0
  211. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/tests.rs +0 -0
  212. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/src/parser/util.rs +0 -0
  213. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-parser/tests/error_messages.rs +0 -0
  214. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/Cargo.toml +0 -0
  215. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/body.rs +0 -0
  216. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/codec.rs +0 -0
  217. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/columnar.rs +0 -0
  218. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/envelope.rs +0 -0
  219. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/errors.rs +0 -0
  220. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/format.rs +0 -0
  221. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/lib.rs +0 -0
  222. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/options.rs +0 -0
  223. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/tests.rs +0 -0
  224. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/transform.rs +0 -0
  225. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/src/view.rs +0 -0
  226. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-snapshot/tests/error_messages.rs +0 -0
  227. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/Cargo.toml +0 -0
  228. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/codec.rs +0 -0
  229. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/lib.rs +0 -0
  230. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/lock_table.rs +0 -0
  231. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/constraint_catalog.rs +0 -0
  232. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/constraint_enforce.rs +0 -0
  233. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/entity_index_store.rs +0 -0
  234. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/fulltext_index.rs +0 -0
  235. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/graph.rs +0 -0
  236. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/impls.rs +0 -0
  237. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/index_catalog.rs +0 -0
  238. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/mod.rs +0 -0
  239. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/point_index.rs +0 -0
  240. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/property_index.rs +0 -0
  241. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/secondary_index_maintenance.rs +0 -0
  242. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/snapshot.rs +0 -0
  243. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/sorted_property_index.rs +0 -0
  244. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/stats.rs +0 -0
  245. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/tests.rs +0 -0
  246. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/memory/text_index.rs +0 -0
  247. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/mutation.rs +0 -0
  248. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/snapshot.rs +0 -0
  249. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/traits.rs +0 -0
  250. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/binary/mod.rs +0 -0
  251. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/binary/tests.rs +0 -0
  252. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/binary/traits.rs +0 -0
  253. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/binary/types.rs +0 -0
  254. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/graph.rs +0 -0
  255. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/mod.rs +0 -0
  256. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/property_value.rs +0 -0
  257. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/spatial/distance.rs +0 -0
  258. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/spatial/mod.rs +0 -0
  259. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/spatial/point.rs +0 -0
  260. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/spatial/srid.rs +0 -0
  261. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/spatial/tests.rs +0 -0
  262. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/temporal/calendar.rs +0 -0
  263. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/temporal/date.rs +0 -0
  264. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/temporal/datetime.rs +0 -0
  265. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/temporal/duration.rs +0 -0
  266. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/temporal/format.rs +0 -0
  267. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/temporal/mod.rs +0 -0
  268. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/temporal/parsing.rs +0 -0
  269. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/temporal/time.rs +0 -0
  270. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/vector/build.rs +0 -0
  271. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/vector/mod.rs +0 -0
  272. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/vector/similarity.rs +0 -0
  273. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/vector/tests.rs +0 -0
  274. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/src/types/vector/types.rs +0 -0
  275. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-store/tests/error_messages.rs +0 -0
  276. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/Cargo.toml +0 -0
  277. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/codec/decode.rs +0 -0
  278. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/codec/encode.rs +0 -0
  279. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/codec/format.rs +0 -0
  280. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/codec/mod.rs +0 -0
  281. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/codec/tests.rs +0 -0
  282. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/config.rs +0 -0
  283. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/dir.rs +0 -0
  284. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/errors.rs +0 -0
  285. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/io.rs +0 -0
  286. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/lib.rs +0 -0
  287. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/lock.rs +0 -0
  288. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/lsn.rs +0 -0
  289. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/record.rs +0 -0
  290. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/recorder/errors.rs +0 -0
  291. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/recorder/mirror.rs +0 -0
  292. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/recorder/mod.rs +0 -0
  293. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/recorder/recorder.rs +0 -0
  294. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/recorder/tests.rs +0 -0
  295. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/replay.rs +0 -0
  296. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/segment.rs +0 -0
  297. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/testing.rs +0 -0
  298. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/wal/group_flusher.rs +0 -0
  299. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/wal/mod.rs +0 -0
  300. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/wal/tests.rs +0 -0
  301. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/src/wal/wal.rs +0 -0
  302. {lora_python-0.11.2 → lora_python-0.11.3}/crates/lora-wal/tests/error_messages.rs +0 -0
  303. {lora_python-0.11.2 → lora_python-0.11.3}/python/lora_python/__init__.py +0 -0
  304. {lora_python-0.11.2 → lora_python-0.11.3}/python/lora_python/_async.py +0 -0
  305. {lora_python-0.11.2 → lora_python-0.11.3}/python/lora_python/_native.pyi +0 -0
  306. {lora_python-0.11.2 → lora_python-0.11.3}/python/lora_python/py.typed +0 -0
  307. {lora_python-0.11.2 → lora_python-0.11.3}/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.11.2"
776
+ version = "0.11.3"
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.11.2"
786
+ version = "0.11.3"
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.11.2"
793
+ version = "0.11.3"
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.11.2"
801
+ version = "0.11.3"
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.11.2"
810
+ version = "0.11.3"
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.11.2"
833
+ version = "0.11.3"
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.11.2"
855
+ version = "0.11.3"
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.11.2"
867
+ version = "0.11.3"
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.11.2"
882
+ version = "0.11.3"
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.11.2"
893
+ version = "0.11.3"
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.11.2"
905
+ version = "0.11.3"
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.11.2"
918
+ version = "0.11.3"
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.11.2"
932
+ version = "0.11.3"
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.11.2"
946
+ version = "0.11.3"
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.11.2"
957
+ version = "0.11.3"
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.11.2"
967
+ version = "0.11.3"
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.11.2"
983
+ version = "0.11.3"
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.11.2"
7
+ version = "0.11.3"
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.11.2" }
19
- lora-parser = { path = "crates/lora-parser", version = "=0.11.2" }
20
- lora-analyzer = { path = "crates/lora-analyzer", version = "=0.11.2" }
21
- lora-compiler = { path = "crates/lora-compiler", version = "=0.11.2" }
22
- lora-store = { path = "crates/lora-store", version = "=0.11.2" }
23
- lora-snapshot = { path = "crates/lora-snapshot", version = "=0.11.2", default-features = false }
24
- lora-wal = { path = "crates/lora-wal", version = "=0.11.2" }
25
- lora-executor = { path = "crates/lora-executor", version = "=0.11.2", default-features = false }
26
- lora-database = { path = "crates/lora-database", version = "=0.11.2" }
27
- lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.11.2" }
18
+ lora-ast = { path = "crates/lora-ast", version = "=0.11.3" }
19
+ lora-parser = { path = "crates/lora-parser", version = "=0.11.3" }
20
+ lora-analyzer = { path = "crates/lora-analyzer", version = "=0.11.3" }
21
+ lora-compiler = { path = "crates/lora-compiler", version = "=0.11.3" }
22
+ lora-store = { path = "crates/lora-store", version = "=0.11.3" }
23
+ lora-snapshot = { path = "crates/lora-snapshot", version = "=0.11.3", default-features = false }
24
+ lora-wal = { path = "crates/lora-wal", version = "=0.11.3" }
25
+ lora-executor = { path = "crates/lora-executor", version = "=0.11.3", default-features = false }
26
+ lora-database = { path = "crates/lora-database", version = "=0.11.3" }
27
+ lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.11.3" }
28
28
 
29
29
  # External crates.
30
30
  anyhow = "1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lora-python
3
- Version: 0.11.2
3
+ Version: 0.11.3
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Programming Language :: Python :: 3.8
@@ -476,10 +476,13 @@ pub const BUILTIN_ALIASES: &[BuiltinAlias] = &[
476
476
  alias("type.try_cast", "cast.try"),
477
477
  alias("type.can_cast", "cast.can"),
478
478
  alias("now", "temporal.now"),
479
+ alias("datetime", "temporal.now"),
479
480
  alias("timestamp", "temporal.timestamp"),
480
481
  alias("timezone", "temporal.timezone"),
481
482
  alias("new", "uuid.new"),
482
483
  alias("random", "math.random"),
484
+ alias("rand", "math.random"),
485
+ alias("range", "list.range"),
483
486
  // Cypher / historical compatibility aliases.
484
487
  alias("head", "list.first"),
485
488
  alias("last", "list.last"),
@@ -58,8 +58,8 @@ pub use lora_store::InMemoryGraph;
58
58
  // Snapshot surface — re-exported so bindings/servers don't need a direct
59
59
  // `lora-store` dependency just to name the meta / error types.
60
60
  pub use lora_snapshot::{
61
- Compression, EncryptionKey, PasswordKdfParams, SnapshotCredentials, SnapshotEncryption,
62
- SnapshotInfo, SnapshotOptions, SnapshotPassword, DATABASE_SNAPSHOT_MAGIC,
61
+ snapshot_info, Compression, EncryptionKey, PasswordKdfParams, SnapshotCredentials,
62
+ SnapshotEncryption, SnapshotInfo, SnapshotOptions, SnapshotPassword, DATABASE_SNAPSHOT_MAGIC,
63
63
  };
64
64
  pub use lora_store::{
65
65
  NodeId, NodeRecord, RelationshipId, RelationshipRecord, SnapshotError, SnapshotMeta,
@@ -0,0 +1,219 @@
1
+ //! UNWIND-driven bulk-ingestion tests.
2
+ //!
3
+ //! Covers the playground's canonical "fill the graph from a range" pattern:
4
+ //! `UNWIND range(...) AS id CREATE (n {id, computed properties...})`. The
5
+ //! shapes here are exactly what a user pastes into the playground when
6
+ //! seeding a graph for exploration — Cypher-style function names, a CASE
7
+ //! expression in the property map, and a non-trivial per-row workload.
8
+
9
+ mod test_helpers;
10
+
11
+ use serde_json::Value as JsonValue;
12
+ use test_helpers::TestDb;
13
+
14
+ // ============================================================
15
+ // Cypher-compat aliases — these are the names a Neo4j user reaches for first
16
+ // and must resolve to the canonical namespaced builtin without the analyzer
17
+ // raising UnknownFunction.
18
+ // ============================================================
19
+
20
+ #[test]
21
+ fn range_alias_resolves_to_list_range() {
22
+ let db = TestDb::new();
23
+ let rows = db.run("UNWIND range(1, 5) AS k RETURN k");
24
+ assert_eq!(rows.len(), 5);
25
+ assert_eq!(
26
+ rows.iter()
27
+ .map(|r| r["k"].as_i64().unwrap())
28
+ .collect::<Vec<_>>(),
29
+ vec![1, 2, 3, 4, 5],
30
+ );
31
+ }
32
+
33
+ #[test]
34
+ fn range_alias_supports_step_argument() {
35
+ let db = TestDb::new();
36
+ let rows = db.run("UNWIND range(0, 10, 2) AS k RETURN k");
37
+ let values: Vec<i64> = rows.iter().map(|r| r["k"].as_i64().unwrap()).collect();
38
+ assert_eq!(values, vec![0, 2, 4, 6, 8, 10]);
39
+ }
40
+
41
+ #[test]
42
+ fn rand_alias_resolves_to_math_random() {
43
+ let db = TestDb::new();
44
+ let rows = db.run("RETURN rand() AS r");
45
+ let r = rows[0]["r"].as_f64().unwrap();
46
+ assert!((0.0..1.0).contains(&r), "rand() outside [0,1): {r}");
47
+ }
48
+
49
+ #[test]
50
+ fn datetime_alias_resolves_to_temporal_now() {
51
+ let db = TestDb::new();
52
+ let rows = db.run("RETURN datetime() AS t");
53
+ // temporal.now() is rendered as a typed datetime object; the shape
54
+ // and exact representation belong to temporal.rs — here we just assert
55
+ // the alias resolved (no error) and produced a non-null value.
56
+ assert!(!rows[0]["t"].is_null(), "datetime() returned null");
57
+ }
58
+
59
+ // ============================================================
60
+ // The playground's canonical UNWIND-CREATE pattern.
61
+ // ============================================================
62
+
63
+ #[test]
64
+ fn unwind_range_creates_nodes_with_properties() {
65
+ let db = TestDb::new();
66
+ db.run(
67
+ "WITH range(1, 100) AS ids \
68
+ UNWIND ids AS id \
69
+ CREATE (n:TestRecord { \
70
+ id: id, \
71
+ name: 'Record ' + toString(id), \
72
+ createdAt: datetime(), \
73
+ randomValue: rand(), \
74
+ status: CASE \
75
+ WHEN id % 3 = 0 THEN 'ACTIVE' \
76
+ WHEN id % 3 = 1 THEN 'PENDING' \
77
+ ELSE 'ARCHIVED' \
78
+ END \
79
+ })",
80
+ );
81
+
82
+ db.assert_count("MATCH (n:TestRecord) RETURN n", 100);
83
+ }
84
+
85
+ #[test]
86
+ fn unwind_range_case_expression_distributes_across_buckets() {
87
+ let db = TestDb::new();
88
+ db.run(
89
+ "UNWIND range(1, 30) AS id \
90
+ CREATE (:Bucketed { \
91
+ id: id, \
92
+ status: CASE \
93
+ WHEN id % 3 = 0 THEN 'ACTIVE' \
94
+ WHEN id % 3 = 1 THEN 'PENDING' \
95
+ ELSE 'ARCHIVED' \
96
+ END \
97
+ })",
98
+ );
99
+
100
+ // 30 ids, divisible by 3 → 10 in each bucket.
101
+ let active = db
102
+ .exec_count("MATCH (n:Bucketed {status:'ACTIVE'}) RETURN n")
103
+ .unwrap();
104
+ let pending = db
105
+ .exec_count("MATCH (n:Bucketed {status:'PENDING'}) RETURN n")
106
+ .unwrap();
107
+ let archived = db
108
+ .exec_count("MATCH (n:Bucketed {status:'ARCHIVED'}) RETURN n")
109
+ .unwrap();
110
+ assert_eq!((active, pending, archived), (10, 10, 10));
111
+ }
112
+
113
+ #[test]
114
+ fn unwind_range_tostring_concatenation_produces_unique_names() {
115
+ let db = TestDb::new();
116
+ db.run(
117
+ "UNWIND range(1, 50) AS id \
118
+ CREATE (:Named { id: id, name: 'Record ' + toString(id) })",
119
+ );
120
+
121
+ // Properties are unique per id, so name distinct count == row count.
122
+ let names: Vec<JsonValue> = db.column("MATCH (n:Named) RETURN n.name AS name", "name");
123
+ let mut set = std::collections::BTreeSet::new();
124
+ for n in &names {
125
+ set.insert(n.as_str().unwrap().to_string());
126
+ }
127
+ assert_eq!(set.len(), 50);
128
+ assert!(set.contains("Record 1"));
129
+ assert!(set.contains("Record 50"));
130
+ }
131
+
132
+ #[test]
133
+ fn unwind_range_returning_created_nodes_yields_one_row_per_id() {
134
+ let db = TestDb::new();
135
+ let rows = db.run(
136
+ "UNWIND range(1, 25) AS id \
137
+ CREATE (n:Returned { id: id }) \
138
+ RETURN n.id AS id ORDER BY id",
139
+ );
140
+ assert_eq!(rows.len(), 25);
141
+ for (i, row) in rows.iter().enumerate() {
142
+ assert_eq!(row["id"].as_i64().unwrap() as usize, i + 1);
143
+ }
144
+ }
145
+
146
+ // ============================================================
147
+ // Larger scale: the upper end of what the playground will plausibly accept
148
+ // in a single statement. Kept modest (10k) because the parser/analyzer
149
+ // recompile the entire UNWIND body per query — for true bulk loads the
150
+ // playground should batch in ~2k chunks, see scale.rs.
151
+ // ============================================================
152
+
153
+ #[test]
154
+ fn unwind_range_ten_thousand_nodes_single_statement() {
155
+ let db = TestDb::new();
156
+ db.run(
157
+ "UNWIND range(1, 10000) AS id \
158
+ CREATE (:BulkNode { id: id, kind: id % 7 })",
159
+ );
160
+
161
+ assert_eq!(db.service.node_count(), 10_000);
162
+
163
+ // Spot-check a value in the middle and at the boundaries.
164
+ let middle = db.scalar("MATCH (n:BulkNode {id: 5000}) RETURN n.kind");
165
+ assert_eq!(middle.as_i64().unwrap(), 5000 % 7);
166
+ let last = db.scalar("MATCH (n:BulkNode {id: 10000}) RETURN n.kind");
167
+ assert_eq!(last.as_i64().unwrap(), 10_000 % 7);
168
+ }
169
+
170
+ #[test]
171
+ #[ignore = "100k-in-one-statement is slow; run with --ignored. Real bulk loads should batch."]
172
+ fn unwind_range_one_hundred_thousand_nodes_single_statement() {
173
+ let db = TestDb::new();
174
+ db.run(
175
+ "WITH range(1, 100000) AS ids \
176
+ UNWIND ids AS id \
177
+ CREATE (n:TestRecord { \
178
+ id: id, \
179
+ name: 'Record ' + toString(id), \
180
+ randomValue: rand(), \
181
+ status: CASE \
182
+ WHEN id % 3 = 0 THEN 'ACTIVE' \
183
+ WHEN id % 3 = 1 THEN 'PENDING' \
184
+ ELSE 'ARCHIVED' \
185
+ END \
186
+ })",
187
+ );
188
+ assert_eq!(db.service.node_count(), 100_000);
189
+ }
190
+
191
+ #[test]
192
+ fn batched_unwind_range_one_hundred_thousand_nodes() {
193
+ // The pattern the playground should actually use for large ingest:
194
+ // many small UNWIND statements rather than one huge one. Mirrors
195
+ // scale.rs's approach but at a size that's reasonable for the
196
+ // default `cargo test` run.
197
+ let db = TestDb::new();
198
+ const TOTAL: usize = 100_000;
199
+ const BATCH: usize = 2_000;
200
+
201
+ let mut i = 0;
202
+ while i < TOTAL {
203
+ let end = (i + BATCH).min(TOTAL);
204
+ db.run(&format!(
205
+ "UNWIND range({i}, {}) AS id \
206
+ CREATE (:Bulk {{ id: id, kind: id % 5 }})",
207
+ end - 1,
208
+ ));
209
+ i = end;
210
+ }
211
+
212
+ assert_eq!(db.service.node_count(), TOTAL);
213
+
214
+ let buckets = db.run("MATCH (n:Bulk) RETURN n.kind AS k, count(n) AS c ORDER BY k");
215
+ assert_eq!(buckets.len(), 5);
216
+ for row in &buckets {
217
+ assert_eq!(row["c"].as_i64().unwrap() as usize, TOTAL / 5);
218
+ }
219
+ }
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "lora-python"
7
- version = "0.11.2"
7
+ version = "0.11.3"
8
8
  description = "Python bindings for the Lora in-memory graph database"
9
9
  readme = "README.md"
10
10
  license = { text = "BUSL-1.1" }
File without changes
File without changes