Skip to content

Fix Cypher node identity column handling - #1504

Merged
lmeyerov merged 1 commit into
masterfrom
issue-1490-direct-cypher-node-id
May 17, 2026
Merged

lmeyerov merged 1 commit into
masterfrom
issue-1490-direct-cypher-node-id

Conversation

@lmeyerov

@lmeyerov lmeyerov commented May 17, 2026 •

Copy link
Copy Markdown
Contributor

Closes #1490

Summary

  • Replaces hardcoded internal node-identity id references in Cypher lowering with an internal __gfql_node_id__ token.
  • Resolves that token to the graph's bound node column at same-path and row-pipeline execution time.
  • Keeps a user data property named id projectable and distinct from internal node identity.
  • Adds pandas and cuDF regressions for repeated node aliases, distinct/grouped node identity, and id property projection.

Notes

Validation

  • python3 -m pytest -q graphistry/tests/compute/gfql/cypher/test_lowering.py::test_lower_match_query_rewrites_duplicate_node_aliases_to_internal_identity_checks graphistry/tests/compute/gfql/cypher/test_lowering.py::test_string_cypher_duplicate_node_alias_identity_shape_uses_bound_node_column graphistry/tests/compute/gfql/cypher/test_lowering.py::test_issue_1490_repeated_node_alias_uses_bound_node_identity graphistry/tests/compute/gfql/cypher/test_lowering.py::test_issue_1490_user_id_property_remains_projectable_with_custom_identity graphistry/tests/compute/gfql/cypher/test_lowering.py::test_issue_1490_distinct_and_grouping_use_bound_identity_not_user_id -> 5 passed
  • python3 -m pytest -q graphistry/tests/compute/gfql/cypher/test_lowering.py -k 'issue_1490 or duplicate_node_alias or custom_node_column_name or count_distinct or grouping_use_bound_identity or whole_row_grouping' -> 13 passed
  • python3 -m pytest -q graphistry/tests/compute/gfql/cypher/test_lowering.py -k 'not cudf' -> 949 passed, 12 skipped, 113 deselected
  • ./bin/ruff.sh -> passed
  • ./bin/typecheck.sh -> passed
  • git diff --check -> passed
  • python3 bin/ci_cypher_surface_guard.py -> passed (lowering.py at 9038/9038 baseline)
  • DGX RAPIDS 25.02 (PROFILE=gfql, GPU): Cypher engine hardcodes id as the node-identity column #1490 cuDF regression + two GFQL cuDF smokes -> 3 passed
  • DGX RAPIDS 26.02 (PROFILE=gfql, GPU): Cypher engine hardcodes id as the node-identity column #1490 cuDF regression + two GFQL cuDF smokes -> 3 passed
  • TCK coordination PR Update direct Cypher match7-24 xfail contract tck-gfql#135 local validation against this branch:
    • PYTHONPATH=/home/lmeyerov/Work/pygraphistry2 python3 -m pytest -q tests/cypher_tck/test_tck_runner.py::test_direct_cypher_xfail_contract --maxfail=1 -> 724 passed
    • PYTHONPATH=/home/lmeyerov/Work/pygraphistry2 python3 -m pytest -q tests/cypher_tck/test_direct_cypher_contract_fastfail.py::test_direct_cypher_nonvalidation_outcome_snapshot_fastfail -> 1 passed
    • PYTHONPATH=/home/lmeyerov/Work/pygraphistry2 python3 -m pytest -q tests/cypher_tck/test_report.py::test_direct_cypher_nonvalidation_samples_are_stable_and_bounded tests/cypher_tck/test_report.py::test_build_report_includes_gap_priority_sections -> 2 passed
  • GitHub CI: green after rerunning paired tck-gfql jobs (76419264072, 76419266901)

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.

Cypher engine hardcodes id as the node-identity column

1 participant