Skip to content

Inline query with declared-but-unbound param matches all rows; stored-query invoke errors #207

@aaltshuler

Description

@aaltshuler

Found by the RFC-009 Phase 1 parity matrix (which pins it as agreeing behavior across embedded/remote arms — this is a cross-PATH asymmetry, not an arm divergence).

Observed:

  • Inline execution (omnigraph query --query file.gq --name get_person with no --params, or the /read endpoint): a declared-but-unbound $name does not error — the filter effectively drops and every row returns. Both embedded and remote arms agree.
  • Stored-query invoke (POST /graphs/{g}/queries/{name}): the same situation hard-errors parameter 'x' not provided (observed live on the Railway deployment with stale_patterns).

Why it matters: silently widening a filter on a missing binding is surprising (a typo'd param name in a script returns everything instead of failing), and the invoke path proves the system already knows how to be strict. Candidate fix: make inline execution require declared params too (loud), as a deliberate release-noted change — the parity matrix row parity_errors_share_exit_codes currently pins the permissive behavior and will need its expectation flipped in the same PR.

Refs: crates/omnigraph-cli/tests/parity_matrix.rs (the pinning row + comment).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions