pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2021-08-12
9.6.23 历史版本维护截止 2021-11-11
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2021-3449 更彻底地禁止 SSL 重协商 | ||
| CVE-2006-2313 在 psql 及其他客户端程序中,处理非法编码数据时避免越过字符串末尾 | — |
对于运行 9.6.X 的用户,不需要转储/恢复。
不过,如果你是从 9.6.21 之前的版本升级,参见第 E.4 节。
变更
更彻底地禁止 SSL 重协商(Michael Paquier)
SSL 重协商已被禁用一段时间了,但服务器仍会配合客户端发起的重协商请求。一个恶意构造的重协商请求可能导致服务器崩溃(见 OpenSSL 问题 CVE-2021-3449)。在允许这么做的 OpenSSL 版本(1.1.0h 及更新)上彻底禁用该特性。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝 SELECT ... GROUP BY GROUPING SETS (()) FOR UPDATE(Tom Lane)
这与带普通 GROUP BY 的 FOR UPDATE 被禁止一样,本应被禁止,但相应的测试未能正确处理空分组集。最终结果是执行器中的空指针解引用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝 WITH 中的查询被改写为仅 NOTIFY 的情况(Tom Lane)
这类情况过去会崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 numeric 乘法中,如果结果小数点后位数会超过 16383,对其舍入而非报错(Dean Rasheed)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复把 numeric 值提升到极大幂次时的边界错误和精度丢失(Dean Rasheed)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 to_char() 使用 EEEE 格式且 numeric 输入值小于 10^(-1001) 时的除零失败(Dean Rasheed)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_size_pretty(bigint) 对负值的舍入方式与正值一致(也与 numeric 版本一致)(Dean Rasheed、David Rowley)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_filenode_relation(0, 0) 返回 NULL 而不是报错(Justin Pryzby)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 ALTER EXTENSION 在添加或删除成员对象时锁定扩展(Tom Lane)
原来的编码允许 ALTER EXTENSION ADD/DROP 与 DROP EXTENSION 并发发生,会导致崩溃或目录条目损坏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 REFRESH MATERIALIZED VIEW CONCURRENTLY 生成的查询中的别名冲突(Tom Lane、Bharath Rupireddy)
此命令在物化视图包含某些名称的列(特别是 mv 和 newdata)时会失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PREPARE TRANSACTION 对会话级与事务级锁冲突的正确检查(Tom Lane)
如果一个事务在同一个咨询锁 ID 值上同时持有会话级和事务级锁,它就不能被预备。这一限制没有被完整检查,可能导致 PREPARE TRANSACTION 期间发生 PANIC。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复目标角色在 RLS 策略中被列出多于一次时 DROP OWNED BY 的错误行为(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 DROP OWNED BY 期间从 RLS 策略中移除角色时,跳过不必要的错误测试(Tom Lane)
值得注意的是,这修复了某些必须成为超级用户才能使用 DROP OWNED BY 的情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许以事务方式更新索引状态标志(Michael Paquier、Andrey Lepikhov)
这避免了处理并非真正不可变的索引谓词时的失败。虽然这不被视为受支持的情况,但此处使用非事务更新的原有原因早已不存在,因此不妨改掉。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 CREATE DOMAIN 或 ALTER DOMAIN 出现在缓存计划中时损坏计划缓存条目(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 postgresql.conf 中相关条目被移除时,让 pg_settings.pending_restart 显示为 true(Álvaro Herrera)
pending_restart 能正确显示某个不重启 postmaster 就无法更改的条目被修改的情况,但不能显示该条目被完全移除的情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复新备库跟随新主库时的一种边界失败(Dilip Kumar、Robert Haas)
在条件的一种狭窄组合下,备库可能最终试图跟随错误的 WAL 时间线。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 WAL 重放一条事务中止记录导致文件截断时,更新最小恢复点(Fujii Masao)
文件截断是不可逆的,因此在该记录之前的点停止恢复不再安全。事务提交的相应情况多年前已修复,但这一处被遗漏了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保备库服务器的启动进程在等待 WAL 到达期间能及时响应关闭信号(Fujii Masao、Soumyadeep Chakraborty)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
加锁以避免在另一进程并发写入时读到不正确的 relmapper 数据(Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复推测插入的逻辑解码中的错误情况和内存泄漏(Dilip Kumar)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 CREATE TABLE ... AS EXECUTE 某些错误情况下的计划缓存引用泄漏(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复释放 BackgroundWorkerSlots 时可能的竞态条件(Tom Lane)
这很可能没有修复 Intel 硬件上任何可观察的 bug,但内存排序规则较弱的机器可能出现问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复排序代码中的潜在崩溃(Ronan Dunklau)
有一条代码路径可能试图释放空指针。这种情况在核心服务器对排序的使用中似乎无法达到,但扩展或许能触发它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 SP-GiST 索引插入中的无限循环(Tom Lane)
如果 INCLUDE 列占用足够多的空间以致叶子索引元组永远放不进一个页,text_ops 操作符类就会陷入徒劳地试图放下元组的无限循环。虽然 v11 之前的版本没有 INCLUDE 列,还是把这个防循环修复向后移植过来,因为它似乎是对操作符类 bug 的良好防御。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 SP-GiST 索引插入可以被查询取消请求终止(Tom Lane、Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复可能导致 PL/pgSQL 把未指定 STRICT 的 INTO 子句当作指定了的未初始化变量 bug(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
libpq 的打印函数中发生内存不足失败时不再中止进程(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 ecpg 中,允许把 numeric 值 INT_MIN(通常为 -2147483648)转换为整数(John Naylor)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 psql 及其他客户端程序中,处理非法编码数据时避免越过字符串末尾(Tom Lane)
字符串末尾附近一个编码不正确的多字节字符,可能导致各种处理循环越过字符串的结束 NUL 运行,后果从无可察觉的问题到程序崩溃不等,取决于后面的内存中碰巧有什么。这让人想起 CVE-2006-2313,不过这些特定情况似乎没有值得注意的安全后果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在不同时区创建的归档文件上运行 pg_restore 时出现的 “invalid creation date in header” 警告(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 pg_upgrade 保留旧安装的 oldestXID 值(Bertrand Drouvot)
此前,新安装的 oldestXID 会被设置为一个足够老的值,(通常)会立即触发防回卷自动清理。从性能角度看这不可取;更糟的是,使用较大 autovacuum_freeze_max_age 值的安装可能在升级后不久遭遇不必要的强制停机。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
扩展 pg_upgrade 以检测并警告应升级的扩展(Bruce Momjian)
现在会生成一个脚本文件,其中包含把扩展升级到新安装中视为默认版本所需的 ALTER EXTENSION UPDATE 命令。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/postgres_fdw 中,避免出错后尝试目录查找(Tom Lane)
虽然这通常能工作,但不太安全,因为错误可能已使目录访问失效。此修复的一个副作用是,有关数据转换错误的消息现在会提及查询的表和列别名(如果使用了),而不是外部表或列的真实底层名称。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/pgcrypto 中,避免与 OpenSSL 的符号名冲突(Tom Lane)
使用 SHA224 哈希的操作在 valgrind 检查下可能显示失败。看起来这只是对齐填充字节的踩踏,因此没有实际后果,但为了保险起见予以修复。
变更
改进隔离测试基础设施(Tom Lane、Michael Paquier)
允许为隔离测试步骤标注预期的完成顺序。这使得原本有竞态的测试用例能获得稳定结果,而无需我们此前用来抵御竞态条件的长延迟(那并不完全成功)。允许非带引号标识符作为隔离测试会话/步骤名(此前所有此类名称都必须加双引号)。检测并警告隔离测试中未使用的步骤。改进隔离测试中查询结果的显示。移除 isolationtester 的 “dry-run” 模式。移除 isolationtester 自身的内存泄漏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
降低缓存踩踏测试的开销(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Python 回归测试在 Python 3.10 下通过的问题(Honza Horak)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 printf("%s", NULL) 打印 (null) 而不是崩溃(Tom Lane)
这改善了边界情况下服务器的健壮性,并使我们的 printf 实现与常见库保持一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复时间点恢复在 ROLLBACK PREPARED 记录处停止时错误的日志消息(Simon Riggs)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
澄清涉及“非负”值的错误消息(Bharath Rupireddy)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 configure 在 OpenLDAP 2.5 下的工作,该版本不再有单独的 libldap_r 库(Adrian Ho、Tom Lane)
如果没有 libldap_r 库,我们现在静默假定 libldap 是线程安全的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
添加新的 make 目标 world-bin 和 install-world-bin(Andrew Dunstan)
它们分别与 world 和 install-world 相同,只是不构建或安装文档。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 TAP 测试的 make 规则(prove_installcheck)在 PGXS 用法下工作的问题(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免假定 GSSAPI 库返回的字符串以空字符结尾(Tom Lane)
GSSAPI 规范提供字符串指针和长度。实践中字符串后面的下一个字节通常是零,因此我们原来的编码实际并没有失败;但确实有 AddressSanitizer 报告的记录。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许在 MSVC 上以 GSSAPI 构建(Michael Paquier)
修复与现代 Kerberos 构建的各种不兼容。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中,如果指定过 --with-pgport,把它包含在 pg_config 报告的 configure 选项集合中(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。