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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.4.9 的版本变更

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

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

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

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

本次发布的全部变更

9.4.9

2016-08-11

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

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

本版提及的安全记录 2 个 CVE
本版发布说明提及的 CVE,可能包含已有漏洞的后续修复
CVE / 问题严重程度修复版本
CVE-2016-5424

修复客户端程序对数据库名和角色名中特殊字符的处理

8.59.4.9
CVE-2016-5423

修复嵌套 CASE-WHEN 表达式可能被错误评估的问题

4.39.4.9

PostgreSQL 9.4.9

升级与兼容性说明

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

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

安全相关修复嵌套 CASE-WHEN 表达式可能被错误评估的问题

变更

修复嵌套 CASE-WHEN 表达式可能被错误评估的问题(Heikki Linnakangas、Michael Paquier、Tom Lane)

出现在另一个 CASE 的测试值子表达式中的 CASE 表达式,可能会混淆其自身的测试值是否为空。此外,内联实现 CASE 表达式所用相等操作符的 SQL 函数时,可能向该 SQL 函数体内 CASE 表达式中调用的函数传递错误的测试值。如果测试值的数据类型不同,可能导致崩溃;而且此类情况可被滥用以泄露服务器内存的部分内容。(CVE-2016-5423)

关联记录(4)

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

安全相关修复客户端程序对数据库名和角色名中特殊字符的处理

变更

修复客户端程序对数据库名和角色名中特殊字符的处理(Noah Misch、Nathan Bossart、Michael Paquier)

vacuumdb 及其他客户端程序中的许多地方,可能会被包含双引号或反斜杠的数据库名和角色名弄混。收紧引用规则以使其安全。同时确保当 conninfo 字符串被用作这些程序的数据库名参数时,全程都被正确地如此对待。

修复 psql 的 \connect 和 \password 命令中对成对双引号的处理,使其与文档一致。

在 psql 的 \connect 命令中引入新的 -reuse-previous 选项,以显式控制是否复用先前连接的连接参数。(若不使用该选项,则与以前一样,根据数据库名是否看起来像 conninfo 字符串来决定。)这使 pg_dumpall 脚本能够安全地处理包含特殊字符的数据库名。

pg_dumpall 现在拒绝处理包含回车或换行的数据库名和角色名,因为在 Windows 上安全地引用这些字符似乎不切实际。将来我们可能会在服务器端拒绝此类名称,但尚未采取这一步骤。

这些被视为安全修复,因为包含特殊字符的恶意构造的对象名,可能在超级用户下次执行 pg_dumpall 或其他例行维护操作时被用于以超级用户权限执行命令。(CVE-2016-5424)

关联记录(4)

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

BUG 修复修复对嵌套组合值应用 IS NULL/IS NOT NULL 时的边界错误行为

变更

修复对嵌套组合值应用 IS NULL/IS NOT NULL 时的边界错误行为(Andrew Gierth、Tom Lane)

SQL 标准规定,对于全空值的行,IS NULL 应返回 TRUE(因此 ROW(NULL,NULL) IS NULL 得到 TRUE),但这并不意味着递归适用(因此 ROW(NULL, ROW(NULL,NULL)) IS NULL 得到 FALSE)。核心执行器对此处理正确,但某些规划器优化把该测试当作递归的(因而在两种情况下都产生 TRUE),而 contrib/postgres_fdw 可能产生类似错误行为的远程查询。

关联记录(4)

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

其他改进使 inet 和 cidr 数据类型正确拒绝包含过多冒号分隔字段的 IPv6 地址

变更

使 inet 和 cidr 数据类型正确拒绝包含过多冒号分隔字段的 IPv6 地址(Tom Lane)

关联记录(4)

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

BUG 修复防止 close_ps()(point ## lseg 操作符)在输入坐标为 NaN 时崩溃

变更

防止 close_ps()(point ## lseg 操作符)在输入坐标为 NaN 时崩溃(Tom Lane)

使其返回 NULL 而不是崩溃。

关联记录(4)

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

BUG 修复避免向 pg_get_expr() 传入不一致的值时可能发生的崩溃

变更

避免向 pg_get_expr() 传入不一致的值时可能发生的崩溃(Michael Paquier、Thomas Munro)

关联记录(2)

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

BUG 修复修复 to_number() 中几处一字节缓冲区过读

变更

修复 to_number() 中几处一字节缓冲区过读(Peter Eisentraut)

在几种情况下,to_number() 函数会从输入字符串中多读取一个字符。如果输入恰好位于内存末尾附近,则有很小的崩溃可能。

关联记录(4)

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

其他改进当指定了 WITH NO DATA 时,不对 CREATE MATERIALIZED VIEW 或 CREATE TABLE AS 中包含的查询运行规划器

变更

当指定了 WITH NO DATA 时,不对 CREATE MATERIALIZED VIEW 或 CREATE TABLE AS 中包含的查询运行规划器(Michael Paquier、Tom Lane)

这避免了一些不必要的失败条件,例如物化视图调用的稳定函数依赖某个尚不存在的表时。

关联记录(2)

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

其他改进避免在经过 heap_update() 的高开销路径中出现不安全的中间状态

变更

避免在经过 heap_update() 的高开销路径中出现不安全的中间状态(Masahiko Sawada、Andres Freund)

以前,这些情况会锁定目标元组(通过设置其 XMAX),但不为该动作记录 WAL,因此如果页面被刷出到磁盘,随后在元组更新完成之前发生数据库崩溃,就有数据完整性问题的风险。

关联记录(4)

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

BUG 修复修复行锁定操作 WAL 重放期间的提示位更新

变更

修复行锁定操作 WAL 重放期间的提示位更新(Andres Freund)

此问题唯一已知的后果是,已预备但未提交的事务所持有的行锁,在崩溃并重启之后可能无法被执行。

关联记录(2)

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

其他改进避免在可串行化模式下获取 FOR KEY SHARE 行锁时出现不必要的“could not serialize access”错误

变更

避免在可串行化模式下获取 FOR KEY SHARE 行锁时出现不必要的“could not serialize access”错误(Álvaro Herrera)

关联记录(2)

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

BUG 修复避免当指定变量的字符串值为空时 postgres -C 崩溃

变更

避免当指定变量的字符串值为空时 postgres -C 崩溃(Michael Paquier)

关联记录(3)

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

BUG 修复修复逻辑解码中可能丢失大型子事务的问题

变更

修复逻辑解码中可能丢失大型子事务的问题(Petru-Florin Mihancea)

关联记录(1)

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

BUG 修复修复子事务不包含实际更改时逻辑解码失败的问题

变更

修复子事务不包含实际更改时逻辑解码失败的问题(Marko Tiikkaja、Andrew Gierth)

关联记录(1)

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

其他改进确保后端能看到共享目录的最新统计信息

变更

确保后端能看到共享目录的最新统计信息(Tom Lane)

统计收集器在普通后端发出请求后,未能更新共享目录的统计文件。这个问题被部分掩盖了,因为自动清理启动器会定期发出确实触发此类更新的请求;但在禁用自动清理时就变得明显了。

关联记录(2)

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

其他改进避免多个后端进程密集请求更新时统计信息文件的冗余写入

变更

避免多个后端进程密集请求更新时统计信息文件的冗余写入(Tom Lane、Tomas Vondra)

关联记录(2)

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

其他改进避免在 VACUUM 期间消耗事务 ID

变更

避免在 VACUUM 期间消耗事务 ID(Alexander Korotkov)

VACUUM 中的某些情况会不必要地导致向当前事务分配 XID。通常这可以忽略不计,但如果已接近 XID 回卷限制,在防回卷清理期间消耗更多 XID 就非常糟糕了。

关联记录(4)

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

其他改进避免在VACUUM FREEZE期间取消热备查询

变更

避免在VACUUM FREEZE期间取消热备查询(Simon Riggs, Álvaro Herrera)

在原本空闲的主库服务器上执行VACUUM FREEZE可能导致其备库服务器上的查询被不必要地取消。

关联记录(3)

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

其他改进防止在从 9.3 之前版本 pg_upgrade 而来的安装中清理多事务 ID 时可能出现的失败

变更

防止在从 9.3 之前版本 pg_upgrade 而来的安装中清理多事务 ID 时可能出现的失败(Andrew Gierth、Álvaro Herrera)

此 bug 的常见症状是类似“MultiXactId NNN has not been created yet -- apparent wraparound”的错误。

关联记录(2)

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

其他改进当手动 ANALYZE 指定列列表时,不要重置表的 changes_since_analyze 计数器

变更

当手动 ANALYZE 指定列列表时,不要重置表的 changes_since_analyze 计数器(Tom Lane)

如果只分析部分列,就不应阻止其他列的例行自动分析。

关联记录(4)

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

BUG 修复修复 ANALYZE 对包含大量空值的唯一或近似唯一列的 n_distinct 高估

变更

修复 ANALYZE 对包含大量空值的唯一或近似唯一列的 n_distinct 高估(Tom Lane)

空值可能被当作它们本身就是不同的值来计数,导致某些类型查询中规划器的严重误估。

关联记录(4)

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

其他改进防止自动清理为同一共享目录启动多个工作进程

变更

防止自动清理为同一共享目录启动多个工作进程(Álvaro Herrera)

通常这不是什么大问题,因为清理本来就不会花很长时间;但在目录严重膨胀的情况下,这可能导致除一个工作进程外的所有工作进程都在无用地等待,而不是对其他表做有用的工作。

关联记录(4)

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

其他改进避免在放弃 b-tree 索引页删除尝试时重复释放缓冲区锁

变更

避免在放弃 b-tree 索引页删除尝试时重复释放缓冲区锁(Tom Lane)

在涉及损坏的 b-tree 索引的某些情况下,这一错误导致 VACUUM 无法完成。

关联记录(1)

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

其他改进防止为包含 NaN 分量值的几何列构建 GiST 索引时出现无限循环

变更

防止为包含 NaN 分量值的几何列构建 GiST 索引时出现无限循环(Tom Lane)

关联记录(3)

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

BUG 修复修复contrib/btree_gin以正确处理最小的bigint值

变更

修复contrib/btree_gin以正确处理最小的bigint值(Peter Eisentraut)

关联记录(4)

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

其他改进让 libpq 能正确解码来自未来版本服务器的服务器版本号

变更

让 libpq 能正确解码来自未来版本服务器的服务器版本号(Peter Eisentraut)

计划在 9.6 之后的版本中把服务器版本号从三段式改为两段式。确保 PQserverVersion() 在此类情况下返回正确的值。

关联记录(4)

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

BUG 修复修复ecpg对unsigned long long数组元素的代码

变更

修复ecpg对unsigned long long数组元素的代码(Michael Meskes)

关联记录(4)

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

其他改进修复pg_dump同时使用-c和-C选项时避免输出多余的CREATE SCHEMA public命令

变更

修复pg_dump同时使用-c和-C选项时避免输出多余的CREATE SCHEMA public命令(David Johnston、Tom Lane)

关联记录(3)

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

其他改进改进并行 pg_dump 和 pg_restore 对 SIGTERM/Ctrl-C 的处理

变更

改进并行 pg_dump 和 pg_restore 对 SIGTERM/Ctrl-C 的处理(Tom Lane)

确保工作进程迅速退出,并设法向所连接的后端发送查询取消请求,以防它们正在执行诸如 CREATE INDEX 之类的长时间运行操作。

关联记录(2)

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

BUG 修复修复并行 pg_dump 和 pg_restore 中的错误报告

变更

修复并行 pg_dump 和 pg_restore 中的错误报告(Tom Lane)

以前,pg_dump 或 pg_restore 工作进程报告的错误可能永远无法到达用户的控制台,因为消息要经过主进程传递,而存在多种会阻止主进程转发消息的死锁场景。现在改为把所有内容直接打印到 stderr。在某些情况下这会导致重复消息(例如所有工作进程都报告服务器关闭),但这似乎比没有消息要好。

关联记录(2)

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

其他改进确保 Windows 上的并行 pg_dump 或 pg_restore 在出错后正确关闭

变更

确保 Windows 上的并行 pg_dump 或 pg_restore 在出错后正确关闭(Kyotaro Horiguchi)

以前,它会报告错误,然后就一直停在那里,直到用户手动停止。

关联记录(2)

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

其他改进使 pg_dump 在构建时未包含 zlib 支持时表现更好

变更

使 pg_dump 在构建时未包含 zlib 支持时表现更好(Kyotaro Horiguchi)

它在并行转储时不能正确工作,在其他情况下还会发出一些相当无意义的警告。

关联记录(2)

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

其他改进使pg_basebackup接受-Z 0表示不压缩

变更

使pg_basebackup接受-Z 0表示不压缩(Fujii Masao)

关联记录(4)

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

BUG 修复修复构建 AIX 共享库的 makefile 规则,使其在并行 make 下安全

变更

修复构建 AIX 共享库的 makefile 规则,使其在并行 make 下安全(Noah Misch)

关联记录(4)

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

BUG 修复修复构建目录路径名包含空格时 TAP 测试和 MSVC 脚本的工作

变更

修复构建目录路径名包含空格时 TAP 测试和 MSVC 脚本的工作(Michael Paquier、Kyotaro Horiguchi)

关联记录(4)

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

其他改进使“statement timeout”与“lock timeout”的报告更具可预测性

变更

使“statement timeout”与“lock timeout”的报告更具可预测性(Tom Lane)

在高负载机器上,回归测试有时会因报告“lock timeout”而失败,尽管语句超时本应先发生。

关联记录(2)

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

其他改进使回归测试在丹麦语和威尔士语区域设置下安全

变更

使回归测试在丹麦语和威尔士语区域设置下安全(Jeff Janes、Tom Lane)

修改了一些会触发这些区域设置特殊排序规则的测试数据。

关联记录(4)

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

其他改进更新我们的时区代码副本,以匹配 IANA 的 tzcode 2016c 版

变更

更新我们的时区代码副本,以匹配 IANA 的 tzcode 2016c 版(Tom Lane)

这是为了应对时区数据文件未来预期的变更。它还修复了处理特殊时区方面的一些边界 bug。

关联记录(4)

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

其他改进将时区数据文件更新到tzdata发行版 2016f,以反映克麦罗沃和新西伯利亚的夏令时法规变更,以及阿塞拜疆、白俄罗斯和摩洛哥的历史修正。

变更

将时区数据文件更新到tzdata发行版 2016f,以反映克麦罗沃和新西伯利亚的夏令时法规变更,以及阿塞拜疆、白俄罗斯和摩洛哥的历史修正。

关联记录(4)

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

这份对比如何生成?

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

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

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

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

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