PostgreSQL 资讯
保留原始来源与发布日期的新闻、博客和活动。
为连接与外键增加优化器统计信息的补丁收到大批意见
PG20 最低依赖之争聚焦测试框架的 Python 版本
SLOT_NAME=NONE 未能跳过与发布端的连接
Jeff Davis 发现存在 tablesync slot 时提前返回失效,修复可能要回移到旧版本。
EXPLAIN ANALYZE 报告等待事件的方案被要求重做
Haas 与 Freund 反对在等待事件热路径上加判断,主张改成定时器中断的自采样。
pg_combinebackup 的一处循环会陷入无限空转
copy_file_range 返回 0 是合法情况,Peter Eisentraut 建议把它直接当错误处理。
LockBufferForCleanup 的竞态让 VACUUM 永久等待
Alexander Lakhin 在 buildfarm 上发现,引入原子解 pin 的提交 5310fac6e0f 埋下了这次挂起。
索引预取补丁更新到 v28,SP-GiST 范围扫描快 20 倍
启动读取流的时机改到第四次切换堆块,消除了 LIMIT 与 nestloop 半连接场景下的回退。
PostgreSQL wiki 新增一页“C 方言”写作约定
Christophe Pettus 在 PostgreSQL wiki 上新开了一页 The PostgreSQL C Dialect,把写 C 扩展要知道的约定和惯用写法集中记下来,起因是他写第一个扩展时踩的坑。Tom Lane 表示赞赏,Bruce Momjian 在 Developer's FAQ 上加了链接。Roberto Mello 注意到文中破折号密集,问是否由 LLM 协助撰写、有没有用别的模型核对,截至讨论时无人回复。
waxsql 给查询规划器生成类型正确的假查询
waxsql 生成类型正确、语法合法但计算上毫无意义的 SQL,用来给查询规划器做模糊测试、验证解析器、造可复现的负载。它对每个表达式向内部目录询问什么能产生某个类型,因此产出的查询能通过解析分析和类型检查,而不只是语法正确。复杂度由一个 0 到 10 的旋钮控制,schema 与查询各有独立随机流,同一个种子在不同机器上产出相同结果。项目是纯 Python、无运行时依赖,自带语法、解析和 explain 三级校验。
pg_stats 里的四个列决定了规划器怎么估行数
规划器读的是 pg_statistic,pg_stats 是同一份数据的可读视图,由 ANALYZE 扫表汇总生成,大批量导入后建议手工跑一次。Richard Yen 讲了四个关键列:n_distinct(唯一列为 -1)、null_frac、correlation(物理与逻辑顺序的吻合度)和最常见值列表。直方图默认 100 个等深桶,可用 ALTER TABLE 调大统计目标,多列相关的偏差交给 CREATE STATISTICS。
effective_io_concurrency 的含义已经变过两次
effective_io_concurrency 控制预取深度,含义随版本改过两次。PostgreSQL 13 之前它要过一个调和级数公式,设成 10 实际只预取三页左右;13 到 17 就是并发 I/O 请求数;18 起它驱动 PostgreSQL 自己的异步 I/O,走 worker 进程或 io_uring,默认值也从 1 改成 16。Christophe Pettus 提醒不要跨大版本照搬旧值,SSD 上可以往几百试但必须实测。
PostGIS Tiger Geocoder 2025.1 独立发布
Tiger Geocoder 从 PostGIS 主库拆出来独立发布,版本号按发布时的美国人口普查 TIGER 数据年份命名。2025.1 载入 TIGER 2025 数据,最低要求 PostgreSQL 16,代码搬到 OSGeo Gitea 上的独立仓库;数据库搜索路径不再自动包含 tiger schema,需要自己配置。安全上给 schema 与表名加了引号,地址规范化支持按国家解析,高速公路编码认得 SH 与紧凑写法。
OpenTunnel 把远程命令包装成本地 agent 的工具调用
有人撰文认为 agentic coding 是个陷阱
Pagecast 把报告发布到 Cloudflare Pages
Andreas Scherbaum 记录柏林五月的 PostgreSQL 聚会
行模式识别补丁更新到 v50
修掉 DEFINE 求值的 use-after-free、导航函数命名空间冲突和一个休眠匹配的正确性缺陷。
pg_upgrade 保留复制源 OID 的补丁收到版本判断意见
Rui Zhao 指出旧集群里用户自建的 origin 会跳过前置检查,升级到 restore 阶段才失败。
逻辑复制冲突日志表提案仍在打磨错误处理
Amit Kapila 主张插入失败应报 ERROR,vignesh C 发现并发改订阅会静默丢掉冲突记录。
MERGE PARTITIONS 的表空间继承缺陷已有补丁
Justin Pryzby 发现合并出的表落到默认表空间,Alexander Korotkov 提交补丁对齐建表逻辑。
Regina Obe 开始用 pg_timetable 替换 pgAgent
按 Regina Obe 的说法,pgAgent 正在退场,半年后完全退役,pgAdmin 里的界面也会随之消失。她原先看重的是它跨 Windows 与 Linux、界面内建在 pgAdmin 里、后端就是 PostgreSQL 数据库,一个作业还能包含多个有序步骤。这一篇讲迁移动机并介绍替代品 pg_timetable,第二篇讲怎么在 Linux 上把它配成服务;她还在 GitHub 上做一个仿 pgAgent 的管理界面。
effective_cache_size 只影响估算,建议设成内存的一半以上
effective_cache_size 不分配内存,只告诉规划器 shared_buffers 加操作系统页缓存大约有多少可用。规划器据此用 Mackert-Lohman 公式估算索引扫描的物理读页数:值大意味着重复访问多半命中缓存,索引扫描显得便宜;值小则更倾向顺序扫描与哈希连接。默认 4GB,Christophe Pettus 建议在数据库专用机上设成物理内存的 50%–75%,且必须大于 shared_buffers,宁高勿低。
postgres-lsp 为 SQL 与 PL/pgSQL 提供语言服务器
编辑器里的 SQL 支持长期依赖正则启发式规则,跳转和补全都不可靠。Gavin M. Roy 发布的 postgres-lsp 基于 tree-sitter-postgres 实现语言服务器协议,用真正的 PostgreSQL 语法解析 .sql 文件,提供诊断、语义高亮、符号大纲、跳转定义、查找引用、上下文补全和函数签名,还能按 river、dbt、pg_dump 等风格格式化。PL/pgSQL 函数体通过语言注入解析。