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