PostgreSQL 全球开发组推迟了 PostgreSQL 19 的发布,并且罕见地撤回了一批功能——原因不是开发时偷懒,而是 AI 辅助代码审查太给力,发现的问题比人类能修完的还多。

PostgreSQL 19 因 AI 辅助代码审查发现更多缺陷而推迟发布,数据库技术资讯配图

PostgreSQL 19 原本定在 9 月底或 10 月初发布,现在预计要到 11 月 19 日左右才正式可用,同时有 8 到 10 项重要功能被撤回。负责解释这些回滚(功能被推迟到明年的 PostgreSQL 20)的是 EDB 副总裁 Peter Eisentraut,他也是 PostgreSQL 的核心提交者。

Eisentraut 在博客中表示,部分被撤回的功能存在重大的架构缺陷,很难在 beta 期间快速修复。而 LLM 辅助代码审查的引入,还暴露了一长串相对无害的边缘情况问题——换作过去,这些可能要发布后五年内靠打补丁陆续发现。有了 LLM 辅助审查,这类问题被更快找到,然后你就面对四十份缺陷报告:哪怕每份平均只需要三行修复,处理每一份都有固定开销,时间就不够用了。

写 PostgreSQL 19 大功能时,LLM 辅助代码审查还没有现在这么好用;但在发布前的几个月里,AI 支持的审查变得更成熟、更有效。质量门槛在功能编写和提交之后被提高了。除非 LLM 辅助审查的能力继续以当前速度进步,否则这个问题在未来的开发周期里会自行解决。Eisentraut 还特别强调,回滚与开发中的玄学编程无关——大多数新功能编写时,这种技术还不存在。

被从 PostgreSQL 19 撤下的功能里,包括 SQL 属性图查询(SQL/PGQ)支持——2023 年成为 SQL 标准的一部分,用于探索节点间关系的语法,其实现因未解决问题被移除。当时 Postgres 贡献者 Tom Lane 就警告过:如果把它放进 v19,发布后大概率会发现直到 v20 才能修的问题。

不过 Eisentraut 承诺,PostgreSQL 19 仍会是一个很棒的版本:包含 REPACK CONCURRENTLY,避免用会锁表的 VACUUM FULL 来回收磁盘空间;而且经过这么多额外审查,它会非常稳健。被撤回的功能很可能进入 PostgreSQL 20——就在几个月前,开发组还预期 PostgreSQL 20 只修 bug 不加新功能,现在它反而变丰满了。