Files
MyGoNavi/internal
Syngnat 01c3c2f9c9 🐛 fix(sync): 修复 SQL 结果集全量覆盖先清空目标表导致的数据不可恢复丢失
- 加自表守卫:源查询是任意 SQL、无法可靠判断是否引用目标表,故抽出 isSameSyncEndpoint
  做端点级比较,源与目标同端点时退回非分页路径(该路径先把源行读入内存再清空,语义安全)。
  分页叠加自表覆盖本质不可行:清空后的分页会读到空表,目标最终只剩第一页数据
- 改为先读首页、成功后才清空目标,与 tryApplyDirectImportInPages 保持一致。
  原顺序先 TRUNCATE 再首读,源查询一旦报错就留下被清空且无法恢复的目标表
  (TRUNCATE 在 MySQL 上是 DDL、隐式提交不可回滚),而函数还把读到 0 行当作同步成功
- isSamePhysicalSyncTable 改为复用 isSameSyncEndpoint,表名比较语义不变
- 补 4 项回归测试:端点比较、表名语义不变、自表退回且退回前未清空、先读后清顺序
2026-07-26 20:11:52 +08:00
..