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:

No activity

Activity on this issue will appear here.

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