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

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

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.6.22 发布变化

此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。

此版本的完整变化
此版本的完整变化

包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。

完整发布变化

9.6.22

2021-05-13

导出 JSON ↓
23项变化功能、修复、改进
1个版本按版本分组
2CVE独立漏洞编号

9.6.22stable支持截止 2021-11-11

安全变化
CVE / 问题严重程度修复版本所选版本状态
CVE-2021-32028

修复 INSERT ... ON CONFLICT ... UPDATE 目标列表中“垃圾”列的处理不当

9.6.22已记录修复
CVE-2021-32027

防止数组下标计算中的整数溢出

9.6.22已记录修复

PostgreSQL 9.6.22

迁移与兼容性

对于运行 9.6.X 的用户,不需要转储/恢复。

不过,如果你是从 9.6.21 之前的版本升级,参见第 E.4 节。

安全防止数组下标计算中的整数溢出

变更

防止数组下标计算中的整数溢出(Tom Lane)

数组代码此前不会对数组下界加长度发生整数溢出的情况报错。这导致数组中靠后的条目变得不可访问(因为它们的下标无法写成整数),但更重要的是它干扰了后续的赋值操作。这可能导致内存覆写,随之而来的是崩溃或不希望的数据修改。(CVE-2021-32027)

关联记录 (4)
安全修复 INSERT ... ON CONFLICT ... UPDATE 目标列表中“垃圾”列的处理不当

变更

修复 INSERT ... ON CONFLICT ... UPDATE 目标列表中“垃圾”列的处理不当(Tom Lane)

如果 UPDATE 列表包含多列子选择(它们除了正常结果之外还会产生垃圾列),UPDATE 路径最终会存储包含这些额外垃圾列值的元组。短期内这相当无害,但如果以后向表中添加新列,这些值就会变得可访问,若与所添加列的数据类型不匹配,可能导致故障。

此外,在支持跨分区更新的版本中,这种情况触发的跨分区更新有相反的问题:垃圾列被从目标列表中移除,通常因多列子选择机制故障导致立即崩溃。(CVE-2021-32028)

关联记录 (4)
改进允许 ALTER ROLE/DATABASE ... SET 设置 role、session_authorization 和 temp_buffers 参数

变更

允许 ALTER ROLE/DATABASE ... SET 设置 role、session_authorization 和 temp_buffers 参数(Tom Lane)

此前,过于严格的合法性检查可能拒绝这些命令,即使这些值在之后使用时本可正常工作。这给转储/恢复和升级场景带来了命令顺序隐患。

关联记录 (4)
问题修复修复把 COLLATE 表达式的结果强制转换为不可排序类型时的 bug

变更

修复把 COLLATE 表达式的结果强制转换为不可排序类型时的 bug(Tom Lane)

这产生了一个 COLLATE 看似应用于不可排序值的解析树。虽然这通常没有实际影响(因为 COLLATE 在运行时不起作用),但可能构造出在转储/恢复期间被拒绝的视图。

关联记录 (4)
改进禁止通过“快速路径”线上协议消息调用窗口函数和过程

变更

禁止通过“快速路径”线上协议消息调用窗口函数和过程(Tom Lane)

这里只支持普通函数。尝试调用聚合函数虽然已经会失败,但调用窗口函数会导致崩溃,而调用过程只有在过程不做事务控制时才能工作。

关联记录 (4)
改进扩展 pg_identify_object_as_address() 以支持事件触发器

变更

扩展 pg_identify_object_as_address() 以支持事件触发器(Joel Jacobson)

关联记录 (4)
问题修复修复 to_char() 对负区间使用罗马数字月份格式代码的处理

变更

修复 to_char() 对负区间使用罗马数字月份格式代码的处理(Julien Rouhaud)

此前,这类情况通常会导致崩溃。

关联记录 (4)
问题修复修复 BRE 模式正则表达式中解析 \{m,n\} 量词时使用未初始化值的问题

变更

修复 BRE 模式正则表达式中解析 \{m,n\} 量词时使用未初始化值的问题(Tom Lane)

这个错误可能导致量词表现为非贪婪,即表现得像完整正则表达式中的 {m,n}? 量词那样。

关联记录 (4)
问题修复避免在估算带有很长固定前缀的正则表达式的选择率时除零

变更

避免在估算带有很长固定前缀的正则表达式的选择率时除零(Tom Lane)

这通常会导致 NaN 选择率值,引起断言失败或规划器行为异常。

关联记录 (4)
问题修复修复 BRIN 索引位图扫描中越表末访问的错误

变更

修复 BRIN 索引位图扫描中越表末访问的错误(Tomas Vondra)

如果 BRIN 索引使用的页范围大小不是 2 的幂,在某些边界情况下位图扫描可能试图取回超出表实际末尾的页,导致 “could not open file” 错误。

关联记录 (4)
改进确保在关闭备库服务器的启动进程期间释放锁

变更

确保在关闭备库服务器的启动进程期间释放锁(Fujii Masao)

当备库服务器仍在恢复期间被关闭时,某些锁可能仍被持有。这会导致调试构建中的断言失败;生产构建中是否会有严重后果尚不清楚。

关联记录 (4)
改进确保在较新的 FreeBSD 上默认使用 wal_sync_method = fdatasync

变更

确保在较新的 FreeBSD 上默认使用 wal_sync_method = fdatasync(Thomas Munro)

FreeBSD 13 支持 open_datasync,它通常会变成默认选择。但尚不清楚这对 Postgres 是否真的是改进,因此暂时保留原有默认值。

关联记录 (4)
改进确保在分离 DSM 段被中断时完成清理

变更

确保在分离 DSM 段被中断时完成清理(Thomas Munro)

这个错误可能导致并行查询之后临时文件未被及时清理。

关联记录 (4)
问题修复修复服务器中若干轻微的内存泄漏

变更

修复服务器中若干轻微的内存泄漏(Tom Lane、Andres Freund)

关联记录 (4)
问题修复防止收到长度损坏的 ParameterDescription 消息时 libpq 陷入无限循环

变更

防止收到长度损坏的 ParameterDescription 消息时 libpq 陷入无限循环(Tom Lane)

关联记录 (4)
问题修复修复 psql,恢复 \connect service=something 的先前行为

变更

修复 psql,恢复 \connect service=something 的先前行为(Tom Lane)

此前的一次 bug 修复导致在这种场景下环境变量(如 PGPORT)会覆盖服务文件中的条目。恢复先前行为,即优先级相反。

关联记录 (4)
问题修复修复 psql 的 \e 及相关命令检测文件修改时的竞态条件

变更

修复 psql 的 \e 及相关命令检测文件修改时的竞态条件(Laurenz Albe)

打字极快的用户可能骗过该代码基于文件时间戳的临时编辑文件是否被修改的检测。

关联记录 (4)
问题修复修复 pg_restore 漏检文件版本的问题

变更

修复 pg_restore 漏检文件版本的问题(Tom Lane)

从不可寻址的源读取自定义格式归档时,pg_restore 忽略了检查归档版本。如果被喂给比它所支持的更新版本的归档,之后会混乱地失败。

关联记录 (4)
改进为 pg_upgrade 增加更多对包含不可升级数据类型的用户表的检查

变更

为 pg_upgrade 增加更多对包含不可升级数据类型的用户表的检查(Tom Lane)

修复某些不可升级数据类型嵌入在容器类型(如数组或范围)内部的检测。同时禁止升级用户表中包含系统定义复合类型的列,因为这些类型的 OID 跨版本不稳定。

关联记录 (4)
问题修复修复 pg_waldump 在生成逐记录统计时对 XACT 记录的计数

变更

修复 pg_waldump 在生成逐记录统计时对 XACT 记录的计数(Kyotaro Horiguchi)

关联记录 (4)
问题修复修复 contrib/amcheck 不再对同时设置了元组标志 HEAP_XMAX_LOCK_ONLY 和 HEAP_KEYS_UPDATED 报怨

变更

修复 contrib/amcheck 不再对同时设置了元组标志 HEAP_XMAX_LOCK_ONLY 和 HEAP_KEYS_UPDATED 报怨(Julien Rouhaud)

这是 SELECT FOR UPDATE 之后的一种有效状态。

关联记录 (4)
改进调整 VPATH 构建规则以支持较新的 Oracle Developer Studio 编译器版本

变更

调整 VPATH 构建规则以支持较新的 Oracle Developer Studio 编译器版本(Noah Misch)

关联记录 (4)
问题修复修复 Solaris 上 PL/Python 对 Python 3 的测试

变更

修复 Solaris 上 PL/Python 对 Python 3 的测试(Noah Misch)

关联记录 (4)
如何生成比较结果?

比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。

发布快照: 2026-09-26 · 安全快照: 2026-09-26

内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.