数据库工程界苦“重写”久矣。PostgreSQL 经过近三十年演进,数百万行 C 代码堆叠出极其复杂的边缘状态,传统认知里,单一团队试图用 Rust 全量重构它几乎等于天方夜谭。然而最近开发者 Michael Malis 主导的 pgrust 项目,不仅在测试中直接向 PostgreSQL 官方邮件列表提交了 5 个深层内核 Bug,还在冷启动查询里跑出了极为夸张的性能倍数。

工程博主 Dan Luu 借此发出感慨:在高速推理模型的辅助下,软件构建的野心阈值已经被推高。但这绝非又一个轻佻的 AI 奇迹故事。拨开惊人跑分与社区的作弊指控,这件事真正反常的地方在于:一个尚不具备生产可用性的重写项目,竟然把原本用于自我构建的代码,硬生生磨成了一根刺向上游工业基准的高精度探针。

倒逼三十年底座:Rust 重写版成了官方内核的白帽黑客

在技术社区里,多数声称用新型语言重写成熟基座的项目,往往止步于玩具阶段,甚至被讥讽为缺乏工程纪律的代码垃圾。但 pgrust 带来的震动,首先发生在 PostgreSQL 的核心开发邮件列表里。Malis 并没有空谈架构优雅,而是实打实砸出了数个被官方确认的严重缺陷。

这批漏洞横跨多个关键子系统。在 SP-GiST 索引中,Bug 19597 揭示了浮点临界值会导致 getQuadrant 分支不可达;Bug 19594 指出了 JSONPath 格式缓存污染会混淆严格模式;Bug 19600 发现了 pgcrypto 的 salt 截断多字节字符引发的非法编码;Bug 19595 挖出 tsearch 字典加载器里潜藏的堆越界写、栈未初始化读和空指针解引用这三处内存安全隐患;而在 Bug 19856 中,money 类型最小负数除以 -1 会在 x86-64 架构下触发浮点异常,在 aarch64 架构下甚至出现静默错误。

pgrust 反向捕获的 PostgreSQL 内核缺陷分布 内存安全缺陷 Bug 19595 • tsearch 堆越界写入 • 字典加载器栈未初始化读 • 空指针异常解引用 逻辑与边界溢出 Bug 19597 / 19856 • SP-GiST 浮点分支失效 • money 最小负数除法溢出 • 多架构表现不一致 状态缓存与编码 Bug 19594 / 19600 • JSONPath 格式缓存污染 • pgcrypto salt 多字节截断 • 非法编码静默传递

这些漏洞并非肉眼扫读代码就能轻易揪出的浅层笔误,它们深锁在三十年工业打磨的死角中。能把这些毛刺逼出来的,不是 AI 自动写出的业务代码本身,而是为了验证重写正确性而构建的差分测试体系。当两套独立实现的引擎并排接收极端输入时,原版的任何未定义行为都会被当场放大。

1600 倍神话与作弊风波:基准测试的双刃剑

在性能表现上,pgrust 给出的宣传指标堪称刺眼。在 AWS c8g.4xlarge 实例上,其搭载的 pgrcolumnar 引擎在冷启动 ClickBench 单查询中,声称跑出比原生 PostgreSQL 快 1600 倍的单查询加速;其 v0.2 版本宣称 ClickBench 综合得分比 ClickHouse 快 18.5%,并在 300GB 规模的 sysbench-OLTP 只读吞吐量上高出 PostgreSQL 18.3 约 30%。

跑分越是惊艳,工程审视的刀锋就越是冰冷。

激进的数据迅速引发了开源社区的反噬。Hacker News 随后出现了针对该项目的激烈声讨,指控其为了迎合 ClickBench 测试而硬编码查询内核甚至提前缓存结果。面对作弊质疑,维护者承认在部分特定测试中引入了中间谓词数据缓存,并过早提交了尚未完善的查询分支。

关键指标:跑分声称与工程现实的落差 1600x ClickBench 单查询极限加速 基于冷启动与特定谓词缓存 1397 Kani 形式化验证函数数 占约 3400 个用户函数的四成 0 个 支持的外部过程语言扩展 无 PL/Python、PL/Perl、PL/Tcl

这种对基准测试的过度特化,折射出新生项目急于证明自身的典型焦虑。ClickBench 的跑分优势掩盖了通用数据库场景下的巨大妥协。

  • 风险.基准测试中的局部特化并不等同于系统级工程胜出,脱离了真实事务环境的极端加速,极易沦为特定用例下的过拟合游戏。

验证的边界:从形式化证明到消失的口号

如果抛开争议,审视 pgrust 的底层验证工程,会发现它确实采用了现代化的防线。在 v0.4-beta 版本中,面向用户的约 3400 个函数里已有 1397 个通过了 Kani 形式化验证,有 466 个完成了与 PostgreSQL 的逻辑对齐测试,并引入了 Antithesis 仿真测试框架来捕捉深层并发竞态。

然而,软件验证从不承诺绝对全知。Kani 的等价性证明只能覆盖预设的模型假设与边界输入,既无法推导庞大状态机的宏观完备性,也解决不了生产级的生态兼容。早先在项目主页上醒目宣传的“通过全部 46066 个 PostgreSQL 回归测试用例”口号,在最新的版本说明中已被悄悄撤下。

模块与能力当前技术实现现实状态与局限
形式化验证Kani 证明覆盖 1397 个函数局限于输入边界模型,未覆盖全状态机
测试集对齐撤下 46066 个测试全过口号早期宣称与极端并发稳定性脱钩
生态扩展缺失稳定 C 扩展 ABI 架构不支持 PL/Python、PL/Perl、PL/Tcl
生产定位官方明确标记尚未就绪本质上仍处于高强度试验阶段

缺少成熟的 C 扩展 ABI 支持,意味着 PostgreSQL 赖以生存的繁荣生态无法直接迁移;不支持 PL/Python 等过程语言,则断绝了绝大多数生产环境平替的可能。作者对此同样坦诚:项目远未达到生产就绪标准。

  • 结论.大模型将编码边际成本推向趋零的同时,也彻底重置了研发核心:软件工程的真正护城河已不再是写出代码,而是如何构建严密的数学证明与仿真沙盒来确证其不包含隐藏灾难。

尽信书不如无书。pgrust 的价值不在于它是否能在短时间内替换庞大的 PostgreSQL,而在于它撕开了基础软件演进的新裂口。它既非无懈可击的重构神话,亦非空洞乏味的工业废料,而是一台携带先进验证武器、在跑分过拟合与内核探针之间摇摆前行的技术半成品。