pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2022-11-10
15.1 受支持版本维护截止 2027-11-11
对于运行 15.X 的用户,不需要执行导出/恢复。
但是,如果你经常创建和删除超过 1GB 的表,请参见下面的第一个变更日志条目。
变更
修复无法删除大表的非首段文件的问题(Tom Lane)§
PostgreSQL 将大表拆分为多个文件(通常每个文件 1GB)。删除表的逻辑存在缺陷,在两种情况下会遗漏除第一个文件之外的所有文件:删除临时表和 WAL 重放删除常规表。经常创建数 GB 临时表的应用程序可能会遭受显著的磁盘空间泄漏。
孤立的临时表文件会在 postmaster 启动时被删除,因此只需更新到 15.1 即可清除任何泄漏的临时表存储。但是,如果你在使用 15.0 时遭遇了数据库崩溃,并且在崩溃之前可能删除了大表,建议检查数据库目录中是否有按照模式 命名的文件。如果没有仅命名为 NNNN.NN(不带 NNNN. 后缀)的匹配文件,则应手动删除这些文件。NN
变更
修复在可更新视图的 INSERT 的多行 VALUES 子句中出现的 DEFAULT 令牌的处理(Tom Lane)§
此疏忽可能导致 “cache lookup failed for type” 错误,或在较旧的分支中甚至导致崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
不允许名为 _RETURN 但不是 ON SELECT 的规则(Tom Lane)§
这避免了视图的 ON SELECT 规则与其可能拥有的任何其他规则之间的混淆。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在使用带常量初始值的 SEARCH BREADTH FIRST 查询时 EXPLAIN VERBOSE 失败(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止在具有外部表分区的分区表上使用 MERGE(Álvaro Herrera)§
该情况不被支持,以前会抛出一个难以理解的错误。
变更
修复在执行 ALTER TABLE ATTACH PARTITION 时按分区构建外键约束的问题(Jehan-Guillaume de Rorthais,Álvaro Herrera)§ §
之前,可能会为新添加的分区构建不正确或重复的约束。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在分区表或继承表上使用扩展统计时的规划器失败(Richard Guo,Justin Pryzby)§
某些情况会因 “cache lookup failed for statistics object” 而失败。
变更
修复 GIN 索引快速插入路径中 WAL 操作的错误排序(Matthias van de Meent,Zhang Mingli)§
此错误在核心 PostgreSQL 中没有已知的负面后果,但确实导致了一些扩展的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止在复制工作进程中尝试复制到外部表分区(Shi Yu,Tom Lane)§
虽然分区表可以有外部表作为分区,但目前不支持复制到此类分区。如果尝试这样做,逻辑复制工作进程会崩溃。现在会抛出一个错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在复制工作进程中函数语法错误后崩溃(Maxim Orlov,Anton Melnikov,Masahiko Sawada,Tom Lane)§
如果在逻辑复制工作进程中执行的 SQL 语言或 PL/pgSQL 语言 CREATE FUNCTION 或 DO 命令中发生语法错误,工作进程会因空指针解引用或断言失败而崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免对归档模块的关闭回调进行双重调用(Nathan Bossart,Bharath Rupireddy)§
变更
增加对尝试访问没有表访问方法的表的规划时检查(Tom Lane)§
这防止了某些目录损坏场景中的崩溃,例如使用了 ON SELECT 规则缺失的视图。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止共享内存状态损坏时 postmaster 崩溃(Tom Lane)§
postmaster 进程应该在共享内存损坏时存活并启动数据库重启,但有一段代码在这方面不够谨慎。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 libpq 中,正确处理管道模式下的单行模式(Denis Laxalde)§
如果管道模式同时激活,单行标志未在正确的时间重置。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 在命令行查询被取消时的退出状态(Peter Eisentraut)§
psql -c 在查询被取消时会以成功状态退出。修复为像其他错误情况一样以非零状态退出。query
变更
允许在 pg_basebackup 中进行跨平台表空间重定位(Robert Haas)§
允许 --tablespace-mapping 中的远程路径为 Unix 风格或 Windows 风格的绝对路径,因为源服务器可能与本地系统运行在不同的操作系统上。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 无法导出某些 CHECK 约束上附加的注释的问题(Tom Lane)§
变更
修复 CREATE DATABASE 以允许其 oid 参数超过 231(Tom Lane)§
此疏忽导致当源安装包含 OID 大于此值的数据库时 pg_upgrade 无法成功。
变更
在 pg_stat_statements 中,修复对已释放内存的访问(zhaoqigui)§
当 pg_stat_statements 跟踪通过扩展查询协议发出的 ROLLBACK 命令时会出现此问题。在调试构建中,这始终导致断言失败。在生产构建中,通常没有可见的不良影响;但如果释放的内存已经被重用,很可能的结果是存储查询字符串的垃圾数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复与 LLVM 15 的不兼容问题(Thomas Munro,Andres Freund)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许在任何机器上使用 __sync_lock_test_and_set() 实现自旋锁(Tom Lane)§
这简化了向新机器架构的移植,至少在使用支持此 GCC 内置函数的编译器时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将符号 REF 重命名为 REF_P 以避免在最近的 macOS 上编译失败(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免使用 sprintf,以避免编译时的弃用警告(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新为 tzdata 2022f 版本,包含智利、斐济、伊朗、约旦、墨西哥、巴勒斯坦和叙利亚的夏令时法规变更,以及智利、克里米亚、伊朗和墨西哥的历史修正。(Tom Lane)§
此外,Europe/Kiev 时区已重命名为 Europe/Kyiv。另外,以下时区已合并到附近的、人口更多的、自 1970 年以来时钟一致的时区中:Antarctica/Vostok、Asia/Brunei、Asia/Kuala_Lumpur、Atlantic/Reykjavik、Europe/Amsterdam、Europe/Copenhagen、Europe/Luxembourg、Europe/Monaco、Europe/Oslo、Europe/Stockholm、Indian/Christmas、Indian/Cocos、Indian/Kerguelen、Indian/Mahe、Indian/Reunion、Pacific/Chuuk、Pacific/Funafuti、Pacific/Majuro、Pacific/Pohnpei、Pacific/Wake 和 Pacific/Wallis。(这间接影响了已经是这些时区别名的时区:Arctic/Longyearbyen、Atlantic/Jan_Mayen、Iceland、Pacific/Ponape、Pacific/Truk 和 Pacific/Yap。)America/Nipigon、America/Rainy_River、America/Thunder_Bay、Europe/Uzhgorod 和 Europe/Zaporozhye 也被合并到附近的时区中,因为发现它们声称的 1970 年后与这些时区的差异似乎是错误的。在所有这些情况下,之前的时区名称仍作为别名保留;但实际数据是所合并到的时区的数据。
这些时区合并导致被合并时区的 1970 年前时区历史丢失,这对于期望 timestamptz 显示一致性的应用程序可能造成困扰。例如,存储的值 1944-06-01 12:00 UTC 在选择 Europe/Stockholm 时区时,之前会显示为 1944-06-01 13:00:00+01,但现在会显示为 1944-06-01 14:00:00+02。
可以使用选项构建时区数据文件来恢复旧的时区数据,但该选择也会插入大量其他旧的(且通常缺乏充分证据的)时区数据,导致相比接受这些上游更改,总变化更多。PostgreSQL 选择按照推荐方式发布 tzdb 数据,据我们所知,大多数主要操作系统发行版也在这样做。但是,如果这些更改给你的应用程序造成了严重问题,一个可能的解决方案是使用 tzdb 的向后兼容选项安装本地构建的时区数据文件(参见其 PACKRATDATA 和 PACKRATLIST 选项)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。