pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2017-05-11
9.6.3 历史版本维护截止 2021-11-11
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2017-7547 限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码 | 8.5 | 9.6.4 |
| CVE-2017-7486 限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码 | 8.5 | 9.6.3 |
| CVE-2017-7485 恢复 libpq 对 PGREQUIRESSL 环境变量的识别 | 8.1 | 9.6.3 |
| CVE-2017-7484 防止通过泄漏型操作符暴露统计信息 | 4.3 | 9.6.3 |
对于运行 9.6.X 的用户,不需要转储/恢复。
不过,如果你使用通过用户密码认证的外部数据服务器,请参见下面第一条变更日志条目。
另外,如果你使用依赖“逻辑解码”的第三方复制工具,请参见下面第四条变更日志条目。
另外,如果你是从 9.6.2 之前的版本升级,参见第 E.23 节。
变更
限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码(Michael Paquier、Feike Steenbergen)
原来的编码允许外部服务器对象的所有者,或任何被他授予服务器 USAGE 权限的人,看到与该服务器关联的所有用户映射的选项。这很可能包括其他用户的密码。调整视图定义以匹配 information_schema.user_mapping_options 的行为,即这些选项对被映射的用户可见,或者当映射针对 PUBLIC 且当前用户是服务器所有者时,或者当前用户是超级用户时可见。(CVE-2017-7486)
此补丁本身只会修复新 initdb 的数据库中的行为。如果希望在现有数据库中应用此更改,请遵循第 E.21 节中 CVE-2017-7547 变更日志条目所示的更正程序。
变更
防止通过泄漏型操作符暴露统计信息(Peter Eisentraut)
规划器的一些选择率估计函数会对从 pg_statistic 获得的值(如最常见值和直方图条目)应用用户定义操作符。这发生在表权限检查之前,因此恶意用户可以利用这一行为获得他无权读取的表列的这些值。为修复,当操作符的实现函数未被证明防泄漏且调用用户无权读取所需统计信息的表列时,回退到默认估计。实践中大多数情况下至少满足这些准则之一。(CVE-2017-7484)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
恢复 libpq 对 PGREQUIRESSL 环境变量的识别(Daniel Gustafsson)
对这个环境变量的处理在 PostgreSQL 9.3 中被意外丢弃,但其文档还在。这造成了安全隐患,因为用户可能依赖该环境变量强制 SSL 加密连接,但这不再有保证。恢复对该变量的处理,但其优先级低于 PGSSLMODE,以避免破坏在 9.3 之后代码下正常工作的配置。(CVE-2017-7485)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑解码初始快照可能无效的问题(Petr Jelinek、Andres Freund)
为逻辑解码复制槽创建的初始快照可能不正确。这可能导致使用逻辑解码复制不完整/不一致初始数据的第三方工具。如果创建槽时源服务器繁忙,或者已存在另一个逻辑槽,更有可能发生。
如果你使用依赖逻辑解码的复制工具,并且它本应在复制开始时复制了非空数据集,建议在安装此更新后重建副本,或对照源服务器验证其内容。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复未记录索引的“init fork”可能的损坏(Robert Haas、Michael Paquier)
这可能导致未记录索引在崩溃和重启之后被置为无效状态。这种问题将持续到索引被删除并重建为止。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复备库重放已预备但未提交的两阶段事务时 pg_subtrans 条目的错误重建(Tom Lane)
大多数情况下这没有可见的不良影响,但在边界情况下可能导致 pg_subtrans 中的循环引用,可能使检查两阶段事务所修改行的查询陷入无限循环。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 walsender 因未能初始化字符串缓冲区而可能的崩溃(Stas Kelvich、Fujii Masao)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GiST 索引上最近邻仅索引扫描重扫描时可能的崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 postmaster 启动多个并行工作者进程时的延迟(Tom Lane)
满足一个查询对多个工作者进程的请求之前,或多个查询同时请求工作者时,可能有显著延迟(长达数十秒)。在大多数平台上这需要不幸的时机,但在某些平台上是常态。
变更
修复 postmaster 对后台工作者进程 fork() 失败的处理(Tom Lane)
此前 postmaster 会像进程成功启动一样更新其状态的一部分,导致后续的混乱。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复规划嵌套集合操作时可能的 “no relation entry for relid 0” 错误(Tom Lane)
变更
修复并行查询规划中的若干小问题(Robert Haas)
变更
避免把“物理目标列表”优化应用于自定义扫描(Dmitry Ivanov、Tom Lane)
这一优化假定检索元组的所有列代价低廉,对普通 Postgres 元组确实如此;但对自定义扫描提供者未必。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
应用 FOR ALL 行级安全策略时使用正确的子表达式(Stephen Frost)
某些情况下会应用 WITH CHECK 限制,而 USING 限制更合适。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保扩展脚本中查询的解析能看到紧邻的前一条 DDL 的结果(Julien Rouhaud、Tom Lane)
由于扩展脚本文件中命令之间缺少缓存刷新步骤,非实用查询可能看不到紧邻的目录更改(如 ALTER TABLE ... RENAME)的效果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 ALTER TABLE ... ALTER COLUMN TYPE 重建现有索引时跳过表空间权限检查(Noah Misch)
如果调用用户当前对包含索引的表空间没有 CREATE 权限,命令就会失败。这种行为似乎无益,因此跳过检查,允许索引在原地重建。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER TABLE ... VALIDATE CONSTRAINT 在约束被标记 NO INHERIT 时不递归到子表(Amit Langote)
此修复防止子表中不存在匹配约束时不需要的 “constraint does not exist” 失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免源表上行级安全激活时 COPY ... TO 中的悬空指针(Tom Lane)
通常这没有不良影响,但有时会导致意外错误或崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 CLUSTER 和 VACUUM FULL 中访问已关闭的关系缓存条目(Tom Lane)
运气不好时,这可能导致目标关系上的索引被以错误的持久性设置重建。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 VACUUM 正确考虑因页 pin 冲突而无法扫描的页(Andrew Gierth)
这往往导致低估表中的元组数。在小型高争用表的最坏情况下,VACUUM 可能错误地报告表不包含任何元组,导致非常糟糕的计划选择。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保哈希连接中的批量元组传输循环可被查询取消请求中断(Tom Lane、Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SP-GiST 中对某些 box 操作符的不正确支持(Nikita Glukhov)
使用操作符 &< &> &<| 和 |&> 的 SP-GiST 索引扫描会给出错误答案。
变更
修复 interval 比较中的整数溢出问题(Kyotaro Horiguchi、Tom Lane)
interval 类型的比较操作符对超过约 296000 年的间隔可能给出错误答案。包含这种大值的列上的索引应执行 REINDEX,因为它们可能已损坏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 cursor_to_xml() 在 tableforest = false 时产生有效输出(Thomas Munro、Peter Eisentraut)
此前它未能产生包裹的 <table> 元素。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 float8_timestamptz() 和 make_interval() 中的舍入问题(Tom Lane)
这些函数在把浮点值转换为整数微秒时是截断而不是舍入;这可能导致意外的差一结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_get_object_address() 正确处理操作符族的成员(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复尝试停止非独占备份时 pg_stop_backup() 的取消(Michael Paquier、David Steele)
如果 pg_stop_backup() 在等待非独占备份结束时被取消,相关状态会保持不一致;无法启动新的独占备份,还有其他小问题。
变更
改进 pg_timezone_names 视图的性能(Tom Lane、David Rowley)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少包含许多大块的内存上下文的内存管理开销(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对 lseek() 和 close() 边界情况错误的草率处理(Tom Lane)
这两个系统调用在典型情况下不太可能失败,但如果失败,fd.c 会变得相当混乱。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对 postmaster 是否作为 Windows 服务运行的不正确检查(Michael Paquier)
这可能导致在事件日志不可访问时尝试写入它,以至于完全不进行日志记录。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 支持 COMMIT PREPARED 和 ROLLBACK PREPARED(Masahiko Sawada)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 中处理美元引用字符串字面量时的双重释放错误(Michael Meskes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pgbench 正确处理 --connect 和 --rate 选项的组合(Fabien Coelho)
变更
修复 pgbench 遵循文档所述的长格式选项拼法 --builtin(Tom Lane)
变更
修复 pg_dump/pg_restore 使用 --clean 选项时正确处理 public 模式的权限(Stephen Frost)
其他模式初始时未被授予任何权限,但 public 不是;当它因 --clean 选项而被删除和恢复时,这需要特殊处理。
变更
在 pg_dump 中,修复某些类型数据库对象的注释和安全标签的模式和所有者标记错误(Giuseppe Broccolo、Tom Lane)
简单情况下这没有不良影响;但例如,选择性模式恢复可能遗漏本应包含的注释,因为它们没有被标记为属于其相关对象的模式。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 对过程语言初始权限查询中的拼写错误(Peter Eisentraut)
这导致 pg_dump 总是认为该语言没有初始权限。由于大多数过程语言确实如此,此 bug 的不良影响可能很少见。
变更
避免 SQL 对象名包含换行时 pg_restore -l 发出无效列表文件(Tom Lane)
用空格替换换行,这足以使输出对 pg_restore -L 的用途有效。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 传输附加到“大对象”(blob)的注释和安全标签(Stephen Frost)
此前,blob 被正确传输到新数据库,但附加到它们的任何注释或安全标签都丢失了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 contrib/adminpack 的 pg_file_write() 函数中的错误处理(Noah Misch)
值得注意的是,它未能检测 fclose() 报告的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/dblink 中,建立新的未命名连接时避免泄漏先前的未命名连接(Joe Conway)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_trgm 从正则表达式提取三元组的问题(Tom Lane)
某些情况下它会产生永远无法匹配任何东西的损坏数据结构,导致使用三元组索引的 GIN 或 GiST 索引扫描找不到与正则表达式的任何匹配。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/postgres_fdw 中,允许包含可下推的扩展提供函数的连接条件下推到远程服务器(David Rowley、Ashutosh Bapat)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中支持 Tcl 8.6(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把我们的时区库副本与 IANA tzcode2017b 同步(Tom Lane)
这修复了影响 2038 年 1 月某些夏令时转换的 bug。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2017b,涉及智利、海地和蒙古的夏令时法规变更,加上厄瓜多尔、哈萨克斯坦、利比里亚和西班牙的历史修正。南美洲、太平洋和印度洋以及一些亚洲和中东国家的众多时区改用数字缩写。
IANA 时区数据库以前为所有时区提供文本缩写,有时编造在当地居民中几乎或完全没有使用的缩写。他们正在逆转这一政策,改为在没有证据表明实际使用英文缩写的区域使用数字 UTC 偏移。至少目前,PostgreSQL 将继续接受这种被移除的缩写用于时间戳输入。但它们不会显示在 pg_timezone_names 视图中,也不用于输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中对 POSIX 风格时区名使用正确的夏令时规则(David Rowley)
Microsoft MSVC 构建脚本忽略了把 posixrules 文件安装到时区目录树中。这导致时区代码回退到它内置的关于 POSIX 风格时区名应假定什么 DST 行为的规则。由于历史原因,那仍然对应美国 2007 年之前使用的 DST 规则(即 4 月第一个星期日和 10 月最后一个星期日更改)。有了此修复,POSIX 风格时区名将使用 US/Eastern 时区的当前和历史 DST 转换日期。如果不希望这样,移除 posixrules 文件,或用其他某个时区文件的副本替换它(见第 8.5.3 节)。注意由于缓存,可能需要重启服务器才能使这种更改生效。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。