Summary
MATCH (n), (m) RETURN n.num, m.num used to fail with:
GFQLValidationError: Comma-separated Cypher MATCH patterns are only supported...
That gap blocked comma-separated node-only MATCH cartesian products, including TCK scenarios like match1-5, return4-9, and parts of the shortest-path benchmark family.
Status
Resolved on April 2, 2026 by PR #1019.
What landed:
- direct Cypher lowering/runtime support for disconnected comma-separated node-only
MATCH cartesian products
- row/runtime support for node-only
rows(binding_ops=...)
- coverage for scalar projection, row filters, aggregates, whole-row projection,
WITH, and ORDER BY
Context
PR #986 added multi-alias scalar RETURN for connected single-hop patterns (MATCH (a)-[:R]->(b) RETURN a.id, b.id). Cartesian products (MATCH (n), (m)) are a different shape because there is no edge connecting the aliases, so the implementation needs a node-set cross join rather than an edge-backed bindings table.
Related
Summary
MATCH (n), (m) RETURN n.num, m.numused to fail with:That gap blocked comma-separated node-only MATCH cartesian products, including TCK scenarios like
match1-5,return4-9, and parts of the shortest-path benchmark family.Status
Resolved on April 2, 2026 by PR #1019.
What landed:
MATCHcartesian productsrows(binding_ops=...)WITH, andORDER BYContext
PR #986 added multi-alias scalar RETURN for connected single-hop patterns (
MATCH (a)-[:R]->(b) RETURN a.id, b.id). Cartesian products (MATCH (n), (m)) are a different shape because there is no edge connecting the aliases, so the implementation needs a node-set cross join rather than an edge-backed bindings table.Related