Skip to content

feat(gfql): support Cypher backtick identifiers - #2198

Merged
lmeyerov merged 1 commit into
masterfrom
feat/gfql-backtick-identifiers
Oct 15, 2026
Merged

lmeyerov merged 1 commit into
masterfrom
feat/gfql-backtick-identifiers

Conversation

@lmeyerov

@lmeyerov lmeyerov commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Fixes GFQL Cypher: no backtick identifiers, so columns with "." or "-" in the name cannot be referenced #2195 by preserving raw names in Cypher backtick identifiers across parsing, expression ASTs, binding, lowering, and rendering.
  • Supports dotted names, hyphens, spaces, reserved words, labels, relationship types, aliases, map keys, and doubled-backtick escapes.
  • Keeps unterminated backticks as syntax errors and preserves existing unquoted dotted-property semantics.
  • Treats quoted atomic identifiers such as `y.z` as one projected alias for WHERE and ORDER BY.
  • Preserves quoted expression-local bindings through rewrites and renders expression-reserved words (ANY, ALL, NONE, SINGLE) safely.

Exact head: 4c4aa4b186d95a7b133b61801261df41a86b08a5
Base: master@0c71cc4bb8281ecc1f07de8657c4ec45c737a5c1

Evidence

python -m pytest -q \
  graphistry/tests/compute/gfql/cypher/test_grammar_invariants.py \
  graphistry/tests/compute/gfql/cypher/test_differential_grammar_parity.py \
  graphistry/tests/compute/gfql/cypher/test_parser.py \
  graphistry/tests/compute/gfql/cypher/test_backtick_identifiers.py
# 258 passed, 1 skipped

python -m pytest -q graphistry/tests/compute/gfql/cypher
# 4075 passed, 935 skipped, 15 xfailed

python -m ruff check <changed files>
# All checks passed

python ./bin/ci/ci_type_hygiene_guard.py
# Type-hygiene guard OK (4446 grandfathered finding(s), no growth)

python ./bin/ci/ci_comment_density_guard.py
# Comment-encoding guard OK (1150 grandfathered finding(s), no growth)

git diff --check
# clean

Pandas E2E covers dotted properties, escaped backticks, WHERE filters, WITH aliases, ORDER BY, projection, expression-reserved aliases, and quoted comprehension locals. Paired TCK promoted cases pass. Exact-head Polars/cuDF and hosted CI/RTD validation follow this amendment.

Closes #2195.

@lmeyerov
lmeyerov force-pushed the feat/gfql-backtick-identifiers branch 2 times, most recently from 21b9bc3 to 42f560a Compare October 14, 2026 12:05
@lmeyerov
lmeyerov force-pushed the feat/gfql-backtick-identifiers branch 4 times, most recently from 4e889b9 to c36e11e Compare October 14, 2026 17:17
@lmeyerov
lmeyerov force-pushed the feat/gfql-backtick-identifiers branch from c36e11e to 4c4aa4b Compare October 14, 2026 17:41
@lmeyerov
lmeyerov merged commit 3292849 into master Oct 15, 2026
93 checks passed
lmeyerov added a commit to graphistry/tck-gfql that referenced this pull request Oct 15, 2026
Promote expr-map1-5-1 through expr-map1-5-6 for the pygraphistry backtick-quoted identifier support in graphistry/pygraphistry#2198. Refresh the promoted-oracle contracts and generated manifest/report expectations.
@lmeyerov
lmeyerov deleted the feat/gfql-backtick-identifiers branch October 17, 2026 14:25
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.

GFQL Cypher: no backtick identifiers, so columns with "." or "-" in the name cannot be referenced

1 participant