Skip to content

feat(gfql): preserve collected node identity through reentry - #2261

Merged
lmeyerov merged 25 commits into
masterfrom
work/2249-stage2-identity-polars
Nov 1, 2026
Merged

lmeyerov merged 25 commits into
masterfrom
work/2249-stage2-identity-polars

Conversation

@lmeyerov

@lmeyerov lmeyerov commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Stage 2 of #2249. Collected nodes keep their identity through WITH collect(node) ... MATCH ... WHERE candidate IN nodes re-entry on pandas, Polars and cuDF. Grouped whole-entity keys (RETURN b, count(*), RETURN rel, count(*)) also stay identity-distinct instead of collapsing to null.

  • Row-token re-entry lifecycle (Stage 1) plus native collected-node identity membership on pandas and Polars.
  • Alias and property provenance repair. Ordinary named-node Polars paths keep their baseline result width.
  • Typed null alias-marker columns via Engine.null_column: Polars and cuDF are dtype-preserving, and pandas keeps the object None sentinel for parity.
  • entity_props._false_mask builds its all-False mask from isna(). The old (base == True) & False raised ArrowTypeError on cuDF integer id columns.

Rebased onto master 5819f46b after #2258 landed. The duplicate #2258 cherry-pick is gone.

Evidence at head b9dc6b6b

  • Hosted CI run 41293025708: 93/93 checks green, including tck-gfql (4289 passed, 0 failed) and all 13 gfql-routes-off modes with empty divergence ledgers. RTD is green.
  • GPU gate in graphistry/test-rapids-official:26.02-gfql (cuDF 26.02) with an identity-asserted runner. The set is all 100 cuDF and Polars-GPU ids collected from the 11 touched test files with TEST_CUDF=1 TEST_POLARS_GPU=1. Skips count as failures. Result: 98 passed, 2 failed, 0 skipped.
  • New regression test test_append_property_segments_integer_alias_typed_false_mask[pandas,cudf] passes on both engines.

Follow-ups

Part of #2249.

🤖 Generated with Claude Code

@lmeyerov
lmeyerov force-pushed the fix/gfql-2252-scalar-carry branch from e131383 to ee08a09 Compare November 1, 2026 00:37
Base automatically changed from fix/gfql-2252-scalar-carry to master November 1, 2026 01:00
@lmeyerov
lmeyerov force-pushed the work/2249-stage2-identity-polars branch from 0121abb to 398a684 Compare November 1, 2026 02:54
@lmeyerov
lmeyerov force-pushed the work/2249-stage2-identity-polars branch from 2d403ba to 7c5d405 Compare November 1, 2026 07:48
@lmeyerov
lmeyerov marked this pull request as ready for review November 1, 2026 09:57
@lmeyerov
lmeyerov merged commit 55cf673 into master Nov 1, 2026
93 checks passed
@lmeyerov
lmeyerov deleted the work/2249-stage2-identity-polars branch November 1, 2026 09:57
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