Skip to content

drivers(turso): remote 模式补 canonical backfill 通道(@libsql/client,分批、可恢复、完成标记)—— cloud#1005 移交,维护者已裁方案 1 #5770

Description

@claude

Part of objectstack-ai/cloud#1005(随 #4645 驱动迁移移交本仓;完整分析与维护者 2026-08-03 决策记录在该单正文与评论,链接为准)。

现状(cloud#1005 实测)

  • SqlDriver.backfillCanonicalDatetimes 是 Knex 路径,remote 模式永不执行 → canonicalDatetimeFields / canonicalTimeFields 在 remote 恒空 → needsLegacyDatetimeRepair 恒 true,每次对 Field.datetime / Field.time 的 filter 都编译成修复表达式 —— 正确但不可索引,且 local 跑完 backfill 能退回 col >= ?,remote 没有出口,代价永久(后果 A)。
  • RemoteTransport 的 DDL 把时间列声明为 TEXT;数字 epoch 经 TEXT affinity 落成 '1753660800000.0' 一类文本,共享修复表达式 typeof(col) in ('integer','real') 一支永不命中、strftime 又解析不了 → 这一群 legacy 行在 remote 任何 filter 都匹配不到,而 local 的 INTEGER 孪生群体可修(后果 B)。

裁定(维护者 2026-08-03,原文见 cloud#1005 评论)

  1. 方案 1 派发:走 @libsql/client 的 remote backfill —— 大表分批、失败可恢复、成功后标记 canonical;解除后果 A,并一并处理后果 B 的可解部分。
  2. 方案 2(DDL 亲和性对齐)以 staging 数字 epoch 存量探针结果再议;探针需 staging 访问,归维护者/运维,不阻塞方案 1

关联

ADR-0053 storage-form 轴(#4191);cloud#1003(D-B3:正确性不以 backfill 跑过为前提,该姿态保持不变 —— backfill 是性能出口,不是正确性前提)。


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions