非法加冯

渡劫期的 PostgreSQL 生态大更新

前段时间,老冯在《 云要被打成筛子 》和《 互联网已经被打成筛子 》两篇文章里聊过一个残酷的现实: 整个软件世界正在迎来一场“AI 渡劫”。 随着各类 AI 驱动的漏洞挖掘与自动化扫描工具火力全开,开源社区几乎每天都在被海量的 Bug 报告和安全 Issue 狂轰滥炸,让人目不暇接。就连稳如老狗的 PostgreSQL 社区也未能幸免—— PG 19 因为这波密集的问题修复已经延期了 。 按照目前的节奏,理想情况下 11 月 9 号就要开始封版打包,再下一周就能看到正式版放出。老冯现在的心愿,就是这几天千万别再冷不丁掏出一个 “大雷” 导致继续延期了。 除了 PG 内核在渡劫,整个 PG 扩展生态最近也在密集发版,疲于应对各种各样的安全隐患。
最醒目的一个风向标就是 PostGIS 3.7.0 。之前因为两个伴生扩展的安全问题,几乎所有主流托管 PG 云服务商都集体中招。到了这次 3.7.0 更新,PostGIS 干脆一不做二不休,直接上演了一出“壮士断腕”—— 直接把 address_standardizer 和 postgis_tiger_geocoder 这两个伴生扩展从 PostGIS 核心包里彻底踢了出去 ,改为单独独立构建、独立分发。在 AI 满地找洞的时代,主动剥离非核心组件、收敛攻击面,显然成了明智之举。 翻看最近的更新日志,你会发现类似的安全加固比比皆是: emaj 5.0.1 修复了提权漏洞, pg_anon 3.3.2 发布了安全更新,各种扩展开启了疯狂修洞发版模式。上游在狂飙,做软件供应链分发的自然也没法闲着。最近这一两个月,老冯密集跟进了上游内核与扩展的迭代,差不多保持着 每周滚动一个批次 的节奏。今天借着这波大规模更新,跟大家盘一盘最近 PG 生态有哪些重磅变化,顺便聊聊老冯这段时间手搓的几个新奇玩意儿。

一、 重磅内核与里程碑:OrioleDB 转正,多模分支齐聚

这波更新里,最值得放鞭炮庆祝的里程碑,当属 OrioleDB 终于发布了正式版 。 熟悉 PG 存储引擎痛点的朋友都知道,OrioleDB 主打 Undo Log 机制与现代化的页面级并发控制,旨在根治 PG 原生堆表 MVCC 带来的膨胀与高频更新瓶颈。熬过了漫长的 Beta 测试期(上个月我们还在打包 1.8-beta16 和 1.10~beta19 ),OrioleDB 这次终于摘掉了测试标签,正式推出 1.10.1 版本 ,同步覆盖 PG 16.15、PG 17.11 和 PG 18.6 三大主流内核分支。除了 OrioleDB,其他几个重量级内核与大版本也悉数到位: • Babelfish 6.2.0 正式支持 PG 18 :主打 SQL Server 协议与 T-SQL 兼容的 Babelfish 迎来了 babelfish-18 的 6.2.0 版本(基于 PG 18.6,完整包含四个伴生扩展),同时 PG 17 分支也跟进到了 5.7.0 。 • CloudBerry 2.2.0 大版本发布 :开源 MPP 数仓的重要扛旗者更新。 • 各路 PG 风味内核大团圆 :除了标准 PGDG 内核,各家深度定制的 PG 分支最近也在密集发版修问题,老冯顺手全都给拢进仓库里了——包括阿里云的 PolarDB 17 (升级至 17.11.1.0-2PGSTY 并更新 PolarStore SDK)、图数据库内核 AgensGraph 18 (升级至 2.18.6.1 )、兼容 Oracle 的 IvorySQL 5.6 (基于 PG 18.6,含 38 个扩展)、多主分布式内核 pgEdge 15–18 (捆绑最新 Spock 5.0.13 ),以及主打透明数据加密的 Percona pgtde-18 (跟进至 18.6.1)。 这些老冯都在 16 个 Linux 系统上做了开箱即用的 RPM/DEB 包,欢迎大家尝鲜。

二、 DuckDB 2.0 时代与脑洞新物种

在扩展层面,过去两个月合入的新包和大版本升级非常密集,挑几个有代表性的跟大家重点聊聊: 1. DocumentDB 1.0 转正与 DuckDB 2.0 浪潮 微软开源的 MongoDB 兼容引擎 DocumentDB 正式迈入 1.0 里程碑(支持 PG 16–18)。而在分析与湖仓赛道,随着 DuckDB 2.0 的到来, pg_duckdb 1.2.0 和 duckdb_fdw 2.0.2 双双换装了最新的 DuckDB 2.0.0 内核(注意这俩在同一个实例里依然互斥,二选一即可)。配合升级到 3.6.0 的 pg_lake 、修复流式 COPY 临时文件泄漏的 pg_parquet 、 Citus 14.3.0 以及 TimescaleDB 2.31.0 ,PG 原生湖仓工具链又扎实了一大截。 2. 搜索与向量套件全面进化 由我们维护的 vchord 升级到了 1.2.0-2PGSTY (优化了 vchordg 与 halfvec 候选集的重排精度),配套的 vchord_bm25 和 pg_tokenizer 则双双迈入 1.0.0 正式版 ,原生支持 tsvector 并引入了外部 Lindera 6 词典。此外,ParadeDB 的 pg_search (0.26.5)、 pg_fts (1.16.0)、 pg_turbovec (2.15.0)和 pgroonga (4.1.0)也都在高频迭代。
3. 几个颇具脑洞的新扩展 目录里还新收录了一批很有意思的新面孔: • pg_agent_gate (0.4.1) :专为 AI 时代打造的 Agent 权限守门员扩展,用来管控大模型 Agent 在数据库里的访问边界。 • pg_opencc (0.1.0) :老冯用 Claude 做的一个 libopencc 薄封装,基于 OpenCC 打造的简繁中文转换扩展(支持 PG 14–18),以后做繁简文本清洗转换不用再把数据拉回应用层折腾了。
• pg_statecharts (0.1.0) :直接在 PostgreSQL 里实现有限状态机与状态图(Statecharts)流转。 • pg_grammar_guard (0.4.9)与 pg_living_assertions (0.5.10) :在数据库内部做语法护栏和动态持续数据断言。 • kafgres (0.3.2) :让 PG 直接客串 Kafka Broker;此外还有支持近似正则(模糊正则匹配)的 pg_tre (4.6.1) 、纳秒级时间戳 pg_nanotime (0.2.0) ,以及基于共享内存的非持久化高速键值存储 pg_kv (0.1.0) 。

三、 接盘、修 Bug 与给大厂“捉虫”

维护一个横跨十几个操作系统、覆盖数百个扩展的软件源,很多时候干的都是开源供应链里兜底的“手艺活”。这几个批次里,有几段幕后插曲值得一提: pg_mooncake 的“接盘未遂”与回馈上游 :之前年久失修的 pg_mooncake 一直卡在旧版本,没法兼容新的 pg_duckdb 1.2.0 (DuckDB 2.0)和 pgrx 。老冯干脆亲自下场把它改造升级到了 0.3.0 ,本来打算一并接盘维护。 开源接盘侠又来了:昨天vchord,今天吃月饼 结果包刚打出来,Mooncake Labs 的 CEO 就找到了我,表示他们团队其实还是愿意继续维护这个项目的。既然原厂有人管,那自然是好事一桩,老冯顺手就把这波适配修改全部给上游提了上去。顺手给上游(包括 AWS)修 Bug 在做全平台编译和 QA 测试时,经常能替上游抓到隐藏极深的坑。有时候懒得提就直接做到 Patch 补丁里解决了。特别有意思的是,像 pgactive 和 pgcollection 其实是 AWS 出品的 PG 扩展,按理说不该有这种低级错误,反正老冯也一起给擦屁股了。某种意义上,高密度的打包分发矩阵,本身就是开源生态最好的试金石。

四、 燃烧 Token 的副业

聊完了硬核的扩展包,再汇报几个老冯最近折腾出来的新玩意儿。手里有了充裕的 Token 和趁手的 AI 工作流,生产力确实容易刹不住车。

1. 让 PG 说一口地道中国话:内核与 508 个版本文档全史汉化

首先是关于汉化的两个好消息。 之前老冯提到过,我已经做完了 PG 19 内核的中文翻译。更棒的消息是: PG 15 到 PG 18 这些仍在维护的历史版本,也会在下周的小版本发布中正式纳入中文翻译信息! 也就是说,差不多再过一周,大家就能看到所有主流 PG 新版本都能说一口地道、流利的中国话了。
至少在现在这个时刻,只有简体中文/繁体中文/瑞典语是三个全消息翻译覆盖率  100% 的语言。
另一件干得差不多、正在收尾的浩大工程是 PG 文档的全史汉化 。之前老冯一口气翻译了 PG 全部 31 个大版本 的官方文档 ;最近我干脆把 GLM 订阅的所有 Token 额度全砸了进去 ,在后台日夜不停地跑翻译任务,已经跑了一两周了 —— 翻完 31 个大版本后,直接向 PG 历史上所有的 508 个小版本文档 发起总攻,目前进度已经完成了 80% 左右 。等最后这 20% 跑完,我们就相当于把 PostgreSQL 自诞生以来有史所有的官方文档彻底汉化了一遍,想想都是一件极其有趣的事。 顺带一提,为了配合看双语资料,老冯自研的文档框架 Oink 最近也发布了 1.5.1 版本 ,新增了 双语对照视图 。在阅读中英文对照的技术书籍或文档时,左右两边可以丝滑地同步滚动,效果拔群。因为实在懒得单独水一篇文章介绍它了,就在这儿顺嘴安利一下。

2. Barn:在笔记本上拉起你的本地 Agent 虚拟机舰队

最近我们还悄悄发布了一款虚拟机管理软件 Barn 。这是老冯自己私下用得非常爽的一个工具,但之前一直没对外说过,也没做任何推广——因为我的习惯向来是 “自己先用爽了再说”。 简单理解这个就是 vagrant 绿色精简版。 在你的 Linux 或 macOS 笔记本上一键拉起“虚拟机舰队”的利器 ,或者更直白一点: AI Agent 的本地 Sandbox 。你的 Agent 需要折腾什么系统环境,本地“哗啦”一下就能秒级拉出一台干净的虚拟机。 它最妙的地方在于 支持直接拉起 macOS 虚拟机 。虽然受限于苹果官方虚拟化协议,一台 Mac 宿主机最多只能同时跑两台 macOS 虚拟机,但这直接让你的 Agent Computer-Use 运行环境从 1 台原地裂变成了 3 台 ,既安全隔离又极其经济实惠。如果你手里养着密集的 Agent 舰队需要多套 Computer Use 环境 ,可以试试。关于 Barn 的设计与玩法,后面值得专门写一篇文章细聊。

3. Crib 与 CapsLock:试水 macOS 原生应用开发

除了 Barn,手头还有两个高频自用的 macOS 原生小工具: Crib :老冯给自己做的一个本地 PG 文档浏览器,原本只是自留地,最近准备打磨出一个公开版本。它相当于把整个 pg.center 知识库装进了你的电脑里,让你在一个轻快的 macOS 原生 App 里离线秒搜 PG 有史以来的所有文档。 而且还可以离线阅览/全文检索使用 Oink 框架制作的网站。
CapsLock :老冯在笔记本电脑上每天敲击成百上千次的效率工具。以前这套改键与应用切换逻辑是用 Karabiner 挂一堆配置文件攒出来的;后来一琢磨,既然手里有 Token,不如直接手搓一个专用软件,定制和改应用规则都方便得多,也算是老冯试水 macOS 原生 App 开发的第一炮。
值得一提的是, Barn、Crib、CapsLock 这几个工具全都是纯正的 macOS 原生 App 。为了把它们地道地分发出去,老冯最近把申请苹果开发者账号、证书签名、公证打包这一整套流程全都跑通了一遍,折腾下来还挺有意思。等它们正式公开亮相的时候,我再专门写文章挨个跟大家介绍。