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

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

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.4.10 发布变化

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

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

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

完整发布变化

9.4.10

2016-10-27

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

9.4.10stable支持截止 2020-02-13

PostgreSQL 9.4.10

迁移与兼容性

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

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

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

问题修复修复关系空闲空间映射和可见性映射截断的 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)
问题修复修复在大端机器上 GIN 索引 WAL 记录创建不正确的问题

变更

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

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

关联记录 (1)
问题修复修复 SELECT FOR UPDATE/SHARE,使其正确锁定已被随后中止的事务更新过的元组

变更

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

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

关联记录 (2)
问题修复修复涉及 CTE 扫描的 EvalPlanQual 重新检查

变更

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

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

关联记录 (4)
问题修复修复子查询中哈希聚合不当重复先前结果的问题

变更

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

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

关联记录 (4)
问题修复修复对带 PRIMARY KEY 或 REPLICA IDENTITY 索引的表执行批量 UPDATE 时的查询生命周期内存泄漏

变更

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

关联记录 (1)
问题修复修复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)
问题修复修复 VACUUM 为截断表而等待排他表锁时的超时长度

变更

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

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

关联记录 (4)
问题修复修复创建或更改表时合并继承 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)
问题修复避免因未持有缓冲区锁测试元组可见性而导致的极低概率数据损坏

变更

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

关联记录 (5)
问题修复修复子事务的 WAL 输出大到足以溢出到磁盘时逻辑 WAL 解码的正常工作

变更

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

关联记录 (2)
问题修复修复逻辑 WAL 解码中的缓冲区过度读取

变更

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

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

问题修复修复截断超过 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)
问题修复避免 libpq 中的边界情况内存泄漏

变更

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

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

关联记录 (5)
改进使 ecpg 的 --help 和 --version 选项与其他可执行程序保持一致

变更

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

关联记录 (4)
问题修复修复 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)
问题修复修复 pg_xlogdump 处理以跨越多页的续页记录开头的 WAL 文件的问题

变更

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

关联记录 (2)
问题修复修复 contrib/pg_buffercache 在 shared_buffers 超过 256GB 时的工作问题

变更

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

关联记录 (1)
问题修复修复 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 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。

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

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