Skip to content

v0.4.0

Choose a tag to compare

@prrao87 prrao87 released this 28 Oct 23:59
· 18 commits to main since this release
c3c3ea5

What's Changed

Breaking (Rust):

  • #70: GraphConfig's node and relationship mappings are private. Code that wrote to them directly must use GraphConfigBuilder. A deserialized config is now validated like a built one, so a saved config with an unnormalized key, or a relationship whose endpoint label has no node mapping, fails to load. The Python API is unaffected.

Query results that change:

  • #82: within one MATCH, two single-hop relationships of the same type no longer bind the same edge, so some queries return fewer rows (openCypher relationship uniqueness).
  • #83: a relationship variable written again, as in (a)-[r:KNOWS]->(b), (c)-[r]->(d), matches that same relationship. It used to return wrong rows or fail to plan. Reusing one in a variable-length segment now raises an error within one MATCH.

Python:

  • #71: the public classes are typed, documented Python classes wrapping the compiled ones. Names, signatures and behaviour are unchanged. ExecutionStrategy, SqlDialect and DistanceMetric are IntEnums with the same members and values, and passing the wrong class raises TypeError naming the parameter. The API reference is generated from the docstrings.

Fixes: #65 (distinct counts on empty input), #66 (physical column casing in graph scans), #67 (one trailing semicolon accepted).

Docs: #63, #64, #68, #69.

PRs

  • docs(rust): show with_execution_deadline in the API docs by @prrao87 in #63
  • docs: move documentation links to lance-csr.hdclabs.ai by @prrao87 in #64
  • fix(parser): accept one trailing Cypher semicolon by @stugorf in #67
  • fix(planner): preserve physical column casing in graph scans by @stugorf in #66
  • fix(query): preserve empty-input distinct counts by @stugorf in #65
  • docs: sync benchmark tables for lance-csr 0.3.1 by @prrao87 in #69
  • docs: explain contribution rationale and benchmark harness by @prrao87 in #68
  • refactor(config)!: make graph config mappings private by @prrao87 in #70
  • refactor(python): wrap the compiled classes in typed, documented python classes by @prrao87 in #71
  • fix(planner): bind each relationship once per match by @prrao87 in #82
  • fix(planner): match a reused relationship variable as the same edge by @prrao87 in #83
  • chore: bump version to 0.4.0 by @prrao87 in #84

Full Changelog: v0.3.1...v0.4.0