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

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

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.6.19 发布变化

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

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

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

完整发布变化

9.6.19

2020-08-13

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

9.6.19stable支持截止 2021-11-11

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

使 contrib 模块的安装脚本更安全

9.6.8已记录修复
CVE-2020-14350

使 contrib 模块的安装脚本更安全

9.6.19已记录修复

PostgreSQL 9.6.19

迁移与兼容性

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

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

安全使 contrib 模块的安装脚本更安全

变更

使 contrib 模块的安装脚本更安全(Tom Lane)

如果攻击者能在扩展的目标模式或某个前置扩展的模式中创建对象,就可以对扩展安装脚本发动类似 CVE-2018-1058 所述的攻击。由于扩展的安装通常需要超级用户权限,这就开辟了一条获得超级用户权限的路径。为降低此风险,我们更加谨慎地处理运行安装脚本所用的 search_path;在脚本内禁用 check_function_bodies;并修复部分 contrib 模块中使用的目录调整查询以确保其安全。同时提供文档帮助第三方扩展作者使其安装脚本安全。这不是完整的解决方案;依赖其他扩展的扩展如果安装时不小心,仍然可能有风险。(CVE-2020-14350)

关联记录 (4)
问题修复修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题

变更

修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题(Álvaro Herrera)

在使用内置逻辑复制时这是个相对次要的问题,因为内置 walreceiver 本来就会相当频繁地发送反馈应答(从而清除错误状态)。但在使用 pglogical 等其他复制系统时,它会导致显著的性能问题。

关联记录 (4)
问题修复修复 ts_headline() 执行缓慢的问题

变更

修复 ts_headline() 执行缓慢的问题(Tom Lane)

上一批小版本中加入的短语搜索修复可能导致 ts_headline() 对长文档花费不合理的时间;更糟的是,该查询在有问题的循环内不可取消。

关联记录 (3)
改进确保 repeat() 函数可以被查询取消中断

变更

确保 repeat() 函数可以被查询取消中断(Joe Conway)

关联记录 (4)
问题修复修复 numeric 类型列并行聚合时对 NaN 输入的错误处理

变更

修复 numeric 类型列并行聚合时对 NaN 输入的错误处理(Tom Lane)

如果某些部分聚合工作者只遇到 NaN 而另一些只遇到非 NaN,结果的合并是错误的,可能导致错误的总体结果(即本应为 NaN 时不是)。

关联记录 (3)
改进撤销 EXPLAIN 非文本输出格式中对索引名的双重引号

变更

撤销 EXPLAIN 非文本输出格式中对索引名的双重引号(Tom Lane、Euler Taveira)

关联记录 (4)
问题修复修复 ALTER TABLE 中约束重新验证的时机

变更

修复 ALTER TABLE 中约束重新验证的时机(David Rowley)

如果 ALTER TABLE 既需要完全重写表内容(例如因为更改列的数据类型),又需要扫描表以重新验证外键或 CHECK 约束,它有时会以错误的顺序行事,导致诸如 “could not read block 0 in file "base/nnnnn/nnnnn": read only 0 of 8192 bytes” 之类的奇怪错误。

关联记录 (4)
改进正确处理 FROM 子句中未展平子 SELECT 上附加的限定子句中的 LATERAL 引用

变更

正确处理 FROM 子句中未展平子 SELECT 上附加的限定子句中的 LATERAL 引用(Tom Lane)

这一疏漏可能导致查询执行时的断言失败或崩溃。

关联记录 (4)
改进避免认为从未分析过的外部表有零个元组

变更

避免认为从未分析过的外部表有零个元组(Tom Lane)

这主要影响规划器对 GROUP BY 将得到的分组数的估计。

关联记录 (4)
改进改进服务器 buffile 模块中的错误处理

变更

改进服务器 buffile 模块中的错误处理(Thomas Munro)

修复了一些 I/O 错误与到达 EOF 无法区分、或者根本不被报告的情况。还在适当之处添加了块号和字节数等细节。

关联记录 (4)
问题修复修复 SERIALIZABLE 隔离模式下的冲突检查异常

变更

修复 SERIALIZABLE 隔离模式下的冲突检查异常(Peter Geoghegan)

如果一个并发插入的元组被另一个并发事务更新,而这两个元组版本对当前事务的快照都不可见,序列化冲突检查可能就元组是否与当前事务的结果相关得出错误结论。这可能使一个可序列化事务在不该提交时(本应报序列化错误)成功提交。

关联记录 (4)
改进避免重复把死 btree 索引条目标记为死

变更

避免重复把死 btree 索引条目标记为死(Masahiko Sawada)

虽然功能上无害,但在启用校验和或打开 wal_log_hints 时,这会导致无用的 WAL 流量。

关联记录 (4)
问题修复修复某些代码路径在修改 pg_control 之前未获取正确锁的问题

变更

修复某些代码路径在修改 pg_control 之前未获取正确锁的问题(Nathan Bossart、Fujii Masao)

这一疏漏可能使 pg_control 以不一致的校验和写出,之后可能引起麻烦,包括在下一次 pg_control 更新之前崩溃时无法重启数据库。

关联记录 (4)
问题修复修复 currtid() 和 currtid2() 中的错误

变更

修复 currtid() 和 currtid2() 中的错误(Michael Paquier)

这些函数(未写入文档且只被古老版本的 ODBC 驱动使用)包含可导致崩溃的编码错误,或者在应用于没有存储的关系时产生诸如 “could not open file” 之类令人困惑的错误消息。

关联记录 (4)
改进避免在持有自旋锁时调用 elog() 或 palloc()

变更

避免在持有自旋锁时调用 elog() 或 palloc()(Michael Paquier、Tom Lane)

与复制槽相关的逻辑有几处违反了这一编码规则。虽然出问题的几率很低,但被调用函数中的错误会导致自旋锁卡死。

关联记录 (4)
改进在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误

变更

在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误(Justin Pryzby、Tom Lane、Álvaro Herrera)

某些代码路径会产生诸如 “could not write file: Success” 之类的可笑报告。

关联记录 (4)
问题修复修复同时具有表级权限和列级权限的表的并行恢复

变更

修复同时具有表级权限和列级权限的表的并行恢复(Tom Lane)

表级权限授予必须先被应用,但并行恢复不能可靠地按此排序;这可能导致 “tuple concurrently updated” 错误,或某些列级权限授予消失。修复方法是在归档文件中的此类条目之间包含依赖链接,这意味着必须用修正后的 pg_dump 重新转储,以确保问题不会复发。

关联记录 (4)
改进确保 pg_upgrade 在目标集簇中运行时 vacuum_defer_cleanup_age 被设为零

变更

确保 pg_upgrade 在目标集簇中运行时 vacuum_defer_cleanup_age 被设为零(Bruce Momjian)

如果目标集簇的配置被修改为把 vacuum_defer_cleanup_age 设为非零值,会妨碍系统目录的冻结正常工作,导致升级以令人困惑的方式失败。确保升级期间覆盖任何此类设置。

关联记录 (4)
问题修复修复 pg_recvlogical 在退出前排空未决消息的问题

变更

修复 pg_recvlogical 在退出前排空未决消息的问题(Noah Misch)

没有这一修复,复制发送端可能检测到发送失败并在对复制槽 LSN 位置进行预期的最终更新之前退出。这导致下次连接之后重新传输数据。还可能错过 pg_recvlogical 想消费的最后数据之后发送的错误消息。

关联记录 (4)
问题修复修复 pg_rewind 对源数据目录中刚被删除文件的处理

变更

修复 pg_rewind 对源数据目录中刚被删除文件的处理(Justin Pryzby、Michael Paquier)

使用在线源数据库工作时,并发文件删除是可能的,但如果删除恰好发生在看到文件目录项与用 stat() 检查它之间, pg_rewind 就会困惑。

关联记录 (4)
改进让 pg_test_fsync 在 Windows 上使用二进制 I/O 模式

变更

让 pg_test_fsync 在 Windows 上使用二进制 I/O 模式(Michael Paquier)

此前它以文本模式写测试文件,这不能准确反映 PostgreSQL 的实际用法。

关联记录 (4)
问题修复修复 contrib/dblink 未能正确初始化本地状态的问题

变更

修复 contrib/dblink 未能正确初始化本地状态的问题(Joe Conway)

在恰当的环境组合下,这可能导致 dblink_close() 发出意外的远程 COMMIT。

关联记录 (4)
问题修复修复 contrib/pgcrypto 对 deflate() 的误用

变更

修复 contrib/pgcrypto 对 deflate() 的误用(Tom Lane)

由于错误处理 zlib 的 API 要求,pgp_sym_encrypt 函数可能产生错误的压缩数据。我们没有收到过这个错误在原版 zlib 下显现的报告,但在使用 IBM 的 zlibNX 实现时可以看到。

关联记录 (4)
问题修复修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压逻辑的边界情况

变更

修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压逻辑的边界情况(Kyotaro Horiguchi、Michael Paquier)

压缩流可以合法地以空包结束,但解压器未能处理这一点,会抱怨数据损坏。

关联记录 (4)
改进用 POSIX 标准的 strsignal() 取代 BSD 风格的 sys_siglist[]

变更

用 POSIX 标准的 strsignal() 取代 BSD 风格的 sys_siglist[](Tom Lane)

这避免了在非常新的 glibc 版本下的构建失败。

关联记录 (3)
改进支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码

变更

支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码(Juan José Santamaría Flecha、Davinder Singh、Amit Kapila)

关联记录 (4)
改进避免源代码树之上若干层存在名为 configure 的文件时我们的 MSVC 安装脚本可能失败的问题

变更

避免源代码树之上若干层存在名为 configure 的文件时我们的 MSVC 安装脚本可能失败的问题(Arnold Müller)

这可能干扰某些通过寻找 configure 来识别源代码树顶层的逻辑。

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

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

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

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