异常处理里调用槽函数出错会漏掉复制槽释放
PL/pgSQL、PL/Perl 等语言的异常块捕获错误时,SQL 可调用的复制槽函数不会释放已获取的槽,因为异常处理跑在内部子事务里,绕过了顶层错误处理路径。修法是新增 AtEOSubXact_ReplicationSlot(),在子事务结束时释放。Bharath Rupireddy 在 v13 里处理了大部分审查意见,并提议回移到 PG14:这个缺陷用简单 SQL 就能复现,可能导致崩溃、槽泄漏和 vacuum 受阻。
保留原始来源与发布日期的新闻、博客和活动。
PL/pgSQL、PL/Perl 等语言的异常块捕获错误时,SQL 可调用的复制槽函数不会释放已获取的槽,因为异常处理跑在内部子事务里,绕过了顶层错误处理路径。修法是新增 AtEOSubXact_ReplicationSlot(),在子事务结束时释放。Bharath Rupireddy 在 v13 里处理了大部分审查意见,并提议回移到 PG14:这个缺陷用简单 SQL 就能复现,可能导致崩溃、槽泄漏和 vacuum 受阻。
shared_buffers 在线调整补丁集被审出不少问题。Palak Chaturvedi 发现 TAP 测试有约五分之一概率因 SIGHUP 投递时序而失败。Yuhang Qiu 的问题更深:持有全部分区锁期间不检查中断、madvise(MADV_REMOVE) 的范围盖住了 PROT_NONE 区域引发 EACCES 崩溃、EvictExtraBuffers() 用错缓冲区标志,而且大页对齐让测试其实没触发到 madvise。
join_collapse_limit 决定显式 JOIN 是否被摊平成可由规划器自由调序的表列表,自底向上摊平,一旦超过这个数就停手。默认 8,与 from_collapse_limit 刻意一致;geqo_threshold 默认 12,调过 12 就会切到遗传算法,用随机采样换掉穷举。Christophe Pettus 建议配置文件里别动,只在确知比统计信息更懂时用 SET LOCAL 设成 1。
Jelte Fennema-Nio 提交了新版 Python/pytest 测试框架方案。他此前借助大模型把约一半 Perl 测试转成 Python,据此发现的不足在这一版得到修订。补丁集共 12 个,涵盖 meson 与 CI 集成、约 55 个方法的服务器管理框架、类型注解、后台 SQL 支持,以及与 Perl 框架共存的端口锁定机制。Andres Freund 反对增加 CI 日志量,要求转换前先做覆盖率对比。
补丁把静态全局变量换成沿调用栈传递的上下文结构体,v3 又简化了内部实现并补齐注释。
DuckDB、ClickHouse、Spark、Trino 等大多支持三类运行时过滤器:Bloom、精确 IN 列表和最小最大范围。
Fujii Masao 质疑存初始值的必要性,Daniel Gustafsson 不愿在 beta3 到 RC1 之间删字段。
Peter Smith 主张改用细粒度 TABLE 子句优先于 SCHEMA 子句的简单规则,取代逐个冲突报错。
Alexander Korotkov 认为这是让特性留在 pg19 的正确路径,现在引入新设计已经太晚。
推送先落成 S3 兼容的 WAL 条目,本地仓库退化为可丢弃缓存;官方自报 S3 Express 上超过 300 次推送每秒。
Modular 把编译器、工具链与完整构建源码置于 Apache-2.0 加 LLVM 例外之下;编译器暂不接受外部贡献。