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

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

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.4.18 发布变化

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

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

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

完整发布变化

9.4.18

2018-05-10

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

9.4.18stable支持截止 2020-02-13

PostgreSQL 9.4.18

迁移与兼容性

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

不过,如果下面第一条变更日志条目中提到的函数标记错误影响到你,你可能需要采取措施更正数据库系统目录。

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

问题修复修复少数内建函数上不正确的易变性标记

变更

修复少数内建函数上不正确的易变性标记(Thomas Munro、Tom Lane)

函数 query_to_xml、cursor_to_xml、cursor_to_xmlschema、query_to_xmlschema 和 query_to_xml_and_xmlschema 应标记为 volatile,因为它们执行可能包含易变操作的用户提供的查询。它们没有被这样标记,导致错误查询优化的风险。新安装已通过更正初始目录数据修复,但现有安装将继续包含错误标记。实际使用这些函数似乎危害不大,但如遇到麻烦,可以手动更新这些函数的 pg_proc 条目来修复,例如 ALTER FUNCTION pg_catalog.query_to_xml(text, boolean, boolean, text) VOLATILE。(注意安装中的每个数据库都需要这样做。)另一个选择是把数据库 pg_upgrade 到包含更正后初始数据的版本。

关联记录 (4)
改进避免重用与已死但尚未清理的 TOAST 条目匹配的 TOAST 值 OID

变更

避免重用与已死但尚未清理的 TOAST 条目匹配的 TOAST 值 OID(Pavan Deolasee)

一旦 OID 计数器回卷,就可能分配一个 OID 与同一 TOAST 表中先前删除的条目匹配的 TOAST 值。如果该条目尚未被清理,就会导致 “unexpected chunk number 0 (expected 1) for toast value nnnnn” 错误,并持续到 VACUUM 移除死条目为止。修复方法是创建新 TOAST 条目时不选择这种 OID。

关联记录 (4)
改进更改 ANALYZE 更新 pg_class.reltuples 的算法

变更

更改 ANALYZE 更新 pg_class.reltuples 的算法(David Gould)

此前,ANALYZE 未实际扫描的页被假定保留其旧的元组密度。在 ANALYZE 只采样很少一部分页的大表中,这意味着总体元组密度估计不会有太大变化,因此无论表中实际发生什么,reltuples 都几乎与表物理大小(relpages)的变化成比例地变化。据观察,这会导致 reltuples 远大于实际值,以致实际上关闭了自动清理。为修复,假定 ANALYZE 的样本是表的无偏统计样本(本应如此),直接把这些页中观察到的密度外推到整表。

关联记录 (4)
问题修复避免在 SERIALIZABLE 或 REPEATABLE READ 事务隔离下运行的并发 CREATE INDEX CONCURRENTLY 命令中的死锁

变更

避免在 SERIALIZABLE 或 REPEATABLE READ 事务隔离下运行的并发 CREATE INDEX CONCURRENTLY 命令中的死锁(Tom Lane)

关联记录 (3)
问题修复修复 REFRESH MATERIALIZED VIEW CONCURRENTLY 可能缓慢的执行

变更

修复 REFRESH MATERIALIZED VIEW CONCURRENTLY 可能缓慢的执行(Thomas Munro)

关联记录 (3)
问题修复修复 UPDATE/DELETE ... WHERE CURRENT OF 在所引用游标使用仅索引扫描计划时不失败

变更

修复 UPDATE/DELETE ... WHERE CURRENT OF 在所引用游标使用仅索引扫描计划时不失败(Yugo Nagata、Tom Lane)

关联记录 (4)
问题修复修复下推到参数化路径的连接子句的错误规划

变更

修复下推到参数化路径的连接子句的错误规划(Andrew Gierth、Tom Lane)

这个错误可能把本应是普通“过滤”条件的条件错误分类为外连接的“连接过滤”,导致错误的连接输出。

关联记录 (4)
问题修复修复对顶层 AND/OR 条件带有可证明为 NULL 子子句的 CHECK 约束的错误优化

变更

修复对顶层 AND/OR 条件带有可证明为 NULL 子子句的 CHECK 约束的错误优化(Tom Lane、Dean Rasheed)

这可能导致例如约束排除错误地排除不应从查询中排除的子表。

关联记录 (4)
改进避免提交预备事务时发生查询取消或会话终止中断时失败

变更

避免提交预备事务时发生查询取消或会话终止中断时失败(Stas Kelvich)

关联记录 (4)
问题修复修复重复执行的哈希连接中的查询生命周期内存泄漏

变更

修复重复执行的哈希连接中的查询生命周期内存泄漏(Tom Lane)

关联记录 (4)
问题修复修复 heap_prepare_freeze_tuple 中过于严格的健全性检查

变更

修复 heap_prepare_freeze_tuple 中过于严格的健全性检查(Álvaro Herrera)

在从 9.2 或更早版本 pg_upgrade 过来的数据库中,这可能导致错误的 “cannot freeze committed xmax” 失败。

关联记录 (4)
改进防止 C 编写的 before-update 行触发器返回“旧”元组时的悬空指针解引用

变更

防止 C 编写的 before-update 行触发器返回“旧”元组时的悬空指针解引用(Rushabh Lathia)

关联记录 (4)
改进减少自动清理工作者调度期间的锁定

变更

减少自动清理工作者调度期间的锁定(Jeff Janes)

原来的行为导致有许多表的数据库中潜在工作者并发性的急剧丧失。

关联记录 (4)
改进确保把 pg_stat_activity 数据复制到本地内存时复制客户端主机名

变更

确保把 pg_stat_activity 数据复制到本地内存时复制客户端主机名(Edmund Horner)

此前,这个本应本地的快照包含指向共享内存的指针,使客户端主机名列可能因任何现有会话断开而意外改变。

关联记录 (4)
问题修复修复 ispell 词典中多个复合词缀的错误处理

变更

修复 ispell 词典中多个复合词缀的错误处理(Arthur Zakirov)

关联记录 (4)
问题修复修复 text 列上 SP-GiST 索引中的排序规则感知搜索(即使用不等操作符的索引扫描)

变更

修复 text 列上 SP-GiST 索引中的排序规则感知搜索(即使用不等操作符的索引扫描)(Tom Lane)

在大多数非 C 区域中,这种搜索会返回错误的行集合。

关联记录 (4)
改进在 SP-GiST 索引初始构建期间正确计数索引元组数

变更

在 SP-GiST 索引初始构建期间正确计数索引元组数(Tomas Vondra)

此前,元组数被报告为与底层表相同,如果索引是部分索引就错了。

关联记录 (4)
改进在 GiST 索引清理期间正确计数索引元组数

变更

在 GiST 索引清理期间正确计数索引元组数(Andrey Borodin)

此前它报告的是估计的堆元组数,可能不准确,而且如果索引是部分索引则肯定错误。

关联记录 (4)
问题修复修复流式备库在 WAL 延续记录处卡住的一个边界情况

变更

修复流式备库在 WAL 延续记录处卡住的一个边界情况(Kyotaro Horiguchi)

关联记录 (3)
改进在逻辑解码中,避免 walsender 重启时 WAL 数据可能被双重处理

变更

在逻辑解码中,避免 walsender 重启时 WAL 数据可能被双重处理(Craig Ringer)

关联记录 (3)
改进允许 scalarltsel 和 scalargtsel 用于非核心数据类型

变更

允许 scalarltsel 和 scalargtsel 用于非核心数据类型(Tomas Vondra)

关联记录 (4)
改进减少收集了大量查询输出之后服务器报告错误时 libpq 的内存消耗

变更

减少收集了大量查询输出之后服务器报告错误时 libpq 的内存消耗(Tom Lane)

在处理错误消息之前而不是之后丢弃先前的输出。在某些平台(特别是 Linux)上,这可以改变应用之后的内存占用。

关联记录 (4)
问题修复修复 ecpg 中的双重释放崩溃

变更

修复 ecpg 中的双重释放崩溃(Patrick Krecker、Jeevan Ladhe)

关联记录 (4)
问题修复修复 ecpg 在 MSVC 构建中正确处理 long long int 变量

变更

修复 ecpg 在 MSVC 构建中正确处理 long long int 变量(Michael Meskes、Andrew Gierth)

关联记录 (4)
问题修复修复转储中列表值 GUC 变量值的错误引号

变更

修复转储中列表值 GUC 变量值的错误引号(Michael Paquier、Tom Lane)

local_preload_libraries、session_preload_libraries、shared_preload_libraries 和 temp_tablespaces 变量在 pg_dump 输出中没有正确加引号。如果这些变量的设置出现在 CREATE FUNCTION ... SET 或 ALTER DATABASE/ROLE ... SET 子句中,这会导致问题。

关联记录 (4)
问题修复修复 pg_recvlogical 对 v10 之前的 PostgreSQL 服务器不失败的问题

变更

修复 pg_recvlogical 对 v10 之前的 PostgreSQL 服务器不失败的问题(Michael Paquier)

此前的一次修复使 pg_recvlogical 不论服务器版本都发出一条命令,但它只应对 v10 及之后的服务器发出。

关联记录 (3)
问题修复修复 PL/pgSQL 整数 FOR 循环中的溢出处理

变更

修复 PL/pgSQL 整数 FOR 循环中的溢出处理(Tom Lane)

原来的编码在一些非 gcc 编译器上未能检测到循环变量的溢出,导致无限循环。

关联记录 (4)
改进调整 PL/Python 回归测试在 Python 3.7 下通过

变更

调整 PL/Python 回归测试在 Python 3.7 下通过(Peter Eisentraut)

关联记录 (4)
改进支持用 Python 3 和 MSVC 构建时测试 PL/Python 及相关模块

变更

支持用 Python 3 和 MSVC 构建时测试 PL/Python 及相关模块(Andrew Dunstan)

关联记录 (4)
改进重命名内部 b64_encode 和 b64_decode 函数,避免与 Solaris 11.4 内置函数冲突

变更

重命名内部 b64_encode 和 b64_decode 函数,避免与 Solaris 11.4 内置函数冲突(Rainer Orth)

关联记录 (4)
改进把我们的时区库副本与 IANA tzcode 版本 2018e 同步

变更

把我们的时区库副本与 IANA tzcode 版本 2018e 同步(Tom Lane)

这修复了 zic 时区数据编译器应对负夏令时偏移的能力。虽然 PostgreSQL 项目不会立即发布这种时区数据,但 zic 可能被用于直接从 IANA 获得的时区数据,因此现在更新 zic 是审慎的。

关联记录 (4)
改进更新时区数据文件到 tzdata 版本 2018d,涉及巴勒斯坦和南极洲(凯西站)的夏令时法规变更,以及葡萄牙及其殖民地、恩德伯里、牙买加、特克斯和凯科斯群岛及乌拉圭的历史修正。

变更

更新时区数据文件到 tzdata 版本 2018d,涉及巴勒斯坦和南极洲(凯西站)的夏令时法规变更,以及葡萄牙及其殖民地、恩德伯里、牙买加、特克斯和凯科斯群岛及乌拉圭的历史修正。

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

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

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

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