↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 17.6 的版本变更

本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。

查看该版本全部变更
查看该版本全部变更

从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。

收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。

本次发布的全部变更

17.6

2025-08-14

导出 JSON
71项变更功能、修复与改进
1次版本发布按发行版本归档
5个 CVE本版说明中提及的漏洞编号

17.6 受支持版本维护截止 2029-11-08

本版提及的安全记录 5 个 CVE
本版发布说明提及的 CVE,可能包含已有漏洞的后续修复
CVE / 问题严重程度修复版本
CVE-2025-8715

在 pg_dump 输出的注释中,将名称中包含的换行符转换为空格

8.817.6
CVE-2025-8714

防止 pg_dump 脚本被用于攻击执行恢复的用户

8.817.6
CVE-2017-7484

加强规划器估算函数中的安全检查

4.3
CVE-2025-8713

加强规划器估算函数中的安全检查

3.117.6
CVE-2012-0868

在 pg_dump 输出的注释中,将名称中包含的换行符转换为空格

—

PostgreSQL 17.6

升级与兼容性说明

对于运行 17.X 的用户,无需执行转储/恢复。

不过,如果你有任何 BRIN numeric_minmax_multi_ops 索引,建议在更新后对其重建索引。见下文第四条变更记录。

此外,如果你是从早于 17.5 的版本升级,请参见第 E.7 节。

安全相关加强规划器估算函数中的安全检查

变更

加强规划器估算函数中的安全检查(Dean Rasheed)§

针对 CVE-2017-7484 的修复及后续修复,旨在防止泄漏函数被应用于调用用户无权读取的列的统计数据。在该保护措施中发现了两个漏洞。其中一个漏洞适用于分区和继承层次结构,其中表上的 RLS 策略应当限制对统计数据的访问,但实际上并未限制。

另一个漏洞适用于查询通过视图访问表的情况,其中视图所有者有权读取底层表,但调用用户没有视图的权限。视图所有者的权限满足了安全检查,而泄漏函数会在我们检查调用用户对视图的权限之前就被应用于底层表的统计数据。此问题已通过在规划开始时对视图进行安全检查来修复。这可能会导致权限错误比之前更早发生。

PostgreSQL 项目感谢 Dean Rasheed 报告此问题。(CVE-2025-8713)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关防止 pg_dump 脚本被用于攻击执行恢复的用户

变更

防止 pg_dump 脚本被用于攻击执行恢复的用户(Nathan Bossart)§

由于导出/恢复操作通常涉及以超级用户身份运行 SQL 命令,目标数据库安装必须信任源服务器。然而,这并不意味着执行 psql 进行恢复的操作系统用户也需要信任源服务器。这里的风险是,已获得源服务器超级用户级别控制权的攻击者可能会使其生成被解释为 psql 元命令的文本。这将提供对恢复用户自身帐户的 shell 级别访问,独立于对目标数据库的访问。

为了提供确保不会发生此问题的正面保证,扩展了 psql,增加了 \restrict 命令来阻止执行后续的元命令,并让 pg_dump 在来自源服务器的任何数据之前发出该命令。

PostgreSQL 项目感谢 Martin Rakhmanov、Matthieu Denais 和 RyotaK 报告此问题。(CVE-2025-8714)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关在 pg_dump 输出的注释中,将名称中包含的换行符转换为空格

变更

在 pg_dump 输出的注释中,将名称中包含的换行符转换为空格(Noah Misch)§

包含换行符的对象名称提供了向输出脚本中注入任意 SQL 命令的能力。(如果没有前述的修复,通过这种方式注入 psql 元命令也是可能的。)CVE-2012-0868 曾在当时修复了这类问题,但后续的工作重新引入了若干情况。

PostgreSQL 项目感谢 Noah Misch 报告此问题。(CVE-2025-8715)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 BRIN numeric_minmax_multi_ops 支持函数中的不正确距离计算

变更

修复 BRIN numeric_minmax_multi_ops 支持函数中的不正确距离计算(Peter Eisentraut、Tom Lane)§

在 64 位平台上结果有时是错误的,在 32 位平台上则是严重错误。这不会产生明显的故障,因为该逻辑仅用于选择如何将值合并到范围中;最差情况下索引会变得低效和膨胀。尽管如此,建议重建任何使用 numeric_minmax_multi_ops 操作符类的 BRIN 索引。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免我们可接受的 XML 输入大小出现退化

变更

避免我们可接受的 XML 输入大小出现退化(Michael Paquier、Erik Wienhold)§ §

我们针对 libxml2 早期 2.13.x 版本中一个 bug 的变通方案使用了一个会拒绝超过 10MB 文本块的代码路径,而之前的代码不会这样做。那些早期版本在实际环境中大概已经不存在了,因此恢复到之前的代码。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 MERGE 在并发更新下的问题

变更

修复 MERGE 在并发更新下的问题(Dean Rasheed)§

如果 CTE 内部的 MERGE 尝试对带有 BEFORE ROW 触发器的表执行更新或删除,而并发的 UPDATE 或 DELETE 又修改了目标行,那么 MERGE 命令将会失败(在更新动作情况下会崩溃,而在删除动作情况下则可能执行错误的动作)。

BUG 修复修复向普通继承父表执行 MERGE 的问题

变更

修复向普通继承父表执行 MERGE 的问题(Dean Rasheed)§

向这类目标表插入数据时,可能因为未能正确处理 WITH CHECK OPTION 和 RETURNING 动作而崩溃,或产生错误的查询结果。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许具有语句级触发器的表成为分区或继承子表

变更

允许具有语句级触发器的表成为分区或继承子表(Etsuro Fujita)§

我们不允许分区或继承子表拥有带有转换表的行级触发器,因为对整个继承树的操作需要为每个这样的子表维护单独的转换表。但这个问题不适用于语句级触发器,因为只有父表的语句级触发器会被触发。检查现有表是否可以成为分区或继承子表的代码却错误地拒绝了两种触发器。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止从外部子表收集转换元组

变更

禁止从外部子表收集转换元组(Etsuro Fujita)§

我们不支持在外部表上使用带有转换表的触发器。但是,分区或继承子表是外部表的情况被忽略了。如果父表有这样的触发器,就会从外部子表收集到不正确的转换元组。现在改为抛出错误,报告该情况不被支持。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许重置具有保留前缀的未知自定义参数

变更

允许重置具有保留前缀的未知自定义参数(Nathan Bossart)§

之前,如果使用 ALTER DATABASE/ROLE/SYSTEM 存储了参数设置,当该参数未知但具有保留前缀时,存储的设置无法被删除。这种情况可能在扩展曾经有一个参数但该参数在升级中被删除时出现。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ALTER SUBSCRIPTION ... DROP PUBLICATION 期间的潜在死锁问题

变更

修复 ALTER SUBSCRIPTION ... DROP PUBLICATION 期间的潜在死锁问题(Ajin Cherian)§

确保服务器进程在复制源删除期间以一致的顺序获取系统目录锁。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进缩短创建名称冲突索引时的竞争窗口

变更

缩短创建名称冲突索引时的竞争窗口(Tom Lane)§

在为索引选择自动生成的名称时,除了完全有效的 pg_class 行之外,也要避免与尚未提交的 pg_class 行发生冲突。这样可以避免在并发 CREATE INDEX 尚处于填充索引过程中,或虽已完成但其事务尚未提交时,意外选中同一个名称。虽然仍然存在一个出问题的窗口,但其长度仅限于验证新索引参数并插入其 pg_class 行所需的时间。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止在单条命令对多个表执行 VACUUM 的某些情况下使用错误的选项

变更

防止在单条命令对多个表执行 VACUUM 的某些情况下使用错误的选项(Nathan Bossart, Michael Paquier)§

一个表的 TRUNCATE 和 INDEX_CLEANUP 选项可能会被错误地应用到其他表上。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保在 vacuum 没有索引的表时,表的自由空间映射能及时更新

变更

确保在 vacuum 没有索引的表时,表的自由空间映射能及时更新(Masahiko Sawada)§

先前的一项优化会导致这类表有时跳过 FSM vacuum。

BUG 修复修复 SIMILAR TO 正则表达式中字符类的处理问题

变更

修复 SIMILAR TO 正则表达式中字符类的处理问题(Laurenz Albe)§ §

将 SIMILAR TO 模式匹配表达式转换为 POSIX 风格正则表达式的代码,没有考虑到方括号可以嵌套。例如,在 [[:alpha:]%_] 这样的模式中,代码把 % 和 _ 字符当成了元字符,但它们本应是字面量。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在反解析查询时,始终为 FETCH FIRST expression ROWS WITH TIES 子句中的表达式加上括号

变更

在反解析查询时,始终为 FETCH FIRST expression ROWS WITH TIES 子句中的表达式加上括号(Heikki Linnakangas)§ §

这可以避免某些情况下反解析结果在语法上无效。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进限制检查点进程的 fsync 请求队列大小

变更

限制检查点进程的 fsync 请求队列大小(Alexander Korotkov、Xuneng Zhou)§ §

在 shared_buffers 设置非常大时,检查点进程可能尝试为 fsync 请求分配超过 1GB 的内存,导致失败并进入无限循环。限制队列大小以防止此情况发生。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待

变更

避免在读取部分写入的 WAL 记录时逻辑解码出现无限等待(Vignesh C)§

如果服务器在写入跨越多个页面的 WAL 记录的第一部分后崩溃,后续对该 WAL 流的逻辑解码将等待下一个 WAL 页面上的数据到来。如果服务器此时处于空闲状态,这可能永远不会发生。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 MultiXactOffsetSLRU 和 MultiXactMemberSLRU 的 LWLock 名称拼写不一致问题

变更

修复 MultiXactOffsetSLRU 和 MultiXactMemberSLRU 的 LWLock 名称拼写不一致问题(Bertrand Drouvot)§

这导致 pg_wait_events 和 pg_stat_activity 中显示的等待事件名称不同,可能破坏连接这两个视图的监控查询。

BUG 修复修复 ACL 字符串中角色名称引用的不一致问题

变更

修复 ACL 字符串中角色名称引用的不一致问题(Tom Lane)§

之前的引用规则是与区域设置相关的,这在跨安装传输 aclitem 值时可能导致可移植性问题。(pg_dump 不会这样做,但其他工具可能会。)为确保一致性,始终在 aclitem 输出中引用非 ASCII 字符;但为了保持向后兼容性,在 aclitem 输入期间从不要求必须引用它们。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进拒绝在关系选项和外部数据选项名称中使用等号(=)

变更

拒绝在关系选项和外部数据选项名称中使用等号(=)(Tom Lane)§

这类选项名称看不出有什么明确用途,而且允许它们会在存储表示中引入歧义。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 LZ4 压缩归档数据可能不正确的解压缩问题

变更

修复 LZ4 压缩归档数据可能不正确的解压缩问题(Mikhail Gribkov)§

此错误似乎仅在输入数据不太可压缩时才会出现,这可能解释了它为何未被发现。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目

变更

避免 B-树索引扫描在罕见情况下将错误的索引条目标记为死条目(Peter Geoghegan)§

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在逻辑复制期间重新分发来自其他事务的缓存失效消息

变更

避免在逻辑复制期间重新分发来自其他事务的缓存失效消息(Vignesh C)§

我们上一轮次版本发布中包含了一项修复,确保复制接收进程会响应跨进程缓存失效消息,从而避免它们在执行复制更新时使用过期的系统目录数据。然而,该修复无意中也让这些进程再次重新分发这些消息,导致失效消息数量呈指数级增长,并且常常以内存分配失败告终。现已通过不重新分发收到的消息来修复该问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进当复制槽同步配置错误时,避免服务器意外关闭

变更

当复制槽同步配置错误时,避免服务器意外关闭(Fujii Masao)§

如果 sync_replication_slots 被设为 true,而 wal_level 又低于 logical,postmaster 进程就会报告错误并随之停止。理想行为只是禁用复制槽同步,因此现在降低该错误消息的级别,以避免 postmaster 被关闭。

其他改进避免在检查点期间过早移除旧 WAL

变更

避免在检查点期间过早移除旧 WAL(Vitaly Davydov)§

如果在检查点进行期间推进了某个复制槽的 restart point,那么已不再需要的 WAL 段可能会被过早移除,从而在数据库随后立即崩溃时导致恢复失败。现已通过额外保留一个检查点周期来修复此问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进绝不要向后移动复制槽的 confirmed-flush 位置

变更

绝不要向后移动复制槽的 confirmed-flush 位置(Shveta Malik)§

在某些情况下,复制客户端可能会确认一个超过其持久化存储位置的 LSN,然后在重启后又发送一个更旧的 LSN。只要客户端对这两个位置之间的 WAL 没有任何必须执行的操作,我们就认为这并不是缺陷。不过,为避免数据重复,我们不应重新发送那段 WAL,因此要确保对给定槽始终采用最新的 confirmed LSN。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止在启动新的逻辑复制工作进程前出现过长延迟

变更

防止在启动新的逻辑复制工作进程前出现过长延迟(Tom Lane)§

在某些情况下,逻辑复制启动器在启动新工作进程之前,休眠时间可能会远远超过所配置的 wal_retrieve_retry_interval。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在逻辑复制 INSERT ... ON CONFLICT 时的释放后使用问题

变更

修复在逻辑复制 INSERT ... ON CONFLICT 时的释放后使用问题(Ethan Mertz、Michael Paquier)§

这可能导致不正确的进度报告,如果运气非常不好还可能导致 WAL 发送进程崩溃。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许中断在备库服务器上等待事务结束的操作

变更

允许中断在备库服务器上等待事务结束的操作(Kevin K Biju)§

在备库服务器上创建复制槽时,可能需要等待主库上的某些活动事务结束,并在备库上完成回放。由于这可能是无限期等待,因此理应允许取消该操作,但原先循环中没有检查查询取消。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进不要让级联逻辑 WAL 发送进程尝试发送超出其备库服务器已回放范围的数据

变更

不要让级联逻辑 WAL 发送进程尝试发送超出其备库服务器已回放范围的数据(Alexey Makhmutov)§

这可以避免此类 WAL 发送进程在备库服务器关闭时卡住,等待本不会发生的回放工作,因为服务器的启动进程此时已经关闭。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复自动清理中的每关系内存泄漏

变更

修复自动清理中的每关系内存泄漏(Tom Lane)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 XMLSERIALIZE(... INDENT) 中的会话生命期内存泄漏

变更

修复 XMLSERIALIZE(... INDENT) 中的会话生命期内存泄漏(Dmitry Kovalenko、Tom Lane)§ §

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复使用 “bump” 分配器分配大块内存时,在内存耗尽后可能发生崩溃的问题

变更

修复使用 “bump” 分配器分配大块内存时,在内存耗尽后可能发生崩溃的问题(Tom Lane)§

BUG 修复修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题

变更

修复某些位置可能在没有任何快照的情况下尝试获取系统目录中经过 TOAST 处理的字段的问题(Nathan Bossart)§

这可能导致断言失败,或出现 “cannot fetch toast data without an active snapshot” 错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在跨表约束更新期间的断言失败

变更

避免在跨表约束更新期间的断言失败(Tom Lane、Jian He)§ §

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进移除在 PortalRunMulti() 结束时必须已确定命令标签的错误断言

变更

移除在 PortalRunMulti() 结束时必须已确定命令标签的错误断言(Álvaro Herrera)§

在边界情况下(例如空的预备语句)此断言会失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 XMLTABLE 解析中的断言失败

变更

修复 XMLTABLE 解析中的断言失败(Richard Guo)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进恢复在并行模式下运行 PL/pgSQL 表达式的能力

变更

恢复在并行模式下运行 PL/pgSQL 表达式的能力(Dipesh Dhameliya)§

PL/pgSQL 中“表达式”的概念非常广泛,涵盖任何返回单列且不超过一行的 SQL SELECT 查询。因此在某些情况下,例如计算聚合函数时,查询涉及大量工作,使用并行工作进程来运行它会很有用。这以前是可能的,但之前的一个 bug 修复无意中禁用了它。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PL/Python 错误报告中的边缘场景资源泄漏

变更

修复 PL/Python 错误报告中的边缘场景资源泄漏(Tom Lane)§ §

在报告 Python 错误时发生内存耗尽失败,可能导致无法减少 Python 对象的引用计数,从而造成贯穿整个会话生命周期的内存泄漏。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复当服务器地址使用 hostaddr 指定时 libpq 的 PQcancelCreate() 函数

变更

修复当服务器地址使用 hostaddr 指定时 libpq 的 PQcancelCreate() 函数(Sergei Kornilov)§

如果实际使用生成出的 cancel 对象,libpq 就会崩溃。

BUG 修复修复 libpq 的 PQport() 函数,使其除非传入的连接为 NULL,否则永远不返回 NULL

变更

修复 libpq 的 PQport() 函数,使其除非传入的连接为 NULL,否则永远不返回 NULL(Daniele Varrazzo)§

这是文档中记录的行为,但最近的 libpq 版本在用户未提供端口规范的某些情况下会返回 NULL。恢复到我们历史上在此类情况下返回空字符串的行为。(v18 及更高版本将返回编译时的默认端口号,通常是 "5432"。)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免当 GSSAPI 认证需要大于 16kB 的数据包时发生失败

变更

避免当 GSSAPI 认证需要大于 16kB 的数据包时发生失败(Jacob Champion, Tom Lane)§

属于许多 AD 组的 Active Directory 用户需要更大的认证数据包。这个限制表现为连接失败,并伴随难以理解的错误消息,典型如 “GSSAPI context establishment error: The routine must be called again to complete its function: Unknown error”。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 SSL 和 GSSAPI 数据传输中依赖时序的失败问题

变更

修复 SSL 和 GSSAPI 数据传输中依赖时序的失败问题(Tom Lane)§

在非阻塞模式下使用 SSL 或 GSSAPI 加密时,libpq 有时会因 “SSL error: bad length” 或 “GSSAPI caller failed to retransmit all data needing to be retried” 而失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在 ecpg 应用程序中连接查找时的空指针解引用

变更

避免在 ecpg 应用程序中连接查找时的空指针解引用(Aleksander Alekseev)§

这种情况只有在应用程序同时存在命名连接和未命名连接时才会发生。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 psql 对 COPY 和 \copy 选项的 tab 补全

变更

改进 psql 对 COPY 和 \copy 选项的 tab 补全(Atsushi Torikoshi)§

对 COPY FROM 和 COPY TO 提供了相同的补全建议,尽管某些选项仅对其中一种情况有效。区分这些情况以提供更准确的建议。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 pgbench 在收到多个管道同步消息时的断言失败

变更

避免 pgbench 在收到多个管道同步消息时的断言失败(Fujii Masao)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复使用 pg_createsubscriber 初始化订阅时事务被重复回放的问题

变更

修复使用 pg_createsubscriber 初始化订阅时事务被重复回放的问题(Shlok Kyal)§

在订阅者恢复期间处理的最后一个事务,有可能会在正常复制开始后再次被发送。

其他改进确保 pg_dump 转储域类型上非空约束的注释

变更

确保 pg_dump 转储域类型上非空约束的注释(Jian He, Álvaro Herrera)§

其他改进确保 pg_dump 以有效的顺序导出域约束上的注释

变更

确保 pg_dump 以有效的顺序导出域约束上的注释(Jian He)§

在某些情况下,注释命令可能出现在约束创建之前。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 pg_dump 对所有类型的数据库对象具有稳定的排序顺序

变更

确保 pg_dump 对所有类型的数据库对象具有稳定的排序顺序(Noah Misch、Andreas Karlsson)§ § §

pg_dump 在执行依赖关系驱动的重新排序之前,按逻辑名称对对象进行排序。此排序未考虑标识某些对象类型(如规则和约束)的完整唯一键,因此对于逻辑上相同的数据库可能产生不同的排序顺序。这使得通过比较 pg_dump 输出的 diff 来比较数据库变得困难,因此改进了逻辑以确保在所有情况下排序顺序都是稳定的。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 过滤文件中对象类型解析错误的问题

变更

修复 pg_dump 过滤文件中对象类型解析错误的问题(Fujii Masao)§

现在将关键字视为一直延伸到下一个空白字符,而不是像以前那样在第一个非字母数字字符处停止。对于有效关键字,这没有区别;但它能让某些错误情况被正确识别。例如,table-data 现在会被拒绝,而以前会被误解为 table。

其他改进pg_restore 无法从 PostgreSQL v12 之前的 pg_dump 版本生成的目录格式转储中恢复大对象(BLOB)

变更

pg_restore 无法从 PostgreSQL v12 之前的 pg_dump 版本生成的目录格式转储中恢复大对象(BLOB)(Pavel Stehule)§

其他改进在 pg_upgrade 中,检查不一致的继承非空约束

变更

在 pg_upgrade 中,检查不一致的继承非空约束(Ali Akbar)§ § §

18 之前的 PostgreSQL 版本允许删除继承列的非空约束。但是,这会导致无法恢复的模式,从而导致 pg_upgrade 失败。在 pg_upgrade 的预检查中检测此类情况,以便用户在启动升级之前修复它们。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_upgrade 期间,不再要求目标安装将 max_slot_wal_keep_size 设置为其默认值

变更

在 pg_upgrade 期间,不再要求目标安装将 max_slot_wal_keep_size 设置为其默认值(Dilip Kumar)§

其他改进避免在 initdb 期间启用 track_commit_timestamp 时的断言失败

变更

避免在 initdb 期间启用 track_commit_timestamp 时的断言失败(Hayato Kuroda、Andy Fan)§

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_waldump,使其显示 PREPARE TRANSACTION WAL 记录中被删除统计信息的相关内容

变更

修复 pg_waldump,使其显示 PREPARE TRANSACTION WAL 记录中被删除统计信息的相关内容(Daniil Davydov)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免在 contrib/dblink 建立连接期间可能泄漏已打开的连接

变更

避免在 contrib/dblink 建立连接期间可能泄漏已打开的连接(Tom Lane)§

在罕见情况下,如果我们在将新连接对象插入 dblink 的 hash 表时遇到内存耗尽,那么该已打开的连接就会一直泄漏到会话结束,并在远程服务器上留下一个空闲会话。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 contrib/pg_prewarm 能够处理非常大的 shared_buffers 设置

变更

使 contrib/pg_prewarm 能够处理非常大的 shared_buffers 设置(Daria Shanina)§

如果 shared_buffers 大于约 5000 万个缓冲区(400GB),autoprewarm 就会因内存分配错误而失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 contrib/pg_prewarm 中出现断言失败

变更

防止 contrib/pg_prewarm 中出现断言失败(Masahiro Ikeda)§

将 pg_prewarm() 应用于缺少存储的关系(如视图)时会导致断言失败,尽管在非断言构建中并无实际副作用。现已增加错误检查以拒绝这种情况。

其他改进在 contrib/pg_stat_statements 中,避免在规范化查询中使用的参数编号出现间隔

变更

在 contrib/pg_stat_statements 中,避免在规范化查询中使用的参数编号出现间隔(Sami Imseih)§

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/postgres_fdw 的 DirectModify 方法中的内存泄漏

变更

修复 contrib/postgres_fdw 的 DirectModify 方法中的内存泄漏(Tom Lane)§

如果查询在 DirectModify 方法两次调用之间失败,那么保存远程修改命令结果的 PGresult 就会在该会话剩余时间内泄漏;当存在 RETURNING 数据需要处理时,就可能发生这种情况。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 configure 的 --with-includes 和 --with-libraries 选项中列出的目录在系统提供的目录之前被搜索

变更

确保 configure 的 --with-includes 和 --with-libraries 选项中列出的目录在系统提供的目录之前被搜索(Tom Lane)§

使用这些选项的一个常见原因是允许用户自行构建的库版本覆盖系统提供的版本。然而,在某些环境中,由于 makefile 中发出的命令中开关顺序不当,这无法正常工作。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 configure 对 __cpuid() 和 __cpuidex() 的检测

变更

修复 configure 对 __cpuid() 和 __cpuidex() 的检测(Lukas Fittl、Michael Paquier)§

configure 未能检测到这些 Windows 特有的函数,因此它们不会被使用,导致 CRC 计算比必要的慢,因为无法验证硬件指令的可用性。此错误的实际影响有限,因为 Windows 的生产构建通常不使用 Autoconf 工具链。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在基于 Solaris 的平台上使用 --with-pam 选项时的构建失败

变更

修复在基于 Solaris 的平台上使用 --with-pam 选项时的构建失败(Tom Lane)§

Solaris 在 PAM 认证的 API 方面与其他 Unix 平台不一致。这表现为一个 “inconsistent pointer” 编译器警告,我们之前一直没有处理。但从 GCC 14 开始,默认情况下这是一个错误而不是警告,因此进行了修复。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使我们的代码可移植到 GNU Hurd

变更

使我们的代码可移植到 GNU Hurd(Michael Banck、Christoph Berg、Samuel Thibault)§ §

修复了关于 IOV_MAX 和 O_RDONLY 在 Hurd 上不成立的假设。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使我们对 memset_s() 的使用严格符合 C11 标准

变更

使我们对 memset_s() 的使用严格符合 C11 标准(Tom Lane)§

这可以避免某些平台上的编译失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进消除使用 Meson 配合 MSVC 构建时的兼容性警告

变更

消除使用 Meson 配合 MSVC 构建时的兼容性警告(Peter Eisentraut)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 JSONB 比较代码中的未初始化值编译器警告

变更

防止 JSONB 比较代码中的未初始化值编译器警告(Tom Lane)§

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在使用 libxml2 2.14 及更高版本构建时出现弃用警告

变更

避免在使用 libxml2 2.14 及更高版本构建时出现弃用警告(Michael Paquier)§

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在 C++ 下编译 pg_locale.h 时的问题

变更

避免在 C++ 下编译 pg_locale.h 时的问题(John Naylor)§

PostgreSQL 头文件通常需要用 extern "C" { ... } 包裹才能在用 C++ 编写的扩展中被包含。对于 pg_locale.h,由于它使用了 libicu 头文件,这会失败,但我们可以通过在这些头文件中抑制仅限 C++ 的声明来解决此问题。想要使用 libicu 的 C++ API 的 C++ 扩展可以在包含 pg_locale.h 之前先包含 libicu 头文件。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。