↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.4.20 的版本变更

本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。

查看该版本全部变更
查看该版本全部变更

从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。

收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。

本次发布的全部变更

9.4.20

2018-11-08

导出 JSON
42项变更功能、修复与改进
1次版本发布按发行版本归档
0个 CVE本版说明中提及的漏洞编号

9.4.20 历史版本维护截止 2020-02-13

PostgreSQL 9.4.20

升级与兼容性说明

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

但是,如果你是从早于 9.4.18 的版本升级,请参见第 E.9 节。

BUG 修复修复 has_foo_privilege() 函数族的边界失败

变更

修复 has_foo_privilege() 函数族的边界失败(Tom Lane)

提供无效对象 OID 时返回 NULL 而不是抛出错误。其中一些函数本来就做对了,但并非全部。has_column_privilege() 在某些平台上还可能崩溃。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免正则表达式匹配/分割函数在长字符串上的 O(N^2) 减速

变更

避免正则表达式匹配/分割函数在长字符串上的 O(N^2) 减速(Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免词法分析器在长+或-字符字符串上的 O(N^3) 减速

变更

避免词法分析器在长+或-字符字符串上的 O(N^3) 减速(Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复外层查询反向扫描时 SubPlan 被错误执行的问题

变更

修复外层查询反向扫描时 SubPlan 被错误执行的问题(Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复回卷所引用游标后 UPDATE/DELETE ... WHERE CURRENT OF ... 的失败

变更

修复回卷所引用游标后 UPDATE/DELETE ... WHERE CURRENT OF ... 的失败(Tom Lane)

扫描多个关系(特别是继承树)的游标如果被回卷到较早的关系,可能产生错误行为。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 EvalPlanQual 正确处理条件执行的 InitPlan

变更

修复 EvalPlanQual 正确处理条件执行的 InitPlan(Andrew Gierth、Tom Lane)

如果并发更新包含诸如 CASE 构造内的不相关子 SELECT 之类的代码,这会导致难以重现的崩溃或错误答案。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复字符类检查在 Windows 上对 U+FFFF 以上的 Unicode 字符不再失败

变更

修复字符类检查在 Windows 上对 U+FFFF 以上的 Unicode 字符不再失败(Tom Lane、Kenji Uno)

此 bug 影响全文搜索操作以及 contrib/ltree 和 contrib/pg_trgm。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保外部表拥有的序列由该表上的 ALTER OWNER 处理

变更

确保外部表拥有的序列由该表上的 ALTER OWNER 处理(Peter Eisentraut)

所有权更改应当也传播到这种序列,但外部表的情况被遗漏了。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复array_out()结果字符串空间过度分配的问题

变更

修复array_out()结果字符串空间过度分配的问题(Keiichi Hirobe)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复重复 SP-GiST 索引扫描中的内存泄漏

变更

修复重复 SP-GiST 索引扫描中的内存泄漏(Tom Lane)

目前已知只有当使用 SP-GiST 的排他约束在单条命令中接收许多新索引条目时,这才会达到显著程度。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 ApplyLogicalMappingFile() 用完后关闭映射文件

变更

确保 ApplyLogicalMappingFile() 用完后关闭映射文件(Tomas Vondra)

此前文件描述符被泄漏,最终导致逻辑解码期间的失败。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑解码在已映射目录表被反复重写(例如被VACUUM FULL重写)时的问题

变更

修复逻辑解码在已映射目录表被反复重写(例如被VACUUM FULL重写)时的问题(Andres Freund)

其他改进阻止以过低的wal_level值(不足以支持现有复制槽)启动服务器

变更

阻止以过低的wal_level值(不足以支持现有复制槽)启动服务器(Andres Freund)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免工具命令导致无限递归时崩溃

变更

避免工具命令导致无限递归时崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进初始化热备时,处理主库两阶段事务造成的重复 XID

变更

初始化热备时,处理主库两阶段事务造成的重复 XID(Michael Paquier、Konstantin Knizhnik)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 bootstrap 和独立后端以及 initdb 中随机化 random() 的种子

变更

在 bootstrap 和独立后端以及 initdb 中随机化 random() 的种子(Noah Misch)

这一更改的主要实际效果是避免一种场景:initdb 因总是使用相同的随机种子导致的名称冲突,而错误地断定 POSIX 共享内存不可用。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许中断 DSM 分配

变更

允许中断 DSM 分配(Chris Travers)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免从 WAL 重放 GIN 页重压缩时可能的缓冲区越界

变更

避免从 WAL 重放 GIN 页重压缩时可能的缓冲区越界(Alexander Korotkov、Sivasubramanian Ramasubramanian)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复复制槽目录遗漏 fsync 的问题

变更

修复复制槽目录遗漏 fsync 的问题(Konstantin Knizhnik、Michael Paquier)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在缓慢服务器上使用wal_sender_timeout时意外超时的问题

变更

修复在缓慢服务器上使用wal_sender_timeout时意外超时的问题(Noah Misch)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复确保热备进程使用正确的 WAL 一致点

变更

确保热备进程使用正确的 WAL 一致点(Alexander Kukushkin、Michael Paquier)

这防止备库服务器在 WAL 重放期间刚达到一致数据库状态之后可能的行为异常。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进处理SIGQUIT时不运行 atexit 回调

变更

处理SIGQUIT时不运行 atexit 回调(Heikki Linnakangas)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进不要把外部服务器用户映射记录为扩展的成员

变更

不要把外部服务器用户映射记录为扩展的成员(Tom Lane)

如果在扩展脚本中执行 CREATE USER MAPPING,会为用户映射创建扩展依赖,这是意料之外的。角色不能是扩展成员,因此用户映射也不应该是。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 syslogger 在打开 CSV 日志文件失败时更加健壮

变更

使 syslogger 在打开 CSV 日志文件失败时更加健壮(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复pg_dump对不同对象名排序时可能不一致的问题

变更

修复pg_dump对不同对象名排序时可能不一致的问题(Jacob Champion)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 pg_restore 发出 DISABLE/ENABLE TRIGGER 命令时对表名进行模式限定

变更

确保 pg_restore 发出 DISABLE/ENABLE TRIGGER 命令时对表名进行模式限定(Tom Lane)

这避免了以受限搜索路径运行恢复的新策略导致的失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_upgrade 正确处理扩展中的事件触发器

变更

修复 pg_upgrade 正确处理扩展中的事件触发器(Haribabu Kommi)

pg_upgrade 未能保留事件触发器的扩展成员身份。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复pg_upgrade的集簇状态检查在备库服务器上正确工作的问题

变更

修复pg_upgrade的集簇状态检查在备库服务器上正确工作的问题(Bruce Momjian)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在所有 contrib/cube 函数中强制执行 cube 类型的维度限制

变更

在所有 contrib/cube 函数中强制执行 cube 类型的维度限制(Andrey Borodin)

此前某些与 cube 相关的函数可以构造出会被 cube_in() 拒绝的值,导致转储/恢复失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/unaccent 的 unaccent() 函数使用与该函数同模式中的 unaccent 文本搜索词典

变更

修复 contrib/unaccent 的 unaccent() 函数使用与该函数同模式中的 unaccent 文本搜索词典(Tom Lane)

此前它尝试用搜索路径查找词典,如果搜索路径是受限值就可能失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 macOS 10.14(Mojave)上的构建问题

变更

修复 macOS 10.14(Mojave)上的构建问题(Tom Lane)

调整 configure 向 CPPFLAGS 添加 -isysroot 开关;没有它,PL/Perl 和 PL/Tcl 在 macOS 10.14 上无法配置或构建。所用的具体 sysroot 可以在配置或构建时通过在 configure 或 make 的参数中设置 PG_SYSROOT 变量来覆盖。

现在建议与 Perl 相关的扩展在其编译器标志中写 $(perl_includespec) 而不是 -I$(perl_archlibexp)/CORE。后者在大多数平台上继续有效,但在最近的 macOS 上不行。

此外,在最近的 macOS 版本上构建 PL/Tcl 应该不再需要手动指定 --with-tclconfig。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 MSVC 构建和回归测试脚本在最近的 Perl 版本上工作

变更

修复 MSVC 构建和回归测试脚本在最近的 Perl 版本上工作(Andrew Dunstan)

Perl 不再默认在搜索路径中包含当前目录;绕过这一点。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持在 Windows 上使用 Visual Studio 2015 或 Visual Studio 2017 构建

变更

支持在 Windows 上使用 Visual Studio 2015 或 Visual Studio 2017 构建(Michael Paquier、Haribabu Kommi)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 btree 比较函数返回 INT_MIN

变更

允许 btree 比较函数返回 INT_MIN(Tom Lane)

到目前为止,我们禁止数据类型相关的比较函数返回 INT_MIN,这允许调用者只需对比较结果取反即可颠倒排序顺序。然而,对于直接返回 memcmp()、strcmp() 等结果的比较函数,这从来都不安全,因为 POSIX 没有对这些函数施加任何此类限制。至少某些最近版本的 memcmp() 可以返回 INT_MIN,导致错误的排序。因此我们移除了这一限制。调用者现在如果想颠倒排序顺序,必须使用 INVERT_COMPARE_RESULT() 宏。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复共享失效消息处理中的递归风险

变更

修复共享失效消息处理中的递归风险(Tom Lane)

这个错误可能导致例如无法访问刚被 VACUUM FULL 处理过的系统目录或索引。

这一更改给 LockAcquire 添加了新的结果码,可能影响该函数的外部调用者,尽管只有非常不寻常的使用模式才会有问题。LockAcquireExtended 的 API 也有更改。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 SPI_connect() 和 SPI_finish() 期间保存和恢复 SPI 的全局变量

变更

在 SPI_connect() 和 SPI_finish() 期间保存和恢复 SPI 的全局变量(Chapman Flack、Tom Lane)

这防止一个使用 SPI 的函数调用另一个时可能的干扰。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在向后分支中提供 ALLOCSET_DEFAULT_SIZES 及同级宏

变更

在向后分支中提供 ALLOCSET_DEFAULT_SIZES 及同级宏(Tom Lane)

这些宏自 9.6 起就已存在,但有请求把它们添加到较旧的分支,以便扩展无需针对分支编写特定代码即可依赖它们。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免使用可能未充分对齐的页缓冲区

变更

避免使用可能未充分对齐的页缓冲区(Tom Lane)

发明了新的联合类型 PGAlignedBlock 和 PGAlignedXLogBlock,并用它们代替普通的 char 数组,确保编译器不能把缓冲区放在未对齐的起始地址。这修复了对齐挑剔平台上可能的核心转储,并且即使在允许未对齐的平台上也可能改进性能。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 src/port/snprintf.c 遵循 C99 标准对 snprintf() 结果值的定义

变更

使 src/port/snprintf.c 遵循 C99 标准对 snprintf() 结果值的定义(Tom Lane)

在使用此代码的平台(主要是 Windows)上,其前 C99 行为可能导致无法检测缓冲区越界(如果调用代码假定 C99 语义)。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 i386 上用 clang 编译器构建时,要求使用 -msse2

变更

在 i386 上用 clang 编译器构建时,要求使用 -msse2(Andres Freund)

这避免了浮点溢出检查遗漏的问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 configure 对 strerror_r() 结果类型的检测

变更

修复 configure 对 strerror_r() 结果类型的检测(Tom Lane)

原来的编码在 Linux 上用 icc 构建时(或许其他情况下)得到错误答案,导致 libpq 不能为系统报告的错误返回有用的错误消息。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2018g,涉及智利、斐济、摩洛哥和俄罗斯(伏尔加格勒)的夏令时法规变更,以及中国、夏威夷、日本、澳门和朝鲜的历史修正。

变更

更新时区数据文件到 tzdata 版本 2018g,涉及智利、斐济、摩洛哥和俄罗斯(伏尔加格勒)的夏令时法规变更,以及中国、夏威夷、日本、澳门和朝鲜的历史修正。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。