pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2019-11-14
12.1 历史版本维护截止 2024-11-21
对于运行 12.X 的用户,不需要执行导出/恢复。
变更
避免报告 CREATE INDEX CONCURRENTLY 或 REINDEX CONCURRENTLY 命令的进度时因竞争条件而发生的崩溃(Álvaro Herrera)§
变更
避免在 REINDEX CONCURRENTLY 期间创建重复的依赖条目(Michael Paquier)§
此缺陷导致 pg_depend 膨胀,但没有更严重的后果。
变更
防止 VACUUM 尝试冻结涉及仍在运行事务的旧 multixact ID(Nathan Bossart,Jeremy Schneider)§
这种情况会导致 VACUUM 一直失败,直到旧事务终止。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复尝试按表达式索引执行 CLUSTER 时发生的 “wrong type of slot” 错误(Andres Freund)§
变更
SET CONSTRAINTS ... DEFERRED 在分区表上执行失败,错误地报告缺少触发器(Álvaro Herrera)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复父分区表包含已删除列时为分区创建索引发生的失败(Michael Paquier)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保分区索引在并发重建失败后仍可被删除(Michael Paquier)§
这种情况下,索引的 pg_class.relispartition 标志被留在了错误状态,导致 DROP INDEX 失败。
变更
修复逐分区连接中对等价类成员的处理(Amit Langote)§
这一疏漏可能导致无法使用可行的逐分区连接计划,或发生 “could not find pathkey item to sort” 规划器失败。
变更
确保处理查询表达式时也处理 WINDOW 子句中的偏移量表达式(Andrew Gierth)§
当偏移量是较复杂的表达式时,这一疏漏可能导致各种失败。例如,如果函数被内联,此类表达式中的函数参数引用就会失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 postmaster 子进程数组已无空闲槽位时,并行查询请求后台工作进程导致 postmaster 失败(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对带有 BEFORE UPDATE 触发器的表进行 EvalPlanQual 复检所引发的崩溃(Andres Freund)§
变更
修复查询尝试访问 TOAST 表时发生的 “unexpected relkind” 错误(John Hsu,Michael Paquier,Tom Lane)§
错误应说明权限被拒绝,但代码重构破坏了这种情况的处理。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在并行工作进程启动期间设置 GUC 参数发生错误时,提供相关的错误上下文行(Thomas Munro)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保仅对以读写模式打开的文件应用 fsync()(Andres Freund,Michael Paquier)§ §
某些代码路径尝试在以只读方式打开文件后执行此操作,但在某些平台上,这会导致 “bad file descriptor” 或类似错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许编码转换成功处理比以前更长的字符串(Álvaro Herrera,Tom Lane)§
以前,输入字符串有 0.25GB 的硬性上限;现在,只要转换后的输出不超过 1GB,就能够成功转换。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免为窗口函数创建不必要地庞大的元组存储(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。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复后端进程此前曾等待同步复制时,在退出期间发生的竞争条件(Dongming Liu)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在使用 PAM 认证时记录有关已放弃连接的报错消息(Tom Lane)§
基于 libpq 的客户端在需要密码时通常会尝试连接两次,因为它们直到第一次连接尝试失败后才会提示用户输入密码。因此,服务器在客户端收到密码请求后关闭连接时,不会生成无用的日志消息。然而,PAM 认证代码没有遵循这一约定,会为实际上并未发生的认证失败生成多条消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 bitshiftright() 的错误行为(Tom Lane)§ §
当位串长度不是 8 的倍数时,位串右移操作符未能将结果最后一个字节中的填充空间清零。虽然大多数操作看不到这些填充位,但其中任何非零位都会导致意外的比较行为,因为位串比较预期这些额外的位始终为零,并未特意忽略它们。
如果由于将 bitshiftright() 的输出保存在表中而导致数据不一致,可以使用类似以下语句进行修复:
UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复搜索字符串为空时,文本 position() 函数(也称为 strpos())的结果(Tom Lane)§
按历史行为和 SQL 标准,这种情况下结果应为一,但 12.0 返回了零。
变更
修复对间隔乘法中边界情况下整数溢出的检测(Yuya Watari)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免清理 GiST 索引时发生内存泄漏(Dilip Kumar)§
变更
在 Windows 上,识别 “Norwegian (Bokmål)” 区域设置名称的更多拼写形式(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 libpq 中,因 connect_timeout 参数值语法无效而失败后,正确报告 CONNECTION_BAD 连接状态(Lars Kanis)§
变更
避免 ECPG 客户端在定义了 ENABLE_NLS 的情况下包含 ecpglib.h 时编译失败(Tom Lane)§
这种风险由位置不当的声明造成:ecpg_gettext() 不应对客户端代码可见。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复分区表上外键约束的并行恢复调度(Álvaro Herrera)§
pg_dump 未能输出分区表外键的完整依赖信息。这可能让并行 pg_restore 过早地尝试重新创建外键约束。
变更
在 pg_dump 中,确保名称相似的触发器和行级安全策略对象的输出顺序稳定(Benjie Gillam)§
以前,如果不同表上的两个触发器同名,它们会按 OID 排序,这不如按表名排序合适。RLS 策略也存在同样的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 pg_upgrade 对使用了表示形式已变更的数据类型(如 line)的检查(Tomas Vondra)§ §
当所关注的数据类型是某个已存储域类型或复合类型列的底层类型时,以前的代码可能漏检。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在带有 --dry-run 选项的 pg_rewind 中,避免更新 pg_control(Alexey Kondratov)§
这可能导致之后的 pg_rewind 尝试失败。
变更
修复使用 -s 选项时,延续的 WAL 记录恰好在页面边界处结束导致 pg_waldump 失败的问题(Andrey Lepikhov)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在使用 --bkp-details 选项的 pg_waldump 中,避免为涉及整页写入的 WAL 记录输出多余换行(Andres Freund)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_waldump 中少量的内存泄漏(Andres Freund)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
恢复将 pqsignal() 作为 libpq 的导出符号(Tom Lane)§
此前移除此函数的理由是客户端都不应使用它,但事实证明,这会使很旧版本的 psql 无法使用当前的 libpq,也可能影响其他应用。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保为 PowerPC 上的自旋锁生成正确的代码(Noah Misch)§
以前的自旋锁代码允许编译器为不接受零号寄存器的汇编指令选择该寄存器,导致构建失败。我们仅见过一份很久以前的报告与此缺陷吻合,但它可能给尝试构建修改过的 PostgreSQL 代码或使用非常规编译器选项的用户带来问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 AIX 上不再使用编译器选项 -qsrcmsg(Noah Misch)§
这避免了 xlc v16.1.0 的内部编译器错误,除了改变编译器错误消息的格式之外,几乎没有其他影响。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 MSVC 构建过程,使其能够处理 OpenSSL 文件路径中的空格(Andrew Dunstan)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。