↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

PostgreSQL 博览 RSS

保留原始来源与发布日期的新闻、博客和活动。

2 条内容

异常处理里调用槽函数出错会漏掉复制槽释放

Bharath RupireddyPostgreSQL hackers

PL/pgSQL、PL/Perl 等语言的异常块捕获错误时,SQL 可调用的复制槽函数不会释放已获取的槽,因为异常处理跑在内部子事务里,绕过了顶层错误处理路径。修法是新增 AtEOSubXact_ReplicationSlot(),在子事务结束时释放。Bharath Rupireddy 在 v13 里处理了大部分审查意见,并提议回移到 PG14:这个缺陷用简单 SQL 就能复现,可能导致崩溃、槽泄漏和 vacuum 受阻。

在线调整 shared_buffers 补丁被审出一串底层问题

Palak ChaturvediPostgreSQL hackers

shared_buffers 在线调整补丁集被审出不少问题。Palak Chaturvedi 发现 TAP 测试有约五分之一概率因 SIGHUP 投递时序而失败。Yuhang Qiu 的问题更深:持有全部分区锁期间不检查中断、madvise(MADV_REMOVE) 的范围盖住了 PROT_NONE 区域引发 EACCES 崩溃、EvictExtraBuffers() 用错缓冲区标志,而且大页对齐让测试其实没触发到 madvise。

22 条内容

join_collapse_limit 该留在 8,改它多半是统计信息不足

Christophe Pettusthebuild.com

join_collapse_limit 决定显式 JOIN 是否被摊平成可由规划器自由调序的表列表,自底向上摊平,一旦超过这个数就停手。默认 8,与 from_collapse_limit 刻意一致;geqo_threshold 默认 12,调过 12 就会切到遗传算法,用随机采样换掉穷举。Christophe Pettus 建议配置文件里别动,只在确知比统计信息更懂时用 SET LOCAL 设成 1。

Python 测试框架方案重提,先求框架本身进主线

Jelte Fennema-NioPostgreSQL hackers

Jelte Fennema-Nio 提交了新版 Python/pytest 测试框架方案。他此前借助大模型把约一半 Perl 测试转成 Python,据此发现的不足在这一版得到修订。补丁集共 12 个,涵盖 meson 与 CI 集成、约 55 个方法的服务器管理框架、类型注解、后台 SQL 支持,以及与 Perl 框架共存的端口锁定机制。Andres Freund 反对增加 CI 日志量,要求转换前先做覆盖率对比。