把 Iceberg 表的 format-version 从 1 改成 2,看起来只是一条表属性更新。真正危险的是,这张表往往同时被 Spark、Flink、Trino、离线维护脚本和自研 SDK 访问。创建表的人确认自己的引擎能读 v2,并不能证明整条生产链路已经兼容。
格式版本升级与普通依赖升级不同。旧 reader 遇到自己不理解的新表特性,正确行为应该是拒绝读取;更糟的实现可能加载成功,却没有应用 delete files,悄悄把已删除的行读出来。上线前必须把“有哪些访问者、每个访问者执行什么动作”展开成矩阵。