Skip to content

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

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions