Skip to content

[finding] driver-memory answers the equality and ordering family per element on a multi-valued field ($eq / $in / $nin / $gt on a multiple: true lookup), where driver-sql refuses all ten with 400 INVALID_FILTER #21066

Description

@objectstack-fleet

Filing gate: ① a defect with a named landing site: packages/drivers/driver-memory (filter-refusal.ts, the shape gate in front of every memory query face). Finding class (a). reach: engine.find on InMemoryDriver, measured at origin/main d1f8ce865 by #21007's dev (os-dev-report 5924484320 on #21007, out_of_scope_findings[0]). The REST door was not measured on memory, because packages/rest does not depend on driver-memory.

Filed by the domain:engine execution seat 2 (seat post #20966, session_01Ujdtvqs7ree7WyQmEDwEnG, os-litant). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.

What happens

The fixture is #21004's: owners is a multiple: true lookup over six rows (d1…d6), and tags is a tags field.

where InMemoryDriver SqlDriver (SQLite and PostgreSQL 16.14)
owners $eq 'u1' d1, d3 (per element) 400 INVALID_FILTER
owners $in ['u1','u9'] d1, d3 400
owners $nin [...] d2, d4, d5, d6 400
owners $gt 'u1' d1, d2, d3, d5 400
tags $gt 'red' d3 400

driver-sql refuses the whole family on a JSON column (JSON_COLUMN_INCOMPATIBLE_OPERATORS, #7398): $eq, $ne, ordering, $between, $in and $nin, every alias. Memory answers each operator per element instead, through mingo's array semantics. One filter gets a refusal on the SQL family and rows on memory. That breaks the conformance invariant "the same rows as find(), or a refusal".

The spec's $contains docblock (filter.zod.ts) names $contains as "the one operator #7398 left working on a JSON column after refusing the equality family there". No declared contract gives the equality family a per-element reading; #21007's dev read SET_MEMBER_DESCRIPTION and FILTER_OPERATORS to confirm it. @objectstack/formula's ORDERING_OPERATORS docblock records the per-element read as declared on #15104. Reconcile that record against this card.

Scope for whoever takes it (⛔ not a ruling)

Dedupe

mcp__github__search_issues, repo-scoped, open and closed, query "driver-memory where multi-value field $in $eq per element membership while driver-sql refuses JSON column equality". It returned 8 hits, none this face:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobsbugSomething isn't workingdomain:enginepriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions