omnigraph/crates/omnigraph/tests
Ragnor Comerford 853691c70e
Fix join alignment for traversal-introduced bindings with Lance filter pushdown
The IR lowering previously emitted independent NodeScans for every binding
in a match clause, even when bindings were connected by traversals. This
created O(N×M) cross-joins followed by cycle-closing filters — correct but
extremely slow for large datasets.

Two changes fix this by design:

1. **Deferred bindings** — When multiple bindings are connected by
   traversals, only the first-declared binding gets a NodeScan. The rest
   are introduced by Expand operations, eliminating cross-joins entirely.

2. **Filter fusion into Expand** — Deferred binding filters are attached
   directly to IROp::Expand (new `dst_filters` field) and pushed into
   Lance SQL during hydrate_nodes(), so the storage layer skips
   non-matching rows. Non-pushable filters (list-contains, FTS) fall back
   to in-memory application after hconcat.

For a query like:
  match { $p: Person  $p worksAt $c  $c: Company { name: "Acme" } }

Old plan: NodeScan($p) → NodeScan($c) → cross-join → Expand(__temp) → cycle-close
New plan: NodeScan($p) → Expand($p→$c, Lance SQL: id IN (...) AND name='Acme')

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 12:10:50 +02:00
..
fixtures Merge pull request #6 from ModernRelay/claude/omnigraph-aggregates-a53rG 2026-04-13 10:26:07 +02:00
helpers Support multi-statement mutations (insert + edge in one query) 2026-04-11 20:27:51 +00:00
aggregation.rs Implement aggregate execution with wide-batch model 2026-04-12 20:59:13 +00:00
branching.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
changes.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
consistency.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
end_to_end.rs Support multi-statement mutations (insert + edge in one query) 2026-04-11 20:27:51 +00:00
export.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
failpoints.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
lance_version_columns.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
point_in_time.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
runs.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
s3_storage.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
search.rs Initial public Omnigraph repository 2026-04-10 20:49:41 +03:00
traversal.rs Fix join alignment for traversal-introduced bindings with Lance filter pushdown 2026-04-13 12:10:50 +02:00