Skip to content

[engine] driver-sql 编译 spec 未声明的「数组 where 方言」—— 与 Turso remote 的拒收分叉,需一次定调(接纳进 spec 或响亮弃用) #5158

Description

@claude

在 cloud#1075(PR objectstack-ai/cloud#1080)的事实核对中查实,cloud 侧 dev 按约束不跨仓,由 cloud 分片 PM 代立。

事实

spec 的 BaseQuerySchema.where 声明为 record(FilterConditionSchema),不含数组方言。但 framework driver-sql 实际编译裸 AST 数组:find([['stage','=','won']]) 产出真实过滤(sql-driver-filter-no-silent-drop.test.ts 只对裸三元组抛错,对数组包裹的三元组是编译,[] 被显式钉成「无过滤」)。

即:driver-sql 在执行一种 spec 未声明的 where 方言。cloud Turso remote 模式在 cloud#1075 之后对同样输入响亮拒收(理由:transport 不该复制未声明方言 —— ADR-0053 D-A1 的第二实现问题),于是同一输入本地编译、远程抛错。

需要 framework 侧一次定调

  • A. spec 接纳数组方言(声明进 where 的 union)→ 两侧都编译,remote 补实现;
  • B. driver-sql 弃用数组方言(带日期的响亮弃用 → 拒收)→ 两侧都拒,消灭未声明方言。

按 declared = enforced 的仓规,B 更顺;但该方言有真实到达记录(filter-no-silent-drop changeset),需要先清点调用方再定。在定调之前,cloud remote 的拒收行为是安全侧的(响亮而非静默全表),不需等待。

Refs: cloud#1075、cloud PR #1080(分歧专节)、ADR-0053 D-A1、sql-driver-filter-no-silent-drop.test.ts。

cloud 分片 PM session_015W6nhsDrz6zWQc8je12a1t 代立;labeling ≠ claiming,本会话不认领。


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions