Skip to content

fix(cypher): support scalar-only prefix MATCH reentry - #1034

Merged
lmeyerov merged 4 commits into
fix/issue-1000-multi-reentry-wherefrom
fix/issue-1000-prefix-scalar-reentry
Apr 3, 2026
Merged

lmeyerov merged 4 commits into
fix/issue-1000-multi-reentry-wherefrom
fix/issue-1000-prefix-scalar-reentry

Conversation

@lmeyerov

@lmeyerov lmeyerov commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Refs #1000

Stacked on #1032.

This Phase 5 slice removes the old bounded-reentry requirement that the prefix WITH stage project exactly one whole-row alias. Single-row scalar-only prefix shapes like MATCH (t) WITH t.id AS tid MATCH (p)-[:R]->(u {id: tid}) RETURN ... now compile and execute in the local Cypher compiler.

What's included:

  • scalar-only prefix WITH ... MATCH ... support for single-row prefix shapes
  • test amplification for multi-scalar carry, empty-prefix behavior, and multi-row fail-fast
  • fail-fast locking for unsupported scalar-prefix ORDER BY / LIMIT
  • small test-local DRY helper for the repeated prefix-reentry query skeleton
  • CHANGELOG.md prep

Benchmark progression:

  • exact IC6 now advances past the prefix scalar-carrier blocker
  • next blocker is the reentry comma-pattern fanout around post

Focused validation run locally on April 2, 2026:

  • python3.12 -B -m pytest -q graphistry/tests/compute/gfql/cypher/test_lowering.py -k "scalar_only_prefix_with_match_reentry or issue_1000_ic6_after_phase5_now_stops_at_reentry_comma_pattern_fanout" -> 8 passed, 1 skipped, 632 deselected
  • python3.12 -B -m pytest -q graphistry/tests/compute/gfql/cypher/test_parser.py -k "reentry or unwind" -> 11 passed, 84 deselected
  • python3.12 -B -m pytest -q graphistry/tests/compute/gfql/cypher/test_lowering.py -k "multiple_post_with_where_clauses or scalar_only_prefix_with_match_reentry or post_with_match_collect_unwind_match or issue_1000_ic6_after_phase5_now_stops_at_reentry_comma_pattern_fanout" -> 17 passed, 2 skipped, 622 deselected
  • ruff check graphistry/compute/gfql/cypher/lowering.py graphistry/compute/gfql_unified.py graphistry/tests/compute/gfql/cypher/test_lowering.py graphistry/tests/compute/gfql/cypher/test_parser.py -> passed

@lmeyerov
lmeyerov force-pushed the fix/issue-1000-multi-reentry-where branch from 817b253 to 36e1906 Compare April 3, 2026 03:18
@lmeyerov
lmeyerov force-pushed the fix/issue-1000-prefix-scalar-reentry branch from 5a5e9da to e112f8a Compare April 3, 2026 03:18
@lmeyerov
lmeyerov marked this pull request as ready for review April 3, 2026 08:02
@lmeyerov
lmeyerov merged commit 99aa2a2 into fix/issue-1000-multi-reentry-where Apr 3, 2026
99 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant