↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

PostgreSQL 博览 RSS 订阅

当天收录 26 条。

pg_dump 修复 tar 恢复脚本的保护键

Noah MischPostgreSQL Git

PostgreSQL 修复 tar 格式归档中 restore.sql 的 `\restrict` 保护失效的问题。限制键固定为 `(null)`,文件开头还会先执行没有对应 `\restrict` 的 `\unrestrict`;攻击者若能改写恢复脚本,安全边界无法发挥作用。补丁让恢复脚本使用可校验的限制键,并回补至 PostgreSQL 14。使用 tar 归档、允许编辑 restore.sql 的团队应重新生成归档并核对恢复流程。

逻辑复制拒绝写入系统目录

Masahiko SawadaPostgreSQL Git

PostgreSQL 修复了逻辑复制订阅端信任发布端关系类型的问题。恶意或非 PostgreSQL 发布端可以在协议中指定系统目录,超级用户拥有的订阅进程此前可能把变更写入系统目录;受影响范围包括 PostgreSQL 14 及以后。补丁在订阅端打开目标关系、建立关系列表时都拒绝系统目录和临时表,并以 CVE-2026-120145 跟踪。使用外部逻辑复制源或超级用户订阅的环境应等待相应维护版本并检查来源。

pg_show_all_settings 修复释放后使用漏洞

Masahiko SawadaPostgreSQL Git

PostgreSQL 修复 `pg_show_all_settings()` 扫描期间加载模块造成的 use-after-free。函数会缓存 GUC 条目指针;如果同一查询随后加载扩展,扩展前缀的占位条目会被释放,旧指针可能返回过期数据或令后端崩溃。补丁改用物化模式,在其他表达式执行前消费完整 GUC 数组,并回补至 PostgreSQL 16;该问题编号为 CVE-2026-120152。使用动态加载模块和该函数的环境应安排升级。

PostgreSQL 修复 NULLS NOT DISTINCT 分组错结果

Richard GuoPostgreSQL Git

PostgreSQL 修复 `NULLS NOT DISTINCT` 唯一索引参与外连接 `GROUP BY` 消除时的错误结果。优化器原本认为唯一索引可以证明某些分组列函数依赖于其他列,但外连接补出的 NULL 行会与真实 NULL 行落入同一组,移除列后便可能合并本应分开的结果。补丁在可能被外连接置空的关系上恢复 `NOT NULL` 要求,并回补至 PostgreSQL 18。使用该索引特性和复杂外连接查询的用户应升级并复核结果。

逻辑解码修复待分离分区崩溃

Mikhail Nikalayeu、Zhijie HouPostgreSQL Git

PostgreSQL 修复逻辑解码遇到并发分区分离未完成状态时的崩溃。`DETACH PARTITION CONCURRENTLY` 被锁超时、取消或断连打断后,分区仍标记为待分离,但祖先列表已为空;对 `FOR ALL TABLES` 发布解码变更会触发断言失败,非断言构建则可能空指针解引用,订阅进程因此进入崩溃循环。补丁一次性获取祖先并按独立表处理,问题可追溯至 14,回补至 15。

pg_restore 修复扩展统计空数组丢失

Corey Huinker、Michael PaquierPostgreSQL Git

PostgreSQL 修复恢复表达式扩展统计信息时丢失数据的问题。`ANALYZE` 对 `range_length_histogram` 和 `most_common_elems` 可能写入空数组,`pg_dump` 输出 `{}`,但旧的 `pg_restore_extended_stats()` 把它当成非法输入,导致升级或恢复后统计信息缺失。补丁只放行这两类空数组,拒绝不应为空的数值数组,并回补至 19。升级链路应复核统计信息。