pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2016-10-27
9.6.1 历史版本维护截止 2021-11-11
对于运行 9.6.X 的用户,不需要转储/恢复。
不过,如果你的安装受到下面前两条变更日志条目所述 bug 的影响,更新之后你可能需要采取行动修复损坏的空闲空间映射和/或可见性映射。
变更
修复关系空闲空间映射和可见性映射截断的 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中讨论。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 把关系可见性映射重写为 9.6 格式时可能的数据损坏(Tom Lane)
在大端机器上,新可见性映射的字节以错误顺序写入,导致完全错误的映射。在 Windows 上,旧映射以文本模式读取,如果映射碰巧包含匹配回车/ 换行序列的连续字节则导致错误结果。后者几乎总是由于映射文件看起来长度错误而导致 pg_upgrade 失败。
如果你在使用大端机器(许多非 Intel 架构是大端的)并且使用过 pg_upgrade 从 9.6 之前的版本升级,应当假定所有可见性映射都是错误的、需要重新生成。用 contrib/pg_visibility 的 pg_truncate_visibility_map() 函数截断每个关系的可见性映射就足够了。更多信息见https://wiki.postgresql.org/wiki/Visibility_Map_Problems。
变更
不再对 INSERT ... ON CONFLICT 中的自冲突插入抛出序列化错误(Thomas Munro、Peter Geoghegan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复使用 DISTINCT 的聚合函数执行中的释放后使用风险(Peter Geoghegan)
这可能导致崩溃或错误查询结果。
变更
修复用作窗口函数的多态聚合的错误处理(Tom Lane)
聚合的转换函数被告知其第一个参数和结果是聚合的输出类型而不是状态类型。这导致多态转换函数的错误或崩溃。
变更
修复对启用了行级安全的表使用带列名列表的 COPY(Adam Brightwell)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复track_io_timing打开时 EXPLAIN 发出有效 XML(Markus Winand)
此前 XML 输出格式选项产生语法无效的标记,如 <I/O-Read-Time>。现在它被渲染为 <I-O-Read-Time>。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复预备事务中 TRUNCATE 的统计信息更新(Stas Kelvich)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复创建或更改表时合并继承 CHECK 约束的 bug(Tom Lane、Amit Langote)
允许以任一顺序向父表和子表添加相同的 CHECK 约束。防止父表的有效约束与子表的 NOT VALID 约束合并。同样防止 NO INHERIT 子约束与继承约束合并。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_settings.unit 中为 min_wal_size 和 max_wal_size 显示合理的值(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 jsonb_set() 中数组元素的替换(Tom Lane)
如果目标是现有的 JSON 数组元素,它被删除而不是被替换为新值。
变更
避免因未持有缓冲区锁测试元组可见性而导致的极低概率数据损坏(Thomas Munro、Peter Geoghegan、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
跨服务器重启保留提交时间戳(Julien Rouhaud、Craig Ringer)
在打开track_commit_timestamp的情况下,干净的服务器重启后旧的提交时间戳变得不可访问。
变更
修复子事务的 WAL 输出大到足以溢出到磁盘时逻辑 WAL 解码的正常工作(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑 WAL 解码中的悬空指针问题(Stas Kelvich)
变更
在 Linux 上尝试使用大页时,把共享内存分配请求舍入到实际大页大小的整数倍(Tom Lane)
这避免了在默认大页大小非典型的系统上 munmap() 期间可能的失败。除崩溃恢复情况外,除了日志消息之外没有不良影响。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
不要在 libpq 中跨多个连接共享 SSL 上下文(Heikki Linnakangas)
这导致了各种边界情况 bug,特别是当尝试对不同连接使用不同 SSL 参数时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 libpq 中的边界情况内存泄漏(Tom Lane)
报告的问题涉及 PQreset() 期间泄漏错误报告,但可能有相关情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_upgrade 中,按名称顺序检查库可加载性(Tom Lane)
这是处理语言转换模块对其基础语言和数据类型模块的跨扩展依赖的权宜之计。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 对包含索引访问方法的扩展正确工作(Tom Lane)
为此,服务器被扩展以支持 ALTER EXTENSION ADD/DROP ACCESS METHOD。这一功能本应包含在支持动态创建访问方法的原始补丁中,但被遗漏了。
变更
改进 pg_upgrade 文件复制/链接/重写步骤中的错误报告(Tom Lane、Álvaro Herrera)
变更
修复 pg_dump 对 7.4 之前服务器的工作(Amit Langote、Tom Lane)
变更
禁止对 pg_rewind 同时指定 --source-server 和 --source-target 选项(Michael Banck)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 pg_rewind 在源服务器上的会话中关闭 synchronous_commit(Michael Banck、Michael Paquier)
这允许 pg_rewind 即使在源服务器使用的同步复制因某种原因不工作时也能运行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_xlogdump 中,使用 --follow 选项时重试打开新的 WAL 段(Magnus Hagander)
这考虑到服务器创建下一段的可能延迟。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_visibility 为作为已回滚更新主题的损坏元组报告正确的 TID(Tom Lane)
变更
修复 makefile 依赖,使单独并行构建 PL/Python 能可靠成功(Pavel Raiskup)
变更
更新时区数据文件到 tzdata 版本 2016h,涉及巴勒斯坦和土耳其的夏令时法规变更,加上土耳其和俄罗斯一些地区的历史修正。南极洲、前苏联和斯里兰卡的一些时区改用数字缩写。
IANA 时区数据库以前为所有时区提供文本缩写,有时编造在当地居民中几乎或完全没有使用的缩写。他们正在逆转这一政策,改为在没有证据表明实际使用英文缩写的区域使用数字 UTC 偏移。至少目前,PostgreSQL 将继续接受这种被移除的缩写用于时间戳输入。但它们不会显示在 pg_timezone_names 视图中,也不用于输出。
在此更新中,AMT 不再显示为表示亚美尼亚时间。因此我们把 Default 缩写集改为把它解释为亚马逊时间,即 UTC-4 而不是 UTC+4。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。