pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2019-11-14
9.4.25 历史版本维护截止 2020-02-13
对于运行 9.4.X 的用户,不需要转储/恢复。
不过,如果你在 contrib/intarray 扩展中使用了 GiST 索引,并且依赖 <@ 操作符的索引搜索,请参见下面相关条目。
另外,如果你是从 9.4.18 之前的版本升级,参见第 E.9 节。
变更
防止 VACUUM 尝试冻结涉及仍在运行的事务的旧多事务 ID(Nathan Bossart、Jeremy Schneider)
这种情况会导致 VACUUM 失败,直到旧事务结束。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保查询表达式被改写时 WINDOW 子句中的偏移表达式也得到处理(Andrew Gierth)
这一疏漏可能在偏移是非平凡表达式时导致各种失败。一个例子是,如果函数被内联,此类表达式中的函数参数引用会失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 WITH CHECK OPTION 表达式和行级安全策略表达式中整行变量的处理(Andres Freund)
此前,这种用法可能导致关于行类型不匹配的虚假错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 BEFORE UPDATE 触发器原样返回旧元组且它不是最后一个此类触发器时可能的双重释放(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在可序列化模式下,确保对正确版本的行获取行级谓词锁(Thomas Munro、Heikki Linnakangas)
如果行的可见版本经过 HOT 更新,锁可能被加到它现已死亡的前身上,导致细微的序列化保证失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 fsync() 只应用于以读/写方式打开的文件(Andres Freund、Michael Paquier)
某些代码路径在以只读方式打开文件后试图这样做,但在某些平台上这会导致 “bad file descriptor” 或类似错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许编码转换在比以前更长的字符串上成功(Álvaro Herrera、Tom Lane)
此前输入字符串有 0.25GB 的硬限制,但现在只要转换后的输出不超过 1GB 就能工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 repalloc() 在大块被缩小时归还空间(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免启用 recovery_min_apply_delay 时归档恢复的失败(Fujii Masao)
recovery_min_apply_delay 通常不用于这种配置,但它应当能工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免逻辑复制 walsender 关闭期间的不必要延迟(Craig Ringer、Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为逻辑解码正确地为复制消息打时间戳(Jeff Janes)
这一疏漏导致例如 pg_stat_subscription.last_msg_send_time 通常读作 NULL。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在逻辑解码中,确保重建快照时正确统计子事务(Masahiko Sawada)
这个错误导致断言失败;生产构建中是否存在不良影响尚不清楚。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复后端进程此前等待过同步复制时,后端退出期间的竞态条件(Dongming Liu)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER SYSTEM 应对 postgresql.auto.conf 中重复条目的问题(Ian Barwick)
ALTER SYSTEM 本身不会产生这种状态,但修改 postgresql.auto.conf 的外部工具可能这样做。目标变量的重复条目现在会被移除,然后新的设置(如果有)会被追加到末尾。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免使用 PAM 认证时记录关于废弃连接的抱怨(Tom Lane)
基于 libpq 的客户端在需要密码时通常会做两次连接尝试,因为它们直到第一次连接尝试失败才提示用户输入密码。因此服务器的编码被设计成当客户端在被要求输入密码时关闭连接不产生无用的日志垃圾。然而 PAM 认证代码没有收到这份备忘,会生成几条关于幻影认证失败的消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 time with time zone 输入中某些未检测到不完整日期规格的情况(Alexander Lakhin)
如果指定的时区 UTC 偏移量随时间变化,那么也必须指定日期才能解析偏移量。根据所用的语法,这一检查在某些情况下未被强制执行,允许产生虚假输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 bitshiftright() 的错误行为(Tom Lane)
当位串长度不是 8 的倍数时,位串右移操作符未能把结果最后一字节中存在的填充空间清零。虽然对大多数操作不可见,但那里的任何非零位都会导致意外的比较行为,因为位串比较不会特意忽略多余的位,而是预期它们始终为零。
如果你因把 bitshiftright() 的输出保存到表中而有不一致的数据,可以用类似下面的语句修复:
UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复间隔乘法中边界整数溢出的检测(Yuya Watari)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN posting 列表的错误压缩逻辑(Heikki Linnakangas)
如果相邻被索引 TID 之间的距离超过 16TB,一个 GIN posting 列表项可能需要 7 字节。逻辑中的一步与此不同步,可能试图把值写入 6 字节缓冲区。原则上这可能导致栈越界,但在大多数体系结构上,下一个字节很可能是未使用的对齐填充,使该 bug 无害。无论如何,这个 bug 都很难被触发到。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 KNN-GiST 中对无穷大、NaN 和 NULL 值的处理(Alexander Korotkov)
如果为非空列值计算的某些距离是无穷大或 NaN,查询的输出顺序可能错误(与普通排序的结果不同)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 KNN-SP-GiST 中对 NULL 搜索的处理(Nikita Glukhov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,识别 “Norwegian (Bokmål)” 区域名的更多拼法(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 ECPG 客户端在定义了 ENABLE_NLS 的情况下包含 ecpglib.h 时编译失败(Tom Lane)
这个风险是由一个错位的声明造成的:ecpg_gettext() 不应对客户端代码可见。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 psql 中,意外连接丢失并成功重连之后重新同步关于服务器的内部状态(Peter Billen、Tom Lane)
通常这是不必要的,因为状态反正会相同。但在边界情况下可能有关系,例如连接可能通向几台服务器之一。这一更改使 psql 重新发出它在启动时会发出的任何交互式消息,例如关于是否使用 SSL。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 psql 中平台相关的空指针解引用(Quentin Rameau)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 对视图中循环依赖的处理(Tom Lane)
某些情况下视图可能依赖于 pg_dump 需要在视图之后转储的对象;最常见的例子是在主键列上使用 GROUP BY 的查询在没有主键时可能在语义上无效。现在通过发出一个仅建立视图列名和类型的虚拟 CREATE VIEW 命令、之后再发出带完整视图定义的 CREATE OR REPLACE VIEW 来处理。此前虚拟定义实际上是一条 CREATE TABLE 命令,之后通过 CREATE RULE 命令自动转换成视图。这种新方法在 PostgreSQL 版本 10 及之后已经成功使用。现在把它向后移植到较旧的版本,是因为有报告称以前的方法会导致关于视图副本身份状态的虚假错误消息。这一更改还避免了在涉及此类视图的恢复期间尝试使用 --clean 选项时的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_dump 中,确保同名触发器和行级安全策略对象的稳定输出顺序(Benjie Gillam)
此前,如果不同表上的两个触发器同名,它们会按基于 OID 的顺序排序,这不如按表名排序理想。RLS 策略同理。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 重新与 8.3 之前的源服务器工作的问题(Tom Lane)
此前的一次修复使 pg_dump 总是试图查询 pg_opfamily,但该目录在 8.3 版之前不存在。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_restore 中,把 -f - 当作“输出到 stdout”(Álvaro Herrera)
这使 pg_restore 的行为与其他一些应用同步,特别是使 v12 之前的分支表现得与版本 12 的 pg_restore 相似,简化了跨多个 PostgreSQL 版本的转储/恢复脚本的创建。在此更改之前,pg_restore 把这种开关解释为“输出到名为 - 的文件”,但很少有人会想要那样。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 pg_upgrade 对使用表示已更改的数据类型(如 line)的检查(Tomas Vondra)
原来的编码可能被所关注数据类型构成域或复合类型的存储列底层的情况所欺骗。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
检测 pg_basebackup 期间的文件读取错误(Jeevan Chalke)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_waldump 使用 -s 选项且延续 WAL 记录恰好在页边界结束时失败的问题(Andrey Lepikhov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/intarray 的 GiST 操作符类在空数组使用 <@ 时不失败的问题(Tom Lane)
像 这样的子句被认为可索引,但索引搜索可能找不到空数组值;当然,这种条目应当平凡地匹配搜索。array_column <@ constant_array
唯一实际可向后移植的修复要求 <@ 索引搜索扫描整个索引,本补丁就是这么做的。这很不幸:这意味着查询性能可能比 plain 顺序扫描更差。
性能受此更改不利影响的应用有两种选择。可以改用没有此 bug 的 GIN 索引,或者把 替换为 array_column <@ constant_array。后者的性能与之前大致相同,并且会找到给定常数数组的所有非空子集——这本来就是以前对该查询唯一能可靠期望得到的。array_column <@ constant_array AND array_column && constant_array
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 configure --with-python 在只能找到 python3 或只能找到 python2 时成功(Peter Eisentraut、Tom Lane)
先搜索 python,再搜索 python3,再搜索 python2,使 configure 在没有名为 python 的可执行文件这一日益常见的情况下也能成功。仍然可以通过设置 PYTHON 环境变量覆盖这一选择。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 configure 的 libperl 存在性测试,使其在最近的 Red Hat 版本上工作(Tom Lane)
此前,如果用户把 CFLAGS 设为 -O0,它可能失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 PowerPC 上自旋锁的正确代码生成(Noah Misch)
原来的自旋锁编码允许编译器为一条不接受寄存器零的汇编指令选择寄存器零,导致构建失败。我们只见过一份很久以前与此 bug 匹配的报告,但它可能给尝试构建修改过的 PostgreSQL 代码或使用非典型编译器选项的人带来问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 AIX 上,不使用编译器选项 -qsrcmsg(Noah Misch)
这避免了 xlc v16.1.0 的内部编译器错误,除了更改编译器错误消息的格式之外几乎没有其他后果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 MSVC 构建过程以应对 OpenSSL 文件路径中的空格(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2019c,涉及斐济和诺福克岛的夏令时法规变更,以及艾伯塔、奥地利、比利时、不列颠哥伦比亚、柬埔寨、香港、印第安纳(佩里县)、加里宁格勒、肯塔基、密歇根、诺福克岛、韩国和土耳其的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。