↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 15.1 发布变化

此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。

此版本的完整变化
此版本的完整变化

包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。

完整发布变化

15.1

2022-11-10

导出 JSON ↓
26项变化功能、修复、改进
1个版本按版本分组
0CVE独立漏洞编号

15.1stable支持截止 2027-11-11

PostgreSQL 15.1

迁移与兼容性

对于运行 15.X 的用户,不需要执行导出/恢复。

但是,如果你经常创建和删除超过 1GB 的表,请参见下面的第一个变更日志条目。

问题修复修复无法删除大表的非首段文件的问题

变更

修复无法删除大表的非首段文件的问题(Tom Lane)§

PostgreSQL 将大表拆分为多个文件(通常每个文件 1GB)。删除表的逻辑存在缺陷,在两种情况下会遗漏除第一个文件之外的所有文件:删除临时表和 WAL 重放删除常规表。经常创建数 GB 临时表的应用程序可能会遭受显著的磁盘空间泄漏。

孤立的临时表文件会在 postmaster 启动时被删除,因此只需更新到 15.1 即可清除任何泄漏的临时表存储。但是,如果你在使用 15.0 时遭遇了数据库崩溃,并且在崩溃之前可能删除了大表,建议检查数据库目录中是否有按照模式 NNNN.NN 命名的文件。如果没有仅命名为 NNNN(不带 .NN 后缀)的匹配文件,则应手动删除这些文件。

问题修复修复在可更新视图的 INSERT 的多行 VALUES 子句中出现的 DEFAULT 令牌的处理

变更

修复在可更新视图的 INSERT 的多行 VALUES 子句中出现的 DEFAULT 令牌的处理(Tom Lane)§

此疏忽可能导致 “cache lookup failed for type” 错误,或在较旧的分支中甚至导致崩溃。

关联记录 (5)
改进不允许名为 _RETURN 但不是 ON SELECT 的规则

变更

不允许名为 _RETURN 但不是 ON SELECT 的规则(Tom Lane)§

这避免了视图的 ON SELECT 规则与其可能拥有的任何其他规则之间的混淆。

关联记录 (5)
改进避免在使用带常量初始值的 SEARCH BREADTH FIRST 查询时 EXPLAIN VERBOSE 失败

变更

避免在使用带常量初始值的 SEARCH BREADTH FIRST 查询时 EXPLAIN VERBOSE 失败(Tom Lane)§

关联记录 (1)
改进防止在具有外部表分区的分区表上使用 MERGE

变更

防止在具有外部表分区的分区表上使用 MERGE(Álvaro Herrera)§

该情况不被支持,以前会抛出一个难以理解的错误。

问题修复修复在执行 ALTER TABLE ATTACH PARTITION 时按分区构建外键约束的问题

变更

修复在执行 ALTER TABLE ATTACH PARTITION 时按分区构建外键约束的问题(Jehan-Guillaume de Rorthais,Álvaro Herrera)§ §

之前,可能会为新添加的分区构建不正确或重复的约束。

关联记录 (3)
问题修复修复在分区表或继承表上使用扩展统计时的规划器失败

变更

修复在分区表或继承表上使用扩展统计时的规划器失败(Richard Guo,Justin Pryzby)§

某些情况会因 “cache lookup failed for statistics object” 而失败。

问题修复修复 GIN 索引快速插入路径中 WAL 操作的错误排序

变更

修复 GIN 索引快速插入路径中 WAL 操作的错误排序(Matthias van de Meent,Zhang Mingli)§

此错误在核心 PostgreSQL 中没有已知的负面后果,但确实导致了一些扩展的问题。

关联记录 (5)
问题修复修复在重放起始点位于事务开始和其子事务开始之间时逻辑解码中的错误

变更

修复在重放起始点位于事务开始和其子事务开始之间时逻辑解码中的错误(Masahiko Sawada,Kuroda Hayato)§ §

这些错误可能导致调试构建中的断言失败,否则会导致内存泄漏。

关联记录 (5)
改进在逻辑解码的更多位置接受中断

变更

在逻辑解码的更多位置接受中断(Amit Kapila,Masahiko Sawada)§ §

这改善了复制工作进程缓慢关闭的问题。

关联记录 (5)
改进防止在复制工作进程中尝试复制到外部表分区

变更

防止在复制工作进程中尝试复制到外部表分区(Shi Yu,Tom Lane)§

虽然分区表可以有外部表作为分区,但目前不支持复制到此类分区。如果尝试这样做,逻辑复制工作进程会崩溃。现在会抛出一个错误。

关联记录 (2)
问题修复避免在复制工作进程中函数语法错误后崩溃

变更

避免在复制工作进程中函数语法错误后崩溃(Maxim Orlov,Anton Melnikov,Masahiko Sawada,Tom Lane)§

如果在逻辑复制工作进程中执行的 SQL 语言或 PL/pgSQL 语言 CREATE FUNCTION 或 DO 命令中发生语法错误,工作进程会因空指针解引用或断言失败而崩溃。

关联记录 (5)
改进避免对归档模块的关闭回调进行双重调用

变更

避免对归档模块的关闭回调进行双重调用(Nathan Bossart,Bharath Rupireddy)§

改进增加对尝试访问没有表访问方法的表的规划时检查

变更

增加对尝试访问没有表访问方法的表的规划时检查(Tom Lane)§

这防止了某些目录损坏场景中的崩溃,例如使用了 ON SELECT 规则缺失的视图。

关联记录 (3)
问题修复防止共享内存状态损坏时 postmaster 崩溃

变更

防止共享内存状态损坏时 postmaster 崩溃(Tom Lane)§

postmaster 进程应该在共享内存损坏时存活并启动数据库重启,但有一段代码在这方面不够谨慎。

关联记录 (5)
改进在 libpq 中,正确处理管道模式下的单行模式

变更

在 libpq 中,正确处理管道模式下的单行模式(Denis Laxalde)§

如果管道模式同时激活,单行标志未在正确的时间重置。

关联记录 (1)
问题修复修复 psql 在命令行查询被取消时的退出状态

变更

修复 psql 在命令行查询被取消时的退出状态(Peter Eisentraut)§

psql -c query 在查询被取消时会以成功状态退出。修复为像其他错误情况一样以非零状态退出。

改进允许在 pg_basebackup 中进行跨平台表空间重定位

变更

允许在 pg_basebackup 中进行跨平台表空间重定位(Robert Haas)§

允许 --tablespace-mapping 中的远程路径为 Unix 风格或 Windows 风格的绝对路径,因为源服务器可能与本地系统运行在不同的操作系统上。

关联记录 (5)
问题修复修复 pg_dump 无法导出某些 CHECK 约束上附加的注释的问题

变更

修复 pg_dump 无法导出某些 CHECK 约束上附加的注释的问题(Tom Lane)§

问题修复修复 CREATE DATABASE 以允许其 oid 参数超过 231

变更

修复 CREATE DATABASE 以允许其 oid 参数超过 231(Tom Lane)§

此疏忽导致当源安装包含 OID 大于此值的数据库时 pg_upgrade 无法成功。

问题修复在 pg_stat_statements 中,修复对已释放内存的访问

变更

在 pg_stat_statements 中,修复对已释放内存的访问(zhaoqigui)§

当 pg_stat_statements 跟踪通过扩展查询协议发出的 ROLLBACK 命令时会出现此问题。在调试构建中,这始终导致断言失败。在生产构建中,通常没有可见的不良影响;但如果释放的内存已经被重用,很可能的结果是存储查询字符串的垃圾数据。

关联记录 (5)
问题修复修复与 LLVM 15 的不兼容问题

变更

修复与 LLVM 15 的不兼容问题(Thomas Munro,Andres Freund)§

关联记录 (4)
改进允许在任何机器上使用 __sync_lock_test_and_set() 实现自旋锁

变更

允许在任何机器上使用 __sync_lock_test_and_set() 实现自旋锁(Tom Lane)§

这简化了向新机器架构的移植,至少在使用支持此 GCC 内置函数的编译器时。

关联记录 (5)
改进将符号 REF 重命名为 REF_P 以避免在最近的 macOS 上编译失败

变更

将符号 REF 重命名为 REF_P 以避免在最近的 macOS 上编译失败(Tom Lane)§

关联记录 (5)
改进避免使用 sprintf,以避免编译时的弃用警告

变更

避免使用 sprintf,以避免编译时的弃用警告(Tom Lane)§

关联记录 (3)
改进将时区数据文件更新为 tzdata 2022f 版本,包含智利、斐济、伊朗、约旦、墨西哥、巴勒斯坦和叙利亚的夏令时法规变更,以及智利、克里米亚、伊朗和墨西哥的历史修正。

变更

将时区数据文件更新为 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 选项)。

关联记录 (5)
如何生成比较结果?

比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。

发布快照: 2026-09-26 · 安全快照: 2026-09-26

内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.