PG 修复表重写丢失有效行的问题
PostgreSQL 已合入一项数据完整性修复:一行插入后被子事务更新,随后子事务回滚,旧代码可能漏设事务无效标志。表重写因此把仍然有效的行误判为已更新,并将其丢弃。补丁补齐可见性判断中的提示位,避免重写路径漏行。提交说明指出,CLUSTER 的受影响分支可追溯到 PG 14,REPACK 则到 PG 19,并标注回补至 14。这是已提交的修复,尚不能据此认定已安装版本包含补丁。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 26 条。
PostgreSQL 已合入一项数据完整性修复:一行插入后被子事务更新,随后子事务回滚,旧代码可能漏设事务无效标志。表重写因此把仍然有效的行误判为已更新,并将其丢弃。补丁补齐可见性判断中的提示位,避免重写路径漏行。提交说明指出,CLUSTER 的受影响分支可追溯到 PG 14,REPACK 则到 PG 19,并标注回补至 14。这是已提交的修复,尚不能据此认定已安装版本包含补丁。
PostgreSQL 已合入 B-tree 多层页面删除的 WAL 修复。删除过程释放并重新获取叶页锁时,并发分裂可能改变左侧兄弟页链接;旧代码仍把先前值写入 WAL,导致备库的待删除叶页短暂损坏,并触发 WAL 一致性检查失败。补丁在重新加锁后重读链接,提交标注回补至 PG 14。该问题需要很窄的并发窗口,损坏通常随页面紧接着被彻底删除而消失,不能据此推断为普遍的持久数据损坏。
PostgreSQL 已合入检查点期间两阶段事务文件的写入修复。旧实现先截断原文件,再原地写入;若写到一半崩溃,或基础备份恰好复制了中间状态,就可能留下空文件或残缺文件,使后续启动报文件大小错误。新实现先写临时文件,完成后通过原子重命名替换目标,避免恢复过程读到半成品。提交标注回补至 PG 14,使用预备事务及物理备份的系统应跟进包含此补丁的版本;此次消息对应代码合入。
pg_ivm 1.17 修复了增量物化视图在备份恢复和升级后的维护问题。恢复过程曾把已填充视图标为未填充,后续刷新可能重复创建触发器,影响增量维护;新版本同时调整元数据恢复函数与转储逻辑,避免升级时因元数据已存在而失败。唯一键推导改用原始查询,使带 EXISTS 的查询也能建立所需索引,另修复 LATERAL 相关崩溃并拒绝不支持的集合返回函数。版本于 10 月 18 日发布,本期补录该项更新。
HypoPG 1.4.4 完善了假想索引的失效处理:被依赖的表、函数、访问方法、操作符类或类型改变后,相关索引状态会及时清理,避免后续规划继续使用过期信息。版本还修复失败的 EXPLAIN 污染后续查询状态、WITH 查询内存泄漏,以及包含列数量和索引属性取值等问题,并补充 PG 19 兼容性。使用 HypoPG 比较索引方案时,这些修复关系到会话连续试验的可靠性;假想索引仍只用于规划,不会成为实体索引。
PGDG 调整了 RHEL 8、9、10 的包依赖,使常用 GIS 扩展和 Python 运维工具更多依靠 PGDG 与系统基础仓库安装。自带库放在独立目录,并通过运行时搜索路径与 EPEL 版本共存;RHEL 10 的部分 Python 包则明确替代对应 EPEL 包,不能一概视为并行安装。CRB 仍是必要来源,Nagios、R、Firebird 等部分依赖仍需 EPEL。维护者强调减少外部依赖,现有主机不应因此直接移除 EPEL。
补丁穿透 Material、Memoize 等包装路径核对条件,避免 LATERAL UNION ALL 查询返回不符合连接条件的行,回补至 PG 16。
已合入的修复在读取增量文件头时校验各块号,防止异常值造成长度溢出、数组越界和进程崩溃。
Windows 等 EXEC_BACKEND 构建不再因一个主机配置失败而弃用全部 SSL 配置;补丁仅拒绝该主机的握手,标注回补至 PG 19。
1.0.0 引入 HDR 直方图类型及并行聚合,适合汇总延迟分位数;项目给出约 0.1% 的有界误差,并非无误差的精确百分位。
热门查询缓存混合检索与重排结果,长尾查询仅走 BM25;厂商称,171 条评测查询的前五条命中率从 80% 提高到 94%。
RDS 蓝绿升级先预热存储与缓冲池,再停启 DMS 并切换 binlog 起点;厂商称,仅升级引擎的一次切换停写约 7 秒。
支持 512、768、1024 三种参数及封装、解封装接口,私钥保留在 HSM 中,供应用建立抗量子密钥交换流程。
超长提示与 KV 池容量、请求回收逻辑共同触发旧缓存读取;故障已于 9 月修复,本次披露建议升级 SGLang 并校验池容量。