开发分支修复校验和状态的跨节点误传播
PostgreSQL 开发分支修复了恢复流程错误继承其他节点校验和状态的问题。此前仅在主库离线开启校验和,备库可能开始验证自己并未写入的校验和;备库本地调整也可能被后续检查点覆盖。修复让控制文件保留本节点状态,回放时核对差异,并同步收紧 pg_rewind 与增量备份合并的状态校验。这批改动已进入 master,涉及控制文件版本递增;离线调整仍须逐个数据目录处理,复制不会自动替所有节点切换。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 26 条。
PostgreSQL 开发分支修复了恢复流程错误继承其他节点校验和状态的问题。此前仅在主库离线开启校验和,备库可能开始验证自己并未写入的校验和;备库本地调整也可能被后续检查点覆盖。修复让控制文件保留本节点状态,回放时核对差异,并同步收紧 pg_rewind 与增量备份合并的状态校验。这批改动已进入 master,涉及控制文件版本递增;离线调整仍须逐个数据目录处理,复制不会自动替所有节点切换。
PostgreSQL 的并行 GIN 索引构建会把键值暂存为排序元组,其中键长原先只用 16 位字段保存。遇到超过 65535 字节的键时,长度被截断,后续代码会把键内容误当作倒排列表,可能触发断言、越界读取,甚至向索引写入错误数据。新提交把键长改为 Size,并显式保证数据对齐,兼顾 32 位平台。问题仅涉及并行构建使用的临时格式,同一数据的串行构建不走这条路径;修复已合入 master 和 19 分支。
orafce 为 PostgreSQL 提供 Oracle 兼容函数与工具包,其中 utl_file 允许 SQL 程序操作服务端文件。4.16.9 修复了这一包的路径穿越:旧逻辑信任已登记的目录,却没有在拼接文件名并规范化路径后再次检查实际位置,已获授权的用户可能访问目录范围以外、数据库操作系统账号能够打开的文件。新版对最终路径统一执行安全目录检查。该包默认关闭,已启用它的团队应核对版本、授权与目录配置,并在升级后回归文件访问流程。
Percona 发布 pg_stat_monitor 2.4.0,修复崩溃、内存泄漏与错误统计,并收紧普通用户读取他人查询标识和文本字段的权限。plans 现在只累计实际规划次数,复用缓存计划或执行工具语句不再抬高计数;未设置的 application_name 改为 NULL,名称缺失时的占位字符串也被移除。新版本最低要求 PostgreSQL 14,并删除已废弃的溢出参数。依赖这些字段的监控面板、告警和采集配置需要随升级一起校准。
行锁争用可能在 CPU 和磁盘指标平稳时拖垮订单吞吐,扩容存储或增加只读副本也无法消除同一行上的写入竞争。AWS 新发布的两篇技术文章先从行版本、事务锁和系统视图解释阻塞关系,再演示用 Database Insights 高级模式的阻塞树还原历史等待链。治理方案包括缩短事务、把外部调用移出持锁区间、设置超时,以及把热点计数拆到多行。文章同时给出可复现的库存负载,便于区分临时解阻与应用结构调整的效果。
NTT 的研究用 eBPF 追踪云端 PostgreSQL 的写回路径,发现每个块设备的单一回写线程可能来不及排出脏页,进而触发前台写入限流,而普通磁盘统计难以直接呈现这些停顿。实验在 PostgreSQL 16.4、Linux 5.14 和相同总 IOPS、带宽配置下比较一、二、四块云盘。论文报告,四盘布局相对单盘减少约 70% 的限流停顿,吞吐提高约 23%,最大事务延迟降低约 59%。这些结果提示排障时还应检查内核写回并行度。
修复带 RETURNING 的构造器被外层常量替换的问题,并消除相关 SQL 函数内联阻碍,避免产生错误结果。
在所属查询层提前预处理 PlaceHolderVar 副本,避免连接消除时遇到过期引用并触发断言。
开发分支及 19 分支修复备库 FSM 信息缺失,避免提升后 VACUUM 跳过全冻结页而无法发现可用空间。
补齐 EXCEPT TABLE 的约束检查,防止产生创建发布时不接受、pg_dump 也无法正常恢复的状态。
循环可跳过可消费的活动错误继续运行;同时修复长事务交接,并对 HTTP 地址中的秘密信息做脱敏。
支付回调用确定性分支名抵御重复创建,统一租户解析器负责连接路由,闲置计算可自动暂停。
PXC 8.0.28 起可先用 socket.dynamic 兼容明文与 TLS,再逐节点关闭回退,避免全群停机。
研究形式化证明分块读取与 CDC 日志合并的正确性条件,覆盖 Debezium、Flink CDC 等设计。