Skip to content

Route simple OPTIONAL MATCH through native physical dispatch#1463

Merged
lmeyerov merged 1 commit into
masterfrom
fix/native-optional-match-1460
May 15, 2026
Merged

Route simple OPTIONAL MATCH through native physical dispatch#1463
lmeyerov merged 1 commit into
masterfrom
fix/native-optional-match-1460

Conversation

@lmeyerov
Copy link
Copy Markdown
Contributor

@lmeyerov lmeyerov commented May 15, 2026

Summary

Fixes #1460.

Simple input-free top-level OPTIONAL MATCH now gets a native logical plan and dispatches through the same-path physical route instead of _execute_compiled_query_compat_non_union().

Scope

  • Plan first-clause top-level OPTIONAL MATCH as PatternMatch(optional=True, arm_id="top_level_optional_0").
  • Keep non-top-level/reentry optional shapes deferred for the follow-up deletion lane.
  • Add runtime cutover tests proving matched and unmatched/null-extension top-level optional queries bypass the compat executor.
  • Update changelog.

Validation

  • python3 -m pytest -q graphistry/tests/compute/gfql/test_logical_planner.py graphistry/tests/compute/gfql/test_runtime_physical_cutover.py graphistry/tests/compute/gfql/cypher/test_lowering.py::test_compiled_query_sets_logical_plan_route_for_top_level_optional_shape graphistry/tests/compute/gfql/cypher/test_lowering.py::test_compiled_query_sets_logical_plan_defer_reason_for_optional_reentry_shape -> 37 passed
  • python3 -m pytest -q graphistry/tests/compute/gfql/cypher/test_lowering.py graphistry/tests/compute/gfql/test_runtime_physical_cutover.py graphistry/tests/compute/gfql/test_logical_planner.py graphistry/tests/compute/gfql/test_physical_planner.py -k 'not cudf' -> 976 passed, 12 skipped, 111 deselected
  • ./bin/ruff.sh graphistry/compute/gfql/logical_planner.py graphistry/compute/gfql/cypher/lowering.py graphistry/tests/compute/gfql/test_logical_planner.py graphistry/tests/compute/gfql/cypher/test_lowering.py graphistry/tests/compute/gfql/test_runtime_physical_cutover.py -> green
  • ./bin/typecheck.sh -> green
  • git diff --check -> clean
  • DGX RAPIDS 25.02: RAPIDS_VERSION=25.02 PROFILE=gfql WITH_GPU=1 WITH_IMAGE_BUILD=0 TEST_FILES="graphistry/tests/compute/gfql graphistry/tests/compute/test_gfql.py" docker/test-rapids-official-local.sh -> 2368 passed, 22 skipped, 15 xfailed
  • DGX RAPIDS 26.02: RAPIDS_VERSION=26.02 PROFILE=gfql WITH_GPU=1 WITH_IMAGE_BUILD=1 TEST_FILES="graphistry/tests/compute/gfql graphistry/tests/compute/test_gfql.py" docker/test-rapids-official-local.sh -> 2368 passed, 22 skipped, 15 xfailed
  • Review skill loop: 2 waves, credentials gate clean, no carried findings

Local cuDF/GPU suites fail on this workstation with cudaErrorNoDevice; DGX GPU validation covered both requested RAPIDS versions.

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.

D6 deletion prep: native route for simple top-level OPTIONAL MATCH fallback

1 participant