pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2019-11-14
10.11 历史版本维护截止 2022-11-10
对于运行 10.X 的用户,不需要执行导出/恢复。
但是,如果使用了带有 GiST 索引的 contrib/intarray 扩展,且依赖 <@ 操作符的索引搜索,请参阅下方相关条目。
此外,如果是从早于 10.6 的版本升级,请参见第 E.18 节。
变更
修复 ALTER TABLE SET 使用自定义关系选项时的失败(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
如果没有更改所有父表,则禁止更改多重继承列的类型(Tom Lane)
以前允许这样做,导致对类型已不同步的父表进行查询时失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 VACUUM 尝试冻结涉及仍在运行事务的旧 multixact ID(Nathan Bossart,Jeremy Schneider)
这种情况会导致 VACUUM 一直失败,直到旧事务终止。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复规划器对使用 ICU 排序规则的 ILIKE 中可进行大小写折叠的字符的测试(Tom Lane)
此错误导致规划器将模式中太多的部分视为固定前缀,使得从 ILIKE 子句生成的索引扫描可能遗漏应当找到的条目。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保处理查询表达式时也处理 WINDOW 子句中的偏移量表达式(Andrew Gierth)
当偏移量是较复杂的表达式时,这一疏漏可能导致各种失败。例如,如果函数被内联,此类表达式中的函数参数引用就会失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 WITH CHECK OPTION 表达式和行级安全策略表达式中整行变量的处理(Andres Freund)
以前,这种用法可能导致虚假的行类型不匹配错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 postmaster 子进程数组已无空闲槽位时,并行查询请求后台工作进程导致 postmaster 失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
如果 BEFORE UPDATE 触发器原样返回旧元组,且它并非最后一个此类触发器,则防止可能发生的重复释放(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在并行工作进程启动期间设置 GUC 参数发生错误时,提供相关的错误上下文行(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在可串行化模式下,确保在正确的行版本上获取行级谓词锁(Thomas Munro,Heikki Linnakangas)
如果行的可见版本经过 HOT 更新,锁可能被加在其现已死亡的前一版本上,导致在不易察觉的情况下无法保证可串行化。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保仅对以读写模式打开的文件应用 fsync()(Andres Freund,Michael Paquier)
某些代码路径尝试在以只读方式打开文件后执行此操作,但在某些平台上,这会导致 “bad file descriptor” 或类似错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许编码转换成功处理比以前更长的字符串(Álvaro Herrera,Tom Lane)
以前,输入字符串有 0.25GB 的硬性上限;现在,只要转换后的输出不超过 1GB,就能够成功转换。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免堆页面剪枝期间不必要的目录查找(Thomas Munro)
此处已不再需要检查不记录 WAL 的索引,而该检查在某些工作负载下导致了显著的性能问题。至少在理论上,它也存在发生死锁的可能性。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免为窗口函数创建不必要地庞大的元组存储(Andrew Gierth)
在某些情况下,元组存储会包含源表的所有列,而非仅包含查询所需的列。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 repalloc() 在大型内存块缩小时归还空间(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保归档恢复结束时删除临时 WAL 文件和历史文件(Sawada Masahiko)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免启用 recovery_min_apply_delay 时归档恢复发生失败(Fujii Masao)
recovery_min_apply_delay 通常不用于这种配置,但它应该能够正常工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复发布者和订阅者对表的复制标识列认定不一致时逻辑复制发生的失败(Jehan-Guillaume de Rorthais,Peter Eisentraut)
在订阅者上将发布者根本不存在的列声明为复制标识的一部分,会导致 “negative bitmapset member not allowed” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免逻辑复制 WAL 发送进程关闭期间出现不必要的延迟(Craig Ringer,Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑复制 WAL 接收进程进程中的超时处理(Julien Rouhaud)
错误的逻辑导致 wal_receiver_timeout 在逻辑复制部署中无法生效。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为逻辑解码的复制消息正确添加时间戳(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 的外部工具可能会。现在会删除目标变量的重复条目,然后将新设置(如有)追加到末尾。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝配置文件中包含空文件名的 include 指令,并更清楚地报告包含文件递归的问题(Ian Barwick,Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在使用 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);
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 XMLTABLE 中选择命名空间节点时发生崩溃(Chapman Flack)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对间隔乘法中边界情况下整数溢出的检测(Yuya Watari)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复使用 ICU 排序规则时 lower()、upper() 和 initcap() 函数中的内存泄漏(Konstantin Knizhnik)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 ispell 文本检索词典包含错误的词缀数据时发生崩溃(Arthur Zakirov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN 倒排列表的不正确压缩逻辑(Heikki Linnakangas)
如果相邻被索引 TID 之间的距离超过 16TB,GIN 倒排列表条目可能需要 7 字节。处理逻辑中的某一步未与此保持一致,可能尝试将该值写入 6 字节缓冲区。原则上这可能导致栈越界,但在大多数架构上,下一个字节很可能是未使用的对齐填充,因此此缺陷无害。无论如何,此缺陷都很难触发。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 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 中,确保名称相似的触发器和行级安全策略对象的输出顺序稳定(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_basebackup 中,直到备份结束才对输出文件执行 fsync(Michael Paquier)
以前的代码在 fsync 较慢时可能导致超时失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在源集群在线的情况下运行 pg_rewind 时,像 pg_dump 那样禁用超时(Alexander Kukushkin)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复使用 -s 选项时,延续的 WAL 记录恰好在页面边界处结束导致 pg_waldump 失败的问题(Andrey Lepikhov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_waldump 中,将 newitemoff 字段包含在 B-树页面分裂记录中(Peter Geoghegan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在使用 --bkp-details 选项的 pg_waldump 中,避免为涉及整页写入的 WAL 记录输出多余换行(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_waldump 中少量的内存泄漏(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复设置了较高 --jobs 值的 vacuumdb,使其更妥善地处理文件描述符耗尽的情况(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/amcheck,使其在热备期间跳过不记录 WAL 的索引(Andrey Borodin,Peter Geoghegan)
这种情况下,不记录 WAL 的索引未必包含有效数据,因此不要尝试检查它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/intarray 的 GiST 操作符类,使其在空数组上使用 <@ 时不会失败(Tom Lane)
这样的子句被认为可以使用索引,但索引搜索可能找不到空数组值;显然,这类条目应当直接匹配该搜索。array_column <@ constant_array
唯一可行且能回补到旧版本的修复方法,是让 <@ 索引搜索扫描整个索引,本补丁正是这样做的。遗憾的是,这意味着查询性能很可能比普通顺序扫描还差。
性能受到此更改不利影响的应用有几种选择。可以切换到没有此缺陷的 GIN 索引,也可以将 替换为 array_column <@ constant_array。后者的性能与以前大致相同,并会找出给定常量数组的所有非空子集;这也正是以前能够可靠期望该查询做到的全部事情。array_column <@ constant_array AND array_column && constant_array
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 configure 对 libperl 是否存在的测试,使其适用于近期的 Red Hat 发行版(Tom Lane)
以前,如果用户将 CFLAGS 设置为 -O0,此测试可能失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保为 PowerPC 上的自旋锁生成正确的代码(Noah Misch)
以前的自旋锁代码允许编译器为不接受零号寄存器的汇编指令选择该寄存器,导致构建失败。我们仅见过一份很久以前的报告与此缺陷吻合,但它可能给尝试构建修改过的 PostgreSQL 代码或使用非常规编译器选项的用户带来问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 PowerPC 上,避免依赖 xlc 编译器的 __fetch_and_add() 函数(Noah Misch)
xlc 13 及更新版本对该函数的解释与我们的用法不兼容,导致构建出的 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 发行说明。更多历史资料见发行说明归档。