PG19 外键批处理缺陷让约束被误标为已验证
Amit Langote 为 PostgreSQL 19 的外键快速路径批处理提交三个修订补丁,起因是 Noah Misch 批评此前把批处理限制在顶层事务。0001 移除该限制,改用子事务标记跟踪缓存条目。0002 修一处数据损坏:PL/pgSQL 的 EXCEPTION 块捕获外键检查错误后 firing_depth 未递减,同一事务里后续的 ALTER TABLE ... ADD FOREIGN KEY 会在有违规行时静默通过。
保留原始来源与发布日期的新闻、博客和活动。
Amit Langote 为 PostgreSQL 19 的外键快速路径批处理提交三个修订补丁,起因是 Noah Misch 批评此前把批处理限制在顶层事务。0001 移除该限制,改用子事务标记跟踪缓存条目。0002 修一处数据损坏:PL/pgSQL 的 EXCEPTION 块捕获外键检查错误后 firing_depth 未递减,同一事务里后续的 ALTER TABLE ... ADD FOREIGN KEY 会在有违规行时静默通过。
全库 VACUUM 遇到并发删表的修复补丁走到 v8,关键是防止无特权用户对无权访问的关系申请 AccessExclusiveLock。缺少权限检查时,普通用户执行 VACUUM FULL 就能把强锁请求排进队列,阻塞所有新连接。Bharath Rupireddy 指出在 get_all_vacuum_rels() 的 ACL 检查里改用 _ext() 变体可以避开回归。Nathan Bossart 确认数日内提交。
Bryan Green 重整了补丁,把 pg_dump 的并行 worker 统一到线程实现。0001 与 0002 是 Windows 专属改动:fmtId() 的缓冲区改为 _Thread_local,进程内 channel 取代回环 socket。0003 到 0005 依赖 Thomas Munro 的 pg_threads.h 推广到其他平台,删掉 fork() 与 pgpipe(),64 个 worker 的上限也一并取消。
pg_buffercache 正在讨论新增 pg_buffercache_relations(),把按关系的缓冲区聚合放到 C 层完成。Khoa Nguyen 在 shared_buffers 为 400GB 的机器上测 v2 补丁,比 SQL 侧聚合快约 25 倍。v3 把 usagecount_avg 换成 usagecount_total,并加上 work_mem 上限控制。超限时报错还是只写进文档,目前仍有分歧。
Jacob Champion 和 Michael Paquier 一致认为把 OpenSSL 3.0 定为 PostgreSQL 20 的最低要求合理,这意味着放弃 1.1.1。Michael 指出 OpenSSL 3.0 自身将在 2026 年 9 月停止维护,但对 PG20 可以接受。Jacob 原以为 3.0 会像 1.0.2 那样被发行版长期保留,RHEL 中途升到 3.5 出乎意料。Tom Lane 认为动因是后量子密码学。
Show HN 项目,把各实例类型的吞吐与单位成本放在一起对比。
ParadeDB 复盘自家基准的迭代过程,说明测法不同结论就会不同。
按 Purdue 模型分层部署,用超表和连续聚合关联 GPU 负载与供电制冷遥测。
作者把托管服务与自建机器放在同一组负载下测,重点落在成本与吞吐的比值。
本地优先工具和 agent 越来越多地用 SQLite,迁移能力是长期维护的门槛。