Skip to content

GFQL Cypher: count(*) trail uniqueness + list-param equality leak (round-006 umbrella) #1905

Description

@lmeyerov

Round-006 cartesian/params/labels probe (~85 queries × both engines @ d7cf23d; scripts in session scratchpad probe-r6-cart/).

SILENT-WRONG (both engines):

  1. Bare count(*) ignores relationship uniqueness the row lane enforces — one MATCH, two cardinalities again but in the fixed-hop/comma domain: self-loop fixture MATCH (a)-->(b)-->(c) rows=1 vs count()=2; branching comma (a)-->(b), (a)-->(c) rows=2 vs count()=9 (out-deg² products incl. illegal same-edge pairs); grouped branching count equally wrong. count(a)/sum/collect/count(DISTINCT)/chain-grouped counts are all correct — only the bare-count lane rides the edge product. A guard exists for aggregates needing path multiplicity (typed decline) — count(*) slips around it.
  2. List-valued $param in =/property-map runs as isin (WHERE n.v = $l, l=[30,70] → matches members; oracle: scalar=list false → 0 rows). Literal spelling differs too (pandas 0 rows conformant; polars typed error) — param substitution into filter_by_dict semantics leak.

Typed-gap deviations: 3. Nonexistent node label = hard GFQLSchemaError column-not-found (incl. OPTIONAL arms, where openCypher says all-null rows); relationships correctly 0-row. Pandas OPTIONAL-arm error leaks binder-internal column name. 4. String-param vs numeric column: pandas typed; polars RAW polars.ComputeError (error-contract divergence).

NIE inventory: comma-cartesian is node-only (disconnected relationship arms decline; MATCH (a:X) MATCH (b:Y) rejected while comma form works); polars fall-offs (IN $empty/mixed lists, XOR over labels, labels() projection).

QUIET inventory: shared-alias joins with correct trail semantics, label conjunction/OR/NOT, params in all positions incl. shadowing, missing-param typed. Fix order: 1 → 2 → 4 (error contract) → 3 (needs semantics decision: strict-schema vs openCypher missing-as-absent — flag for owner).

Activity

  1. added 4 commits that reference this issue on Aug 15, 2026
  2. lmeyerov commented on Aug 18, 2026

    @lmeyerov
    ContributorAuthor

    Umbrella verified served on master e6625ed28 — every item is either fixed or split into its own open issue; recommending close after review.

  3. lmeyerov commented on Aug 18, 2026

    @lmeyerov
    ContributorAuthor

    Closing: verified fixed on master e6625ed28 by the 2026-08 stack — empirical repro + hand-computed oracle in the verification comment above. Residual sub-items, where any, are tracked in the successor issues named there (#1916, #1908, #1906, #1934-#1938).

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions