pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2020-08-13
9.6.19 历史版本维护截止 2021-11-11
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2018-1058 使 contrib 模块的安装脚本更安全 | 8.8 | 9.6.8 |
| CVE-2020-14350 使 contrib 模块的安装脚本更安全 | 7.1 | 9.6.19 |
对于运行 9.6.X 的用户,不需要转储/恢复。
不过,如果你是从 9.6.16 之前的版本升级,参见第 E.9 节。
变更
使 contrib 模块的安装脚本更安全(Tom Lane)
如果攻击者能在扩展的目标模式或某个前置扩展的模式中创建对象,就可以对扩展安装脚本发动类似 CVE-2018-1058 所述的攻击。由于扩展的安装通常需要超级用户权限,这就开辟了一条获得超级用户权限的路径。为降低此风险,我们更加谨慎地处理运行安装脚本所用的 search_path;在脚本内禁用 check_function_bodies;并修复部分 contrib 模块中使用的目录调整查询以确保其安全。同时提供文档帮助第三方扩展作者使其安装脚本安全。这不是完整的解决方案;依赖其他扩展的扩展如果安装时不小心,仍然可能有风险。(CVE-2020-14350)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题(Álvaro Herrera)
在使用内置逻辑复制时这是个相对次要的问题,因为内置 walreceiver 本来就会相当频繁地发送反馈应答(从而清除错误状态)。但在使用 pglogical 等其他复制系统时,它会导致显著的性能问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ts_headline() 执行缓慢的问题(Tom Lane)
上一批小版本中加入的短语搜索修复可能导致 ts_headline() 对长文档花费不合理的时间;更糟的是,该查询在有问题的循环内不可取消。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 repeat() 函数可以被查询取消中断(Joe Conway)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 numeric 类型列并行聚合时对 NaN 输入的错误处理(Tom Lane)
如果某些部分聚合工作者只遇到 NaN 而另一些只遇到非 NaN,结果的合并是错误的,可能导致错误的总体结果(即本应为 NaN 时不是)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
撤销 EXPLAIN 非文本输出格式中对索引名的双重引号(Tom Lane、Euler Taveira)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER TABLE 中约束重新验证的时机(David Rowley)
如果 ALTER TABLE 既需要完全重写表内容(例如因为更改列的数据类型),又需要扫描表以重新验证外键或 CHECK 约束,它有时会以错误的顺序行事,导致诸如 “could not read block 0 in file "base/nnnnn/nnnnn": read only 0 of 8192 bytes” 之类的奇怪错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确处理 FROM 子句中未展平子 SELECT 上附加的限定子句中的 LATERAL 引用(Tom Lane)
这一疏漏可能导致查询执行时的断言失败或崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免认为从未分析过的外部表有零个元组(Tom Lane)
这主要影响规划器对 GROUP BY 将得到的分组数的估计。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进服务器 buffile 模块中的错误处理(Thomas Munro)
修复了一些 I/O 错误与到达 EOF 无法区分、或者根本不被报告的情况。还在适当之处添加了块号和字节数等细节。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SERIALIZABLE 隔离模式下的冲突检查异常(Peter Geoghegan)
如果一个并发插入的元组被另一个并发事务更新,而这两个元组版本对当前事务的快照都不可见,序列化冲突检查可能就元组是否与当前事务的结果相关得出错误结论。这可能使一个可序列化事务在不该提交时(本应报序列化错误)成功提交。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免重复把死 btree 索引条目标记为死(Masahiko Sawada)
虽然功能上无害,但在启用校验和或打开 wal_log_hints 时,这会导致无用的 WAL 流量。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复某些代码路径在修改 pg_control 之前未获取正确锁的问题(Nathan Bossart、Fujii Masao)
这一疏漏可能使 pg_control 以不一致的校验和写出,之后可能引起麻烦,包括在下一次 pg_control 更新之前崩溃时无法重启数据库。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 currtid() 和 currtid2() 中的错误(Michael Paquier)
这些函数(未写入文档且只被古老版本的 ODBC 驱动使用)包含可导致崩溃的编码错误,或者在应用于没有存储的关系时产生诸如 “could not open file” 之类令人困惑的错误消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在持有自旋锁时调用 elog() 或 palloc()(Michael Paquier、Tom Lane)
与复制槽相关的逻辑有几处违反了这一编码规则。虽然出问题的几率很低,但被调用函数中的错误会导致自旋锁卡死。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误(Justin Pryzby、Tom Lane、Álvaro Herrera)
某些代码路径会产生诸如 “could not write file: Success” 之类的可笑报告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复同时具有表级权限和列级权限的表的并行恢复(Tom Lane)
表级权限授予必须先被应用,但并行恢复不能可靠地按此排序;这可能导致 “tuple concurrently updated” 错误,或某些列级权限授予消失。修复方法是在归档文件中的此类条目之间包含依赖链接,这意味着必须用修正后的 pg_dump 重新转储,以确保问题不会复发。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 pg_upgrade 在目标集簇中运行时 vacuum_defer_cleanup_age 被设为零(Bruce Momjian)
如果目标集簇的配置被修改为把 vacuum_defer_cleanup_age 设为非零值,会妨碍系统目录的冻结正常工作,导致升级以令人困惑的方式失败。确保升级期间覆盖任何此类设置。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_recvlogical 在退出前排空未决消息的问题(Noah Misch)
没有这一修复,复制发送端可能检测到发送失败并在对复制槽 LSN 位置进行预期的最终更新之前退出。这导致下次连接之后重新传输数据。还可能错过 pg_recvlogical 想消费的最后数据之后发送的错误消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_rewind 对源数据目录中刚被删除文件的处理(Justin Pryzby、Michael Paquier)
使用在线源数据库工作时,并发文件删除是可能的,但如果删除恰好发生在看到文件目录项与用 stat() 检查它之间, pg_rewind 就会困惑。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 pg_test_fsync 在 Windows 上使用二进制 I/O 模式(Michael Paquier)
此前它以文本模式写测试文件,这不能准确反映 PostgreSQL 的实际用法。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/dblink 未能正确初始化本地状态的问题(Joe Conway)
在恰当的环境组合下,这可能导致 dblink_close() 发出意外的远程 COMMIT。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pgcrypto 对 deflate() 的误用(Tom Lane)
由于错误处理 zlib 的 API 要求,pgp_sym_encrypt 函数可能产生错误的压缩数据。我们没有收到过这个错误在原版 zlib 下显现的报告,但在使用 IBM 的 zlibNX 实现时可以看到。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压逻辑的边界情况(Kyotaro Horiguchi、Michael Paquier)
压缩流可以合法地以空包结束,但解压器未能处理这一点,会抱怨数据损坏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
用 POSIX 标准的 strsignal() 取代 BSD 风格的 sys_siglist[](Tom Lane)
这避免了在非常新的 glibc 版本下的构建失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码(Juan José Santamaría Flecha、Davinder Singh、Amit Kapila)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免源代码树之上若干层存在名为 configure 的文件时我们的 MSVC 安装脚本可能失败的问题(Arnold Müller)
这可能干扰某些通过寻找 configure 来识别源代码树顶层的逻辑。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。