fix(gfql): apply single-alias predicate pushdown masks by position (#2020) - #2045
Merged
Conversation
Contributor
Author
|
Real-GPU receipt (dgx-spark, RAPIDS 26.02 image, cudf 26.02.01): |
Contributor
Author
lmeyerov
force-pushed
the
fix/gfql-2020-alias-prefilter-alignment
branch
from
September 5, 2026 20:11
84ce9d0 to
90d018c
Compare
…2020) After an earlier pushdown narrowed an alias frame, the next mask (evaluated on a renamed view) carried a fresh RangeIndex while the frame kept filtered labels, so pandas/cuDF raised Unalignable boolean Series. A mask computed on the same rows is positional by contract; keep rows by position. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
lmeyerov
force-pushed
the
fix/gfql-2020-alias-prefilter-alignment
branch
from
September 5, 2026 20:14
90d018c to
9950d68
Compare
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MATCH (a)-[e]->(t) WHERE a.type IN [...] AND e.e_type IN [...] AND t.type IN [...] RETURN t.idraisedGFQLTypeError [invalid-node-reference] ... Unalignable boolean Series provided as indexeron pandas (and cuDF) while polars answered. The single-alias predicate pushdown filtered the alias frame withframe.loc[mask]; once an earlier pushdown had narrowed that frame, its labels were no longer a RangeIndex, while the mask evaluated on the renamed view came back with a fresh positional index, so label alignment failed. A mask computed on the same rows is positional by contract, so both pushdown sites (expression and searchAny) now keep rows by position through one helper typed with the repo's engine-agnostic aliases.Pins (
test_alias_prefilter_alignment_2020.py): the issue's query returns['tx1']on pandas, polars, cuDF; equals the scalar=form; and survives a node frame whose index is neither ranged nor ordered. Row-pipeline, lowering, alias-scoping, optional-match and multiplicity suites pass locally (1885; the two cuDF t6 lowering failures are the dev-box libcublas environment, identical on master). Real-GPU run to follow on dgx.Fixes #2020.
🤖 Generated with Claude Code
https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA