Skip to content

GFQL deletion: shrink row-pipeline string-expression fallback for map/list AST values #1469

Closed

Description

@lmeyerov

Summary

The row-pipeline expression evaluator has an AST path, but it still drops back to the legacy string evaluator for some structured/vector values. A concrete deletion target is to make the AST path cover map/list vector values and then shrink _gfql_eval_string_expr fallback usage.

Current evidence

On current origin/master:

  • graphistry/compute/gfql/row/pipeline.py::_gfql_eval_expr_ast() returns (False, None) for MapLiteral values where the evaluated value has .astype, with the comment: Vector map values are deferred to legacy evaluator for now.
  • _gfql_eval_string_expr() remains the fallback bridge and is called from projection/order/explode paths.
  • Existing tests compare AST output to legacy_out = ctx._gfql_eval_string_expr(...).

Goal

Promote the remaining safe structured expression cases to the AST evaluator and delete the corresponding legacy string-eval fallback branch/tests.

Scope

  • Add pandas/cuDF coverage for map/list literals with vector-valued entries where the fallback is currently used.
  • Implement AST evaluator handling for those values, preserving null semantics.
  • Remove the Vector map values are deferred to legacy evaluator for now fallback when covered.
  • Narrow _gfql_eval_string_expr() callers or add explicit unsupported errors where AST cannot cover the shape.

Out of scope

  • Full expression engine rewrite.
  • Public API changes.
  • Non-GFQL row pipeline work.

Acceptance

  • The targeted map/list vector cases no longer call _gfql_eval_string_expr().
  • Legacy comparison tests are rewritten to assert AST-native behavior instead of comparing to the legacy evaluator.
  • Focused pandas tests pass; cuDF coverage runs where applicable.
  • CI and relevant DGX GFQL/cuDF validation pass if cuDF path changes.

Related

Activity

  1. lmeyerov commented on May 17, 2026

    @lmeyerov
    ContributorAuthor

    #1469 closeout receipt

    Closed by merged PR #1473:
    #1473

    Merge receipt:

    • Merge commit: 592e34a66e40b79f79029d1620911f63158c99ed
    • Final PR head before merge: 48806db98924c81c71b4eaae5de9dfe219c392f5

    What landed:

    • Row-pipeline AST support for MapLiteral with vector-valued entries.
    • Engine-aware row-value materialization for list literal fallback, so list-of-vector-valued maps can stay native on pandas/cuDF.
    • Cypher fail-fast guard for aggregate calls nested inside map literals, covering both RETURN and WITH, to avoid wrong-row drift.
    • CHANGELOG.md entry.

    Validation:

    • Local amplified focused pytest: 6 passed.
    • Local row-pipeline non-cuDF suite: 183 passed, 17 deselected.
    • ruff, typecheck, py_compile, and ci_cypher_surface_guard: green.
    • DGX RAPIDS 26.02 targeted cuDF amplified test: 1 passed with import smoke cudf 26.02.01, cuml 26.02.00.
    • DGX RAPIDS 25.02 targeted cuDF amplified test: 1 passed, 1 warning with import smoke cudf 25.02.02, cuml 25.02.01; warning was the known ptxcompiler driver/runtime warning.
    • Full local TCK against companion branch: 3963 passed, 731 xfailed.
    • GitHub CI green after amplification and rebases, including tck-gfql and ReadTheDocs.
    • Review protocol converged; later amplification found no product bug, only an invalid initial test premise that was corrected to an AST-visit assertion.

    Coordination note:

    • PR CI used the same-named graphistry/tck-gfql companion branch issue-1469-row-pipeline-map-list-ast for the direct-Cypher rebaseline where with5-2 now returns expected rows. Keep/land/sync that TCK rebaseline so future master CI does not fall back to stale TCK main.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions