Skip to content

drivers(turso): RemoteTransport 条件层的 $-算子键被当列名编译成静默空集 —— SqlDriver 已按 #5348 拒收,remote 是唯一剩余面(cloud#1077 移交) #5769

Closed

Description

@claude

Part of objectstack-ai/cloud#1077(原单在 cloud;随 #4645 Phase A/B 驱动迁移,driver-turso 已迁回本仓,落点现为 packages/drivers/driver-turso/src/remote-transport.ts。cloud 侧已无该代码面,原单关闭移交,完整实测证据见其正文与维护者两条评论)。

缺陷

buildWhereSQL 条件层只识别 $and / $or / $not;其余任何 $ 开头的键落字段路径,双引号标识符被 SQLite 按向后兼容规则当字符串字面量 → 静默空结果集(维护者实测更正:不是 no such column;where {"$eq":"won"} → SELECT … WHERE "$eq" = ? → RESOLVED [])。写路径(deleteMany / updateMany)上同一个编不出的条件意味着谓词恒假或恒真,取决于落侧 —— 修时一并核并加断言。

上下文(全部已就位,本单严格更简单)

  • framework 侧同款缺口已修:objectstack#5348 裁定拒收,PR fix(driver-sql,driver-memory,driver-mongodb): 越界过滤输入在门口拒收,而不是每个后端各答一个 (#5347, #5348) #5368 在 SqlDriver 的校验遍历(reduceFilterKey,非发射器 —— 发射器会被布尔单位元整段跳过)加闸:节点位置 $ 开头且非逻辑算子 → INVALID_FILTER / 400。SqliteWasmDriver / Turso local 继承。RemoteTransport 是这条规则唯一剩余面,且方向是反的:local 严、remote 松。
  • 信封半边已随迁:remote-transport.ts:235 的 invalidFilterError()(cloud#1117 落地,INVALID_FILTER/400,取自 @objectstack/spec StandardErrorCode)。新闸只需 return invalidFilterError(...);拒收表测试(remote-transport-comparand-refusal.test.ts 等)已随迁本仓,加行即可。
  • 消息分两种(cloud#1077 正文建议):是 FieldOperatorsSchema 认识的字段算子($eq/$gt/…)→ 指路「你可能想写 { 字段名: { 算子: 值 } }」;未知 $ 键 → 点名拒收。与 matchesFilterCondition 对条件层未知 $ 键的 fail-closed 姿态一致。
  • $nor / $elemMatch 今天只是被 CLI: add remote API commands for Data API and Metadata API #1058/fix(studio): use getRequestListener() with extractBody() for Vercel POST support #1066 的比较值守卫偶然拦下且信封不合规(code=undefined)—— 节点级闸落地后按本闸拒收。
  • 顺带(维护者点名同轮该看):remote-transport.ts:462 Unsupported aggregate function 仍是裸 Error,不属过滤器拒收(更像 INVALID_QUERY 一类)—— 按 ADR-0112 标准目录选码同 PR 收尾,或在 PR 里明确说明不做及理由。

验收

条件层未知 $ 键在 find / deleteMany / updateMany 三路皆响亮 INVALID_FILTER(不再静默空集/全表写);新用例进已随迁的拒收表;若共享一致性表(FILTER_LOGIC_CASES 一族)已覆盖 remote 面,按共享一致性覆盖条款加轴而非另起独立文件。


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    pm:queueReady for the PM dispatch loop
    on Aug 6, 2026
  2. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 6, 2026
  3. self-assigned this
    on Aug 6, 2026
  4. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    Contributor

    认领:PM 循环第 9 轮(drivers 车道,维护者 2026-08-06「加速开发」指令,三路并行批次之一)
    会话:session_01WyvqvKMG6asi9aXjKE6xtx
    分支:claude/issue-5769-turso-remote-operator-key-refusal
    Worktree:objectstack-issue-5769
    域:domain:drivers(cloud#1077 跨仓移交,标题明示 drivers(turso),分诊 domain 标欠账,认领时申报;turso 不在 #5499 冻结范围)
    文件面:packages/drivers/driver-turso/src/remote-transport.ts(条件层闸 + :462 信封顺带)+ 既有拒收表测试加行(comparand-refusal 族、turso-remote-filter-logic-conformance)
    定向在飞检查:全仓 18 张 pm:dispatched 实测无 turso 面;同包 #5770(backfill)串行排本单之后,本单⛔不触 backfill/DDL 路径。


    Generated by Claude Code

  5. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    Contributor

    复核:ACCEPT → PR #5921(PM 实测复核;dev 报告未回,不影响——复核纪律以 GitHub 实测为准):

    转 ready 入队;MERGED 后放 #5770(同文件串行棒)。


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingpm:dispatchedDispatched to a dev agent by /pm-dispatch

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions