Skip to content

fix(gfql): preserve open-range bindings serialization (#880) - #1016

Merged
lmeyerov merged 1 commit into
masterfrom
feat/gfql-880-residual-bindings
Apr 2, 2026
Merged

lmeyerov merged 1 commit into
masterfrom
feat/gfql-880-residual-bindings

Conversation

@lmeyerov

@lmeyerov lmeyerov commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Fix the native GFQL bindings-table serialization bug that was collapsing open-range/fixed-point edge segments back to a single hop during rows() / rows(binding_ops=...) replay.

What changed

  • normalize edge JSON serialization so range/fixed-point segments do not emit the constructor default hops=1
  • add native GFQL regressions for the IS6-style multihop continuation shape in both bare rows() and direct rows(binding_ops=...)
  • add benchmark-shaped Cypher regressions for IS1 / IS3 / IS6 shapes that currently work on master
  • add a Development changelog entry

Scope note

This clears the confirmed residual #880 multihop bindings bug behind IS6-style native/workaround paths.
IS7 remains the separate #996 OPTIONAL MATCH lane; this PR does not claim to solve it.

Verification

  • python3.12 -B -m pytest -q graphistry/tests/compute/test_ast.py graphistry/tests/test_compute_chain.py -k "open_range or ChainBindingsTable"
  • python3.12 -B -m pytest -q graphistry/tests/compute/gfql/cypher/test_lowering.py -k "is1_seed_city_projection_shape or is3_seed_expand_projection_shape or is6_open_range_continuation_projection_shape"

@lmeyerov
lmeyerov merged commit 2cd9ee2 into master Apr 2, 2026
73 of 99 checks passed
@lmeyerov
lmeyerov deleted the feat/gfql-880-residual-bindings branch April 2, 2026 00:37
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