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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.4.10 的版本变更

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

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

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

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

本次发布的全部变更

9.4.10

2016-10-27

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

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

PostgreSQL 9.4.10

升级与兼容性说明

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

不过,如果你的安装受到下面第一条变更日志条目所述 bug 的影响,更新之后你可能需要采取行动修复损坏的空闲空间映射。

另外,如果你是从 9.4.6 之前的版本升级,参见第 E.21 节。

BUG 修复修复关系空闲空间映射和可见性映射截断的 WAL 记录

变更

修复关系空闲空间映射和可见性映射截断的 WAL 记录(Pavan Deolasee、Heikki Linnakangas)

这些文件有可能在崩溃恢复期间未被正确恢复,或者在备库服务器上被错误写入。空闲空间映射中的虚假条目可能导致访问已从关系中截断掉的页,通常产生诸如 “could not read block XXX: read only 0 of 8192 bytes” 的错误。如果启用了校验和,可见性映射中的校验和失败也是可能的。

判断是否存在问题以及如何修复的程序在https://wiki.postgresql.org/wiki/Free_Space_Map_Problems中讨论。

关联记录(3)

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

BUG 修复修复在大端机器上 GIN 索引 WAL 记录创建不正确的问题

变更

修复在大端机器上 GIN 索引 WAL 记录创建不正确的问题(Tom Lane)

典型症状是 WAL 重放期间出现“unexpected GIN leaf action”错误。

关联记录(1)

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

BUG 修复修复 SELECT FOR UPDATE/SHARE,使其正确锁定已被随后中止的事务更新过的元组

变更

修复 SELECT FOR UPDATE/SHARE,使其正确锁定已被随后中止的事务更新过的元组(Álvaro Herrera)

在 9.5 及之后的版本中,SELECT 有时可能完全不返回此类元组。虽然尚未证明在更早的版本中会发生失败,但在并发更新的情况下是有可能的。

关联记录(2)

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

BUG 修复修复涉及 CTE 扫描的 EvalPlanQual 重新检查

变更

修复涉及 CTE 扫描的 EvalPlanQual 重新检查(Tom Lane)

重新检查总是把 CTE 视为不返回任何行,通常导致无法更新最近已更新的行。

关联记录(4)

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

BUG 修复修复子查询中哈希聚合不当重复先前结果的问题

变更

修复子查询中哈希聚合不当重复先前结果的问题(Andrew Gierth)

判断能否复用先前计算的聚合状态值哈希表的测试,忽略了聚合参数表达式中出现外层查询引用的可能性。这种引用的值发生变化时本应重新计算哈希表,但实际没有。

关联记录(4)

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

BUG 修复修复对带 PRIMARY KEY 或 REPLICA IDENTITY 索引的表执行批量 UPDATE 时的查询生命周期内存泄漏

变更

修复对带 PRIMARY KEY 或 REPLICA IDENTITY 索引的表执行批量 UPDATE 时的查询生命周期内存泄漏(Tom Lane)

关联记录(1)

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

BUG 修复修复track_io_timing打开时 EXPLAIN 发出有效 XML

变更

修复track_io_timing打开时 EXPLAIN 发出有效 XML(Markus Winand)

此前 XML 输出格式选项产生语法无效的标记,如 <I/O-Read-Time>。现在它被渲染为 <I-O-Read-Time>。

关联记录(4)

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

其他改进抑制在 EXPLAIN 中为未测量的时间打印零值

变更

抑制在 EXPLAIN 中为未测量的时间打印零值(Maksim Milyutin)

某些选项组合会为在该组合下实际上从不测量的时间打印零值。EXPLAIN 的一般策略是完全不打印此类字段,因此在所有情况下都保持一致。

关联记录(3)

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

BUG 修复修复 VACUUM 为截断表而等待排他表锁时的超时长度

变更

修复 VACUUM 为截断表而等待排他表锁时的超时长度(Simon Riggs)

该超时本应为 50 毫秒,但实际上只有 50 微秒,导致 VACUUM 比预期更容易放弃截断。将其设置为预期值。

关联记录(4)

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

BUG 修复修复创建或更改表时合并继承 CHECK 约束的 bug

变更

修复创建或更改表时合并继承 CHECK 约束的 bug(Tom Lane、Amit Langote)

允许以任一顺序向父表和子表添加相同的 CHECK 约束。防止父表的有效约束与子表的 NOT VALID 约束合并。同样防止 NO INHERIT 子约束与继承约束合并。

关联记录(4)

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

其他改进移除对 numeric_in() 和 numeric_recv() 所接受值的人为限制

变更

移除对 numeric_in() 和 numeric_recv() 所接受值的人为限制(Tom Lane)

我们允许数值达到存储格式的极限(超过 1e100000),因此 numeric_in() 拒绝科学计数法指数超过 1000 的做法相当无意义。同样,numeric_recv() 拒绝输入值超过 1000 位数字也很荒谬。

关联记录(4)

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

BUG 修复避免因未持有缓冲区锁测试元组可见性而导致的极低概率数据损坏

变更

避免因未持有缓冲区锁测试元组可见性而导致的极低概率数据损坏(Thomas Munro、Peter Geoghegan、Tom Lane)

关联记录(5)

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

BUG 修复修复子事务的 WAL 输出大到足以溢出到磁盘时逻辑 WAL 解码的正常工作

变更

修复子事务的 WAL 输出大到足以溢出到磁盘时逻辑 WAL 解码的正常工作(Andres Freund)

关联记录(2)

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

BUG 修复修复逻辑 WAL 解码中的缓冲区过度读取

变更

修复逻辑 WAL 解码中的缓冲区过度读取(Tom Lane)

元组更新记录的逻辑解码会多读取 23 个字节,这通常无害,但运气极差时可能导致崩溃。

BUG 修复修复截断超过 1GB 的临时关系时文件描述符泄漏的问题

变更

修复截断超过 1GB 的临时关系时文件描述符泄漏的问题(Andres Freund)

关联记录(4)

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

其他改进禁止在启用 standby_mode 的情况下启动独立后端

变更

禁止在启用 standby_mode 的情况下启动独立后端(Michael Paquier)

这不可能有任何用处,因为不会有 WAL 接收器进程来获取更多 WAL 数据;而且这可能导致未针对此种情况设计的代码出现不当行为。

关联记录(4)

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

其他改进在回收先前使用过的复制槽时正确初始化其状态

变更

在回收先前使用过的复制槽时正确初始化其状态(Michael Paquier)

未重置槽的所有字段可能阻止 VACUUM 移除死元组。

关联记录(1)

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

其他改进在 Linux 上尝试使用大页时,把共享内存分配请求舍入到实际大页大小的整数倍

变更

在 Linux 上尝试使用大页时,把共享内存分配请求舍入到实际大页大小的整数倍(Tom Lane)

这避免了在默认大页大小非典型的系统上 munmap() 期间可能的失败。除崩溃恢复情况外,除了日志消息之外没有不良影响。

关联记录(2)

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

其他改进为动态共享内存控制段的 ID 使用更随机的值

变更

为动态共享内存控制段的 ID 使用更随机的值(Robert Haas、Tom Lane)

以前每次都会选择相同的值,因为它派生自 random(),而 srandom() 尚未被调用。虽然相对无害,但这不是预期行为。

关联记录(1)

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

其他改进在 Windows 上,动态共享内存控制段创建遇到访问拒绝错误后重试

变更

在 Windows 上,动态共享内存控制段创建遇到访问拒绝错误后重试(Kyotaro Horiguchi、Amit Kapila)

当段已存在时,Windows 有时返回 ERROR_ACCESS_DENIED 而不是 ERROR_ALREADY_EXISTS。这导致系统认为前者是不可恢复的错误,从而使 postmaster 启动失败。

关联记录(1)

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

其他改进不要在 libpq 中跨多个连接共享 SSL 上下文

变更

不要在 libpq 中跨多个连接共享 SSL 上下文(Heikki Linnakangas)

这导致了各种边界情况 bug,特别是当尝试对不同连接使用不同 SSL 参数时。

关联记录(5)

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

BUG 修复避免 libpq 中的边界情况内存泄漏

变更

避免 libpq 中的边界情况内存泄漏(Tom Lane)

报告的问题涉及 PQreset() 期间泄漏错误报告,但可能有相关情况。

关联记录(5)

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

其他改进使 ecpg 的 --help 和 --version 选项与其他可执行程序保持一致

变更

使 ecpg 的 --help 和 --version 选项与其他可执行程序保持一致(Haribabu Kommi)

关联记录(4)

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

BUG 修复修复 pgbench 平均延迟的计算

变更

修复 pgbench 平均延迟的计算(Fabien Coelho)

当脚本中存在 \sleep 命令,或者测试时长以事务数而非总时间指定时,计算是不正确的。

关联记录(1)

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

其他改进在 pg_dump 中,永不转储范围构造函数

变更

在 pg_dump 中,永不转储范围构造函数(Tom Lane)

这一疏漏导致包含范围类型的扩展在 pg_upgrade 时因重复创建构造函数而失败。

关联记录(3)

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

其他改进在 pg_xlogdump 中,使用 --follow 选项时重试打开新的 WAL 段

变更

在 pg_xlogdump 中,使用 --follow 选项时重试打开新的 WAL 段(Magnus Hagander)

这考虑到服务器创建下一段的可能延迟。

关联记录(3)

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

BUG 修复修复 pg_xlogdump 处理以跨越多页的续页记录开头的 WAL 文件的问题

变更

修复 pg_xlogdump 处理以跨越多页的续页记录开头的 WAL 文件的问题(Pavan Deolasee)

关联记录(2)

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

BUG 修复修复 contrib/pg_buffercache 在 shared_buffers 超过 256GB 时的工作问题

变更

修复 contrib/pg_buffercache 在 shared_buffers 超过 256GB 时的工作问题(KaiGai Kohei)

关联记录(1)

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

BUG 修复修复 contrib/intarray/bench/bench.pl,使其在给定 -e 选项时打印它执行的 EXPLAIN 的结果

变更

修复 contrib/intarray/bench/bench.pl,使其在给定 -e 选项时打印它执行的 EXPLAIN 的结果(Daniel Gustafsson)

关联记录(4)

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

其他改进安装 TAP 测试基础设施,使其可用于扩展测试

变更

安装 TAP 测试基础设施,使其可用于扩展测试(Craig Ringer)

当 PostgreSQL 配置了 --enable-tap-tests 时,“make install” 现在会把 TAP 测试的 Perl 支持文件安装到 PGXS 能找到的位置。这允许非核心扩展使用 $(prove_check) 而无需额外测试。

关联记录(1)

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

其他改进在 MSVC 构建中,把 pg_recvlogical 包含在仅客户端安装中

变更

在 MSVC 构建中,把 pg_recvlogical 包含在仅客户端安装中(MauMau)

关联记录(1)

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

其他改进更新 Windows 时区映射,以识别较新 Windows 版本中新增的一些时区名称

变更

更新 Windows 时区映射,以识别较新 Windows 版本中新增的一些时区名称(Michael Paquier)

关联记录(3)

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

其他改进防止已过时的动态时区缩写失效

变更

防止已过时的动态时区缩写失效(Tom Lane)

如果动态时区缩写与所引用时区中的任何条目都不匹配,就把它视为等效于该时区名称。这避免了当 IANA 从其时区数据库中移除缩写时出现意外失败——他们在 tzdata 2016f 版中就这样做过,而且将来可能再次这样做。后果不仅限于无法识别单个缩写;任何不匹配都会导致 pg_timezone_abbrevs 视图完全失败。

关联记录(4)

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

其他改进更新时区数据文件到 tzdata 版本 2016h,涉及巴勒斯坦和土耳其的夏令时法规变更,加上土耳其和俄罗斯一些地区的历史修正。南极洲、前苏联和斯里兰卡的一些时区改用数字缩写。

变更

更新时区数据文件到 tzdata 版本 2016h,涉及巴勒斯坦和土耳其的夏令时法规变更,加上土耳其和俄罗斯一些地区的历史修正。南极洲、前苏联和斯里兰卡的一些时区改用数字缩写。

IANA 时区数据库以前为所有时区提供文本缩写,有时编造在当地居民中几乎或完全没有使用的缩写。他们正在逆转这一政策,改为在没有证据表明实际使用英文缩写的区域使用数字 UTC 偏移。至少目前,PostgreSQL 将继续接受这种被移除的缩写用于时间戳输入。但它们不会显示在 pg_timezone_names 视图中,也不用于输出。

在此更新中,AMT 不再显示为表示亚美尼亚时间。因此我们把 Default 缩写集改为把它解释为亚马逊时间,即 UTC-4 而不是 UTC+4。

关联记录(5)

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

这份对比如何生成?

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

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

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

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

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