lora-python 0.11.2__tar.gz → 0.11.4__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.4}/Cargo.lock +29 -17
  2. {lora_python-0.11.2 → lora_python-0.11.4}/Cargo.toml +13 -11
  3. {lora_python-0.11.2 → lora_python-0.11.4}/PKG-INFO +1 -1
  4. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/analyzer/builtin_signatures.rs +3 -0
  5. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/Cargo.toml +1 -0
  6. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/execute.rs +3 -1
  7. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/occ.rs +1 -1
  8. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/profile.rs +1 -1
  9. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/schema.rs +2 -1
  10. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/write_guard.rs +3 -1
  11. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/lib.rs +2 -2
  12. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/transaction.rs +3 -1
  13. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/archive/workspace.rs +2 -1
  14. lora_python-0.11.4/crates/lora-database/tests/unwind_ingestion.rs +219 -0
  15. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/Cargo.toml +1 -0
  16. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/list.rs +1 -1
  17. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/math_ns.rs +1 -1
  18. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/temporal.rs +1 -1
  19. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/executor/helpers.rs +2 -1
  20. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/executor/immutable.rs +1 -1
  21. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/executor/mutable.rs +1 -1
  22. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/profile.rs +2 -1
  23. {lora_python-0.11.2 → lora_python-0.11.4}/pyproject.toml +1 -1
  24. {lora_python-0.11.2 → lora_python-0.11.4}/LICENSE +0 -0
  25. {lora_python-0.11.2 → lora_python-0.11.4}/README.md +0 -0
  26. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/.gitignore +0 -0
  27. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/Cargo.toml +0 -0
  28. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/LICENSE +0 -0
  29. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/README.md +0 -0
  30. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/build.rs +0 -0
  31. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/examples/async_demo.py +0 -0
  32. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/examples/basic.py +0 -0
  33. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/src/errors.rs +0 -0
  34. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/src/from_python.rs +0 -0
  35. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/src/lib.rs +0 -0
  36. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/src/to_python.rs +0 -0
  37. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/tests/test_async.py +0 -0
  38. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/tests/test_explain_profile.py +0 -0
  39. {lora_python-0.11.2 → lora_python-0.11.4}/crates/bindings/lora-python/tests/test_sync.py +0 -0
  40. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/Cargo.toml +0 -0
  41. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/analyzer/clauses.rs +0 -0
  42. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/analyzer/expressions.rs +0 -0
  43. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/analyzer/mod.rs +0 -0
  44. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/analyzer/patterns.rs +0 -0
  45. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/analyzer/state.rs +0 -0
  46. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/analyzer/tests.rs +0 -0
  47. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/errors.rs +0 -0
  48. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/lib.rs +0 -0
  49. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/resolved.rs +0 -0
  50. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/scope.rs +0 -0
  51. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/src/symbols.rs +0 -0
  52. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-analyzer/tests/error_messages.rs +0 -0
  53. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-ast/Cargo.toml +0 -0
  54. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-ast/src/ast.rs +0 -0
  55. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-ast/src/lib.rs +0 -0
  56. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-compiler/Cargo.toml +0 -0
  57. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-compiler/src/lib.rs +0 -0
  58. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-compiler/src/logical.rs +0 -0
  59. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-compiler/src/optimizer.rs +0 -0
  60. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-compiler/src/pattern.rs +0 -0
  61. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-compiler/src/physical.rs +0 -0
  62. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-compiler/src/plan_tree.rs +0 -0
  63. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-compiler/src/planner.rs +0 -0
  64. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/README.md +0 -0
  65. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/advanced.rs +0 -0
  66. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/concurrency_guard.rs +0 -0
  67. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/concurrent.rs +0 -0
  68. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/engine.rs +0 -0
  69. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/fixtures.rs +0 -0
  70. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/index_acceleration.rs +0 -0
  71. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/perf_smoke.rs +0 -0
  72. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/perf_smoke_baseline.json +0 -0
  73. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/query_implementations.rs +0 -0
  74. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/realistic.rs +0 -0
  75. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/scale.rs +0 -0
  76. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/temporal_spatial.rs +0 -0
  77. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/benches/wal.rs +0 -0
  78. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/builder.rs +0 -0
  79. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/compile.rs +0 -0
  80. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/explain.rs +0 -0
  81. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/graph_api.rs +0 -0
  82. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/mod.rs +0 -0
  83. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/procedures.rs +0 -0
  84. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/pull_mode.rs +0 -0
  85. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/replay.rs +0 -0
  86. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/row_projection.rs +0 -0
  87. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/show_pipeline.rs +0 -0
  88. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/database/stream.rs +0 -0
  89. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/durable_io.rs +0 -0
  90. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/error.rs +0 -0
  91. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/explain.rs +0 -0
  92. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/live_store.rs +0 -0
  93. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/named.rs +0 -0
  94. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/plan_cache.rs +0 -0
  95. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/snapshot/json.rs +0 -0
  96. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/snapshot/mod.rs +0 -0
  97. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/snapshot/store.rs +0 -0
  98. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/stream.rs +0 -0
  99. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/admin.rs +0 -0
  100. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/archive/format.rs +0 -0
  101. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/archive/lock.rs +0 -0
  102. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/archive/platform.rs +0 -0
  103. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/archive/worker.rs +0 -0
  104. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/archive.rs +0 -0
  105. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/mod.rs +0 -0
  106. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/src/wal/write_scope.rs +0 -0
  107. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/advanced_queries.rs +0 -0
  108. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/aggregation.rs +0 -0
  109. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/backend_stub.rs +0 -0
  110. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/binary.rs +0 -0
  111. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/builtin_namespaces.rs +0 -0
  112. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/constraints.rs +0 -0
  113. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/create.rs +0 -0
  114. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/docs_examples.rs +0 -0
  115. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/error_messages.rs +0 -0
  116. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/errors.rs +0 -0
  117. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/explain_profile.rs +0 -0
  118. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/expressions.rs +0 -0
  119. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/fulltext_index.rs +0 -0
  120. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/functions_extended.rs +0 -0
  121. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/index_acceleration.rs +0 -0
  122. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/invariants.rs +0 -0
  123. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/managed_snapshots.rs +0 -0
  124. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/match.rs +0 -0
  125. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/merge.rs +0 -0
  126. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/ordering.rs +0 -0
  127. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/parameters.rs +0 -0
  128. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/parser.rs +0 -0
  129. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/paths.rs +0 -0
  130. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/projection.rs +0 -0
  131. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/scale.rs +0 -0
  132. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/schema.rs +0 -0
  133. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/seeds.rs +0 -0
  134. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/snapshot.rs +0 -0
  135. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/spatial.rs +0 -0
  136. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/temporal.rs +0 -0
  137. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/test_helpers.rs +0 -0
  138. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/transactions.rs +0 -0
  139. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/types_advanced.rs +0 -0
  140. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/union.rs +0 -0
  141. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/update.rs +0 -0
  142. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/vector_index.rs +0 -0
  143. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/vectors.rs +0 -0
  144. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/wal.rs +0 -0
  145. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/where_clause.rs +0 -0
  146. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-database/tests/with.rs +0 -0
  147. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/errors.rs +0 -0
  148. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/binops.rs +0 -0
  149. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/bits_ns.rs +0 -0
  150. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/bytes_ns.rs +0 -0
  151. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/cast_ns.rs +0 -0
  152. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/crypto.rs +0 -0
  153. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/edge.rs +0 -0
  154. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/geo.rs +0 -0
  155. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/json_ns.rs +0 -0
  156. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/map_ns.rs +0 -0
  157. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/mod.rs +0 -0
  158. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/node.rs +0 -0
  159. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/number.rs +0 -0
  160. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/path.rs +0 -0
  161. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/string_ns.rs +0 -0
  162. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/text.rs +0 -0
  163. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/type_ns.rs +0 -0
  164. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/uuid_ns.rs +0 -0
  165. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/value.rs +0 -0
  166. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/builtins/vector_ns.rs +0 -0
  167. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/errors.rs +0 -0
  168. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/expr.rs +0 -0
  169. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/functions.rs +0 -0
  170. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/mod.rs +0 -0
  171. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/point.rs +0 -0
  172. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/regex.rs +0 -0
  173. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/eval/vector.rs +0 -0
  174. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/executor/aggregation.rs +0 -0
  175. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/executor/mod.rs +0 -0
  176. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/executor/optional.rs +0 -0
  177. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/executor/sort.rs +0 -0
  178. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/lib.rs +0 -0
  179. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/aggregate.rs +0 -0
  180. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/call_subquery.rs +0 -0
  181. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/columns.rs +0 -0
  182. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/context.rs +0 -0
  183. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/expand.rs +0 -0
  184. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/filter.rs +0 -0
  185. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/hydration.rs +0 -0
  186. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/mod.rs +0 -0
  187. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/mutable.rs +0 -0
  188. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/optional.rs +0 -0
  189. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/path.rs +0 -0
  190. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/projection.rs +0 -0
  191. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/scan.rs +0 -0
  192. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/shape.rs +0 -0
  193. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/sort.rs +0 -0
  194. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/source.rs +0 -0
  195. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/tests.rs +0 -0
  196. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/traits.rs +0 -0
  197. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/pull/union.rs +0 -0
  198. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/src/value.rs +0 -0
  199. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-executor/tests/error_messages.rs +0 -0
  200. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/Cargo.toml +0 -0
  201. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/cypher.pest +0 -0
  202. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/errors.rs +0 -0
  203. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/lib.rs +0 -0
  204. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/clauses.rs +0 -0
  205. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/expressions.rs +0 -0
  206. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/literals.rs +0 -0
  207. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/mod.rs +0 -0
  208. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/patterns.rs +0 -0
  209. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/query.rs +0 -0
  210. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/schema.rs +0 -0
  211. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/tests.rs +0 -0
  212. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/src/parser/util.rs +0 -0
  213. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-parser/tests/error_messages.rs +0 -0
  214. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/Cargo.toml +0 -0
  215. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/body.rs +0 -0
  216. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/codec.rs +0 -0
  217. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/columnar.rs +0 -0
  218. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/envelope.rs +0 -0
  219. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/errors.rs +0 -0
  220. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/format.rs +0 -0
  221. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/lib.rs +0 -0
  222. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/options.rs +0 -0
  223. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/tests.rs +0 -0
  224. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/transform.rs +0 -0
  225. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/src/view.rs +0 -0
  226. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-snapshot/tests/error_messages.rs +0 -0
  227. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/Cargo.toml +0 -0
  228. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/codec.rs +0 -0
  229. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/lib.rs +0 -0
  230. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/lock_table.rs +0 -0
  231. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/constraint_catalog.rs +0 -0
  232. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/constraint_enforce.rs +0 -0
  233. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/entity_index_store.rs +0 -0
  234. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/fulltext_index.rs +0 -0
  235. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/graph.rs +0 -0
  236. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/impls.rs +0 -0
  237. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/index_catalog.rs +0 -0
  238. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/mod.rs +0 -0
  239. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/point_index.rs +0 -0
  240. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/property_index.rs +0 -0
  241. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/secondary_index_maintenance.rs +0 -0
  242. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/snapshot.rs +0 -0
  243. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/sorted_property_index.rs +0 -0
  244. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/stats.rs +0 -0
  245. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/tests.rs +0 -0
  246. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/memory/text_index.rs +0 -0
  247. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/mutation.rs +0 -0
  248. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/snapshot.rs +0 -0
  249. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/traits.rs +0 -0
  250. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/binary/mod.rs +0 -0
  251. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/binary/tests.rs +0 -0
  252. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/binary/traits.rs +0 -0
  253. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/binary/types.rs +0 -0
  254. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/graph.rs +0 -0
  255. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/mod.rs +0 -0
  256. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/property_value.rs +0 -0
  257. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/spatial/distance.rs +0 -0
  258. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/spatial/mod.rs +0 -0
  259. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/spatial/point.rs +0 -0
  260. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/spatial/srid.rs +0 -0
  261. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/spatial/tests.rs +0 -0
  262. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/temporal/calendar.rs +0 -0
  263. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/temporal/date.rs +0 -0
  264. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/temporal/datetime.rs +0 -0
  265. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/temporal/duration.rs +0 -0
  266. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/temporal/format.rs +0 -0
  267. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/temporal/mod.rs +0 -0
  268. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/temporal/parsing.rs +0 -0
  269. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/temporal/time.rs +0 -0
  270. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/vector/build.rs +0 -0
  271. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/vector/mod.rs +0 -0
  272. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/vector/similarity.rs +0 -0
  273. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/vector/tests.rs +0 -0
  274. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/src/types/vector/types.rs +0 -0
  275. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-store/tests/error_messages.rs +0 -0
  276. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/Cargo.toml +0 -0
  277. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/codec/decode.rs +0 -0
  278. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/codec/encode.rs +0 -0
  279. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/codec/format.rs +0 -0
  280. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/codec/mod.rs +0 -0
  281. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/codec/tests.rs +0 -0
  282. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/config.rs +0 -0
  283. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/dir.rs +0 -0
  284. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/errors.rs +0 -0
  285. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/io.rs +0 -0
  286. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/lib.rs +0 -0
  287. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/lock.rs +0 -0
  288. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/lsn.rs +0 -0
  289. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/record.rs +0 -0
  290. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/recorder/errors.rs +0 -0
  291. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/recorder/mirror.rs +0 -0
  292. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/recorder/mod.rs +0 -0
  293. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/recorder/recorder.rs +0 -0
  294. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/recorder/tests.rs +0 -0
  295. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/replay.rs +0 -0
  296. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/segment.rs +0 -0
  297. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/testing.rs +0 -0
  298. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/wal/group_flusher.rs +0 -0
  299. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/wal/mod.rs +0 -0
  300. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/wal/tests.rs +0 -0
  301. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/src/wal/wal.rs +0 -0
  302. {lora_python-0.11.2 → lora_python-0.11.4}/crates/lora-wal/tests/error_messages.rs +0 -0
  303. {lora_python-0.11.2 → lora_python-0.11.4}/python/lora_python/__init__.py +0 -0
  304. {lora_python-0.11.2 → lora_python-0.11.4}/python/lora_python/_async.py +0 -0
  305. {lora_python-0.11.2 → lora_python-0.11.4}/python/lora_python/_native.pyi +0 -0
  306. {lora_python-0.11.2 → lora_python-0.11.4}/python/lora_python/py.typed +0 -0
  307. {lora_python-0.11.2 → lora_python-0.11.4}/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.4"
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.4"
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.4"
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.4"
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.4"
811
811
  dependencies = [
812
812
  "anyhow",
813
813
  "chacha20poly1305",
@@ -826,11 +826,12 @@ dependencies = [
826
826
  "serde_json",
827
827
  "thiserror",
828
828
  "tracing",
829
+ "web-time",
829
830
  ]
830
831
 
831
832
  [[package]]
832
833
  name = "lora-executor"
833
- version = "0.11.2"
834
+ version = "0.11.4"
834
835
  dependencies = [
835
836
  "blake3",
836
837
  "crc32fast",
@@ -848,11 +849,12 @@ dependencies = [
848
849
  "thiserror",
849
850
  "tracing",
850
851
  "unicode-normalization",
852
+ "web-time",
851
853
  ]
852
854
 
853
855
  [[package]]
854
856
  name = "lora-ffi"
855
- version = "0.11.2"
857
+ version = "0.11.4"
856
858
  dependencies = [
857
859
  "anyhow",
858
860
  "lora-binding-buffer",
@@ -864,7 +866,7 @@ dependencies = [
864
866
 
865
867
  [[package]]
866
868
  name = "lora-node"
867
- version = "0.11.2"
869
+ version = "0.11.4"
868
870
  dependencies = [
869
871
  "anyhow",
870
872
  "lora-binding-buffer",
@@ -879,7 +881,7 @@ dependencies = [
879
881
 
880
882
  [[package]]
881
883
  name = "lora-parser"
882
- version = "0.11.2"
884
+ version = "0.11.4"
883
885
  dependencies = [
884
886
  "lora-ast",
885
887
  "pest",
@@ -890,7 +892,7 @@ dependencies = [
890
892
 
891
893
  [[package]]
892
894
  name = "lora-python"
893
- version = "0.11.2"
895
+ version = "0.11.4"
894
896
  dependencies = [
895
897
  "anyhow",
896
898
  "lora-database",
@@ -902,7 +904,7 @@ dependencies = [
902
904
 
903
905
  [[package]]
904
906
  name = "lora-query-wasm"
905
- version = "0.11.2"
907
+ version = "0.11.4"
906
908
  dependencies = [
907
909
  "console_error_panic_hook",
908
910
  "js-sys",
@@ -915,7 +917,7 @@ dependencies = [
915
917
 
916
918
  [[package]]
917
919
  name = "lora-server"
918
- version = "0.11.2"
920
+ version = "0.11.4"
919
921
  dependencies = [
920
922
  "anyhow",
921
923
  "axum",
@@ -929,7 +931,7 @@ dependencies = [
929
931
 
930
932
  [[package]]
931
933
  name = "lora-snapshot"
932
- version = "0.11.2"
934
+ version = "0.11.4"
933
935
  dependencies = [
934
936
  "argon2",
935
937
  "blake3",
@@ -943,7 +945,7 @@ dependencies = [
943
945
 
944
946
  [[package]]
945
947
  name = "lora-store"
946
- version = "0.11.2"
948
+ version = "0.11.4"
947
949
  dependencies = [
948
950
  "crc32fast",
949
951
  "js-sys",
@@ -954,7 +956,7 @@ dependencies = [
954
956
 
955
957
  [[package]]
956
958
  name = "lora-wal"
957
- version = "0.11.2"
959
+ version = "0.11.4"
958
960
  dependencies = [
959
961
  "crc32fast",
960
962
  "lora-store",
@@ -964,7 +966,7 @@ dependencies = [
964
966
 
965
967
  [[package]]
966
968
  name = "lora-wasm"
967
- version = "0.11.2"
969
+ version = "0.11.4"
968
970
  dependencies = [
969
971
  "anyhow",
970
972
  "console_error_panic_hook",
@@ -980,7 +982,7 @@ dependencies = [
980
982
 
981
983
  [[package]]
982
984
  name = "lora_ruby"
983
- version = "0.11.2"
985
+ version = "0.11.4"
984
986
  dependencies = [
985
987
  "anyhow",
986
988
  "lora-database",
@@ -1932,6 +1934,16 @@ dependencies = [
1932
1934
  "wasm-bindgen",
1933
1935
  ]
1934
1936
 
1937
+ [[package]]
1938
+ name = "web-time"
1939
+ version = "1.1.0"
1940
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1941
+ checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
1942
+ dependencies = [
1943
+ "js-sys",
1944
+ "wasm-bindgen",
1945
+ ]
1946
+
1935
1947
  [[package]]
1936
1948
  name = "winapi"
1937
1949
  version = "0.3.9"
@@ -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.4"
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.4" }
19
+ lora-parser = { path = "crates/lora-parser", version = "=0.11.4" }
20
+ lora-analyzer = { path = "crates/lora-analyzer", version = "=0.11.4" }
21
+ lora-compiler = { path = "crates/lora-compiler", version = "=0.11.4" }
22
+ lora-store = { path = "crates/lora-store", version = "=0.11.4" }
23
+ lora-snapshot = { path = "crates/lora-snapshot", version = "=0.11.4", default-features = false }
24
+ lora-wal = { path = "crates/lora-wal", version = "=0.11.4" }
25
+ lora-executor = { path = "crates/lora-executor", version = "=0.11.4", default-features = false }
26
+ lora-database = { path = "crates/lora-database", version = "=0.11.4" }
27
+ lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.11.4" }
28
28
 
29
29
  # External crates.
30
30
  anyhow = "1"
@@ -48,3 +48,5 @@ getrandom = "0.2"
48
48
  argon2 = "0.5"
49
49
  flate2 = "1"
50
50
  rayon = "1"
51
+
52
+ web-time = "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.4
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"),
@@ -40,6 +40,7 @@ lora-wal.workspace = true
40
40
 
41
41
  serde_json.workspace = true
42
42
  tracing.workspace = true
43
+ web-time.workspace = true
43
44
 
44
45
  [dev-dependencies]
45
46
  criterion.workspace = true
@@ -10,7 +10,9 @@
10
10
 
11
11
  use std::any::Any;
12
12
  use std::collections::BTreeMap;
13
- use std::time::{Duration, Instant};
13
+ use std::time::Duration;
14
+
15
+ use web_time::Instant;
14
16
 
15
17
  use anyhow::Result;
16
18
  use lora_ast::Statement;
@@ -14,7 +14,7 @@
14
14
  use std::any::Any;
15
15
  use std::collections::BTreeMap;
16
16
  use std::sync::Arc;
17
- use std::time::Instant;
17
+ use web_time::Instant;
18
18
 
19
19
  use anyhow::Result;
20
20
  use lora_compiler::CompiledQuery;
@@ -14,7 +14,7 @@
14
14
  use std::any::Any;
15
15
  use std::collections::BTreeMap;
16
16
  use std::sync::Arc;
17
- use std::time::Instant;
17
+ use web_time::Instant;
18
18
 
19
19
  use lora_compiler::plan_tree_from_compiled;
20
20
  use lora_executor::{
@@ -16,7 +16,8 @@
16
16
 
17
17
  use std::any::Any;
18
18
  use std::collections::BTreeMap;
19
- use std::time::Instant;
19
+
20
+ use web_time::Instant;
20
21
 
21
22
  use anyhow::{anyhow, Result};
22
23
  use lora_ast::{
@@ -35,7 +35,9 @@
35
35
  use std::any::{Any, TypeId};
36
36
  use std::ops::{Deref, DerefMut};
37
37
  use std::sync::{Arc, MutexGuard, TryLockError};
38
- use std::time::{Duration, Instant};
38
+ use std::time::Duration;
39
+
40
+ use web_time::Instant;
39
41
 
40
42
  use anyhow::{anyhow, Result};
41
43
  use lora_executor::ExecutorError;
@@ -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,
@@ -1,7 +1,9 @@
1
1
  use std::collections::BTreeMap;
2
2
  use std::sync::atomic::{AtomicBool, Ordering};
3
3
  use std::sync::{Arc, Mutex, MutexGuard};
4
- use std::time::{Duration, Instant};
4
+ use std::time::Duration;
5
+
6
+ use web_time::Instant;
5
7
 
6
8
  use anyhow::Result;
7
9
  use thiserror::Error;
@@ -1,7 +1,8 @@
1
1
  use std::fs;
2
2
  use std::path::{Path, PathBuf};
3
3
  use std::sync::atomic::{AtomicU64, Ordering};
4
- use std::time::{SystemTime, UNIX_EPOCH};
4
+
5
+ use web_time::{SystemTime, UNIX_EPOCH};
5
6
 
6
7
  use lora_wal::WalError;
7
8
 
@@ -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
+ }
@@ -31,6 +31,7 @@ blake3.workspace = true
31
31
  crc32fast.workspace = true
32
32
  flate2.workspace = true
33
33
  getrandom.workspace = true
34
+ web-time.workspace = true
34
35
 
35
36
  [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
36
37
  rayon = { workspace = true, optional = true }
@@ -947,7 +947,7 @@ struct SimpleRng {
947
947
 
948
948
  impl SimpleRng {
949
949
  fn new() -> Self {
950
- use std::time::{SystemTime, UNIX_EPOCH};
950
+ use web_time::{SystemTime, UNIX_EPOCH};
951
951
  let seed = SystemTime::now()
952
952
  .duration_since(UNIX_EPOCH)
953
953
  .map(|d| d.as_nanos() as u64)
@@ -146,7 +146,7 @@ fn sign(args: &[LoraValue]) -> LoraValue {
146
146
  }
147
147
 
148
148
  fn random() -> LoraValue {
149
- use std::time::{SystemTime, UNIX_EPOCH};
149
+ use web_time::{SystemTime, UNIX_EPOCH};
150
150
  let nanos = SystemTime::now()
151
151
  .duration_since(UNIX_EPOCH)
152
152
  .map(|d| d.subsec_nanos())
@@ -52,7 +52,7 @@ fn now(args: &[LoraValue]) -> LoraValue {
52
52
  }
53
53
 
54
54
  fn timestamp() -> LoraValue {
55
- use std::time::{SystemTime, UNIX_EPOCH};
55
+ use web_time::{SystemTime, UNIX_EPOCH};
56
56
  let millis = SystemTime::now()
57
57
  .duration_since(UNIX_EPOCH)
58
58
  .map(|d| d.as_millis() as i64)
@@ -34,7 +34,8 @@
34
34
 
35
35
  use std::cmp::Ordering;
36
36
  use std::collections::{BTreeMap, BTreeSet};
37
- use std::time::Instant;
37
+
38
+ use web_time::Instant;
38
39
 
39
40
  use lora_analyzer::symbols::VarId;
40
41
  use lora_analyzer::{AggregateFunction, FunctionId, ResolvedExpr, ResolvedMapSelector};
@@ -20,8 +20,8 @@ use lora_compiler::CompiledQuery;
20
20
  use lora_store::GraphStorage;
21
21
 
22
22
  use std::collections::BTreeMap;
23
- use std::time::Instant;
24
23
  use tracing::{error, trace};
24
+ use web_time::Instant;
25
25
 
26
26
  use super::aggregate_rows;
27
27
  use super::helpers::{
@@ -25,8 +25,8 @@ use lora_compiler::CompiledQuery;
25
25
  use lora_store::{GraphStorageMut, NodeId, Properties};
26
26
 
27
27
  use std::collections::BTreeMap;
28
- use std::time::Instant;
29
28
  use tracing::{debug, error, trace};
29
+ use web_time::Instant;
30
30
 
31
31
  use super::aggregate_rows;
32
32
  use super::helpers::{
@@ -20,7 +20,8 @@
20
20
  use std::cell::RefCell;
21
21
  use std::collections::BTreeMap;
22
22
  use std::sync::{Arc, Mutex};
23
- use std::time::Instant;
23
+
24
+ use web_time::Instant;
24
25
 
25
26
  use lora_compiler::physical::PhysicalNodeId;
26
27
 
@@ -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.4"
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