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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 18.4 的版本变更

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

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

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

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

本次发布的全部变更

18.4

2026-05-14

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

18.4 受支持版本维护截止 2030-11-14

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

防止 contrib/spi 中的 SQL 注入和缓冲区越界写

8.818.4
CVE-2026-6477

将 PQfn() 标记为不安全,并避免在 libpq 内部使用它

8.818.4
CVE-2026-6475

防止 pg_basebackup 和 pg_rewind 中的路径遍历

8.818.4
CVE-2026-6473

修复内存分配计算中的多处整数溢出问题

8.818.4
CVE-2026-6479

防止处理启动包时发生无界递归

7.518.4
CVE-2026-6476

在 pg_createsubscriber 中正确为订阅名称加引号

7.218.4
CVE-2026-6478

在认证代码中使用时序安全的字符串比较

6.518.4
CVE-2026-6472

创建多范围类型时,确保用户在为该多范围类型指定的模式上拥有 CREATE 权限

5.418.4
CVE-2026-6575

在恢复属性 MCV 统计信息时检测错误输入

4.318.4
CVE-2026-6474

防范 timeofday() 和 pg_strftime() 中的恶意时区名

4.318.4
CVE-2026-6638

在逻辑复制源检查中正确引用对象名称

3.718.4

PostgreSQL 18.4

升级与兼容性说明

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

但是,如果你从早于 18.2 的版本升级,请参见第 E.4 节。

安全相关防止处理启动包时发生无界递归

变更

防止处理启动包时发生无界递归(Michael Paquier)§

恶意客户端可以通过无限交替发送被拒绝的 SSL 和 GSS 加密请求,使已连接的后端崩溃。

PostgreSQL 项目感谢 Calif.io(与 Claude 和 Anthropic Research 协作)报告此问题。(CVE-2026-6479)

关联记录(4)

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

安全相关修复内存分配计算中的多处整数溢出问题

变更

修复内存分配计算中的多处整数溢出问题(Tom Lane,Nathan Bossart,Heikki Linnakangas)§ § § § § § § § §

多处代码在计算需要分配多少内存时,未充分注意整数溢出的可能性。溢出会导致分配过小的缓冲区,调用者随后会写过该缓冲区的末尾。这至少会触发服务器崩溃,并且很可能可被利用来执行任意代码。在许多但绝非所有情况下,这种风险只存在于 32 位构建中。

PostgreSQL 项目感谢 Xint Code、Bruce Dang、Sven Klemm 和 Pavel Kohout 报告这些问题。(CVE-2026-6473)

关联记录(4)

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

安全相关在 pg_createsubscriber 中正确为订阅名称加引号

变更

在 pg_createsubscriber 中正确为订阅名称加引号(Nathan Bossart)§

给定的订阅名称未经加引号就被插入到 SQL 命令中,因此在订阅名称来自不可信来源的(也许不太可能的)情况下,可能实现 SQL 注入。

PostgreSQL 项目感谢 Yu Kunpeng 报告此问题。(CVE-2026-6476)

关联记录(1)

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

安全相关在逻辑复制源检查中正确引用对象名称

变更

在逻辑复制源检查中正确引用对象名称(Pavel Kohout)§

ALTER SUBSCRIPTION ... REFRESH PUBLICATION 将模式名和关系名未经引用就插入到 SQL 命令中,从而允许在发布者上执行任意 SQL。

PostgreSQL 项目感谢 Pavel Kohout 报告此问题。(CVE-2026-6638)

关联记录(2)

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

安全相关拒绝 ts_headline() 中过长的选项

变更

拒绝 ts_headline() 中过长的选项(Michael Paquier)§

StartSel、StopSel 和 FragmentDelimiter 字符串的长度不得超过 32Kb,但此前没有对此进行检查。过长的值通常会使服务器崩溃。

PostgreSQL 项目感谢 Xint Code 报告此问题。(CVE-2026-6473)

关联记录(4)

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

安全相关在恢复属性 MCV 统计信息时检测错误输入

变更

在恢复属性 MCV 统计信息时检测错误输入(Michael Paquier)§

统计信息恢复函数在验证高频值统计信息时不够谨慎,会接受稍后可能导致规划器崩溃的值。

PostgreSQL 项目感谢 Jeroen Gui 报告此问题。(CVE-2026-6575)

安全相关防范 timeofday() 和 pg_strftime() 中的恶意时区名

变更

防范 timeofday() 和 pg_strftime() 中的恶意时区名(Tom Lane)§ §

精心构造的时区设置可能将 % 序列传递给 snprintf(),从而可能造成崩溃或泄露服务器内存。另一条导致类似结果的路径,是让 pg_strftime() 使用的固定大小输出缓冲区溢出。

PostgreSQL 项目感谢 Xint Code 报告此问题。(CVE-2026-6474)

关联记录(4)

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

安全相关创建多范围类型时,确保用户在为该多范围类型指定的模式上拥有 CREATE 权限

变更

创建多范围类型时,确保用户在为该多范围类型指定的模式上拥有 CREATE 权限(Jelte Fennema-Nio)§

多范围类型可以放入不同于其父范围类型的模式中,但此前在这样做时遗漏了必需的权限检查。

PostgreSQL 项目感谢 Jelte Fennema-Nio 报告此问题。(CVE-2026-6472)

关联记录(4)

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

安全相关在认证代码中使用时序安全的字符串比较

变更

在认证代码中使用时序安全的字符串比较(Michael Paquier)§

在检查口令、hash 等值时,使用 timingsafe_bcmp() 而不是 memcmp() 或 strcmp()。尚不清楚这些函数的数据依赖性在这些位置是否真的可被有效利用,但为安全起见,将其替换。

PostgreSQL 项目感谢 Joe Conway 报告此问题。(CVE-2026-6478)

关联记录(4)

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

安全相关将 PQfn() 标记为不安全,并避免在 libpq 内部使用它

变更

将 PQfn() 标记为不安全,并避免在 libpq 内部使用它(Nathan Bossart)§

对于非整数结果类型,PQfn() 不会获得输出缓冲区的大小,因此它无法检查服务器返回的数据能否放入缓冲区。恶意服务器因而可能覆盖客户端内存。若不改变 API 就无法修复这一点,所以将该函数标记为已废弃。在 libpq 内部,改用一个能够执行缺失检查的变体版本。

PostgreSQL 项目感谢 Yu Kunpeng 和 Martin Heistermann 报告此问题。(CVE-2026-6477)

关联记录(4)

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

安全相关防止 pg_basebackup 和 pg_rewind 中的路径遍历

变更

防止 pg_basebackup 和 pg_rewind 中的路径遍历(Michael Paquier)§

这些应用未能验证从其输入中读取的输出文件路径,因而恶意来源可以覆盖这些应用可写的任意文件。通过拒绝绝对路径或包含父目录引用的路径,约束数据可以写入的位置。

PostgreSQL 项目感谢 Tencent Xuanwu Lab 的 XlabAI Team 和 Valery Gubanov 报告此问题。(CVE-2026-6475)

关联记录(4)

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

安全相关防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出

变更

防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出(Tom Lane)§ §

这些查询结构的解析没有检查 16 位字段溢出,因而可能构造出无效的查询树。执行该查询时,这可能使服务器崩溃。

PostgreSQL 项目感谢 Xint Code 报告此问题。(CVE-2026-6473)

关联记录(4)

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

安全相关防范 contrib/ltree 的 lquery 类型中过长的值

变更

防范 contrib/ltree 的 lquery 类型中过长的值(Michael Paquier)§

包含超过 64K 个项的值会导致内部溢出,可能造成栈破坏或错误结果。

PostgreSQL 项目感谢 Vergissmeinnicht、A1ex 和 Jihe Wang 报告此问题。(CVE-2026-6473)

关联记录(4)

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

安全相关防止 contrib/spi 中的 SQL 注入和缓冲区越界写

变更

防止 contrib/spi 中的 SQL 注入和缓冲区越界写(Nathan Bossart)§

check_foreign_key() 在为键值加引号时不够谨慎,并且还使用固定长度缓冲区构造查询。虽然该模块只是作为示例代码,但仍然不应包含此类危险错误。

PostgreSQL 项目感谢 Nikolay Samokhvalov 报告此问题。(CVE-2026-6637)

关联记录(4)

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

其他改进在假定支持排序规则的类型上的等值条件意味着唯一性之前,检查是否存在非确定性排序规则

变更

在假定支持排序规则的类型上的等值条件意味着唯一性之前,检查是否存在非确定性排序规则(Richard Guo)§ § § § §

许多规划器优化都会假定,例如,如果 x 上存在唯一索引,则最多只有一个表行能满足 WHERE x = 'abc'。不过,如果该索引和 WHERE 子句附加了不同的排序规则,一般来说这个结论是不安全的。当两个排序规则都是确定性排序规则时这是安全的,因为该属性本质上要求两个字符串相等就意味着逐位相等。但非确定性排序规则并不如此,因此如果 WHERE 子句或索引任一方具有非确定性排序规则,基于唯一匹配假设进行优化就可能给出错误的查询结果。

关联记录(4)

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

BUG 修复修复连接移除期间 RestrictInfo 结构体中关系引用移除不完整的问题

变更

修复连接移除期间 RestrictInfo 结构体中关系引用移除不完整的问题(Tom Lane)§

已经证明这个疏忽会导致规划器失败,例如意外出现 “FULL JOIN is only supported with merge-joinable or hash-joinable join conditions” 错误。它还可能在其他情况下导致未能考虑有效的计划。

关联记录(2)

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

其他改进改进规划器将分区键列匹配到子查询输出的逻辑

变更

改进规划器将分区键列匹配到子查询输出的逻辑(Richard Guo)§

在将操作数与分区键比较之前,去除其中的无操作 PlaceHolderVar。此变更使分区剪枝在某些此前未能识别出无需扫描某个分区的情况下能够成功。

BUG 修复修复自连接移除,使其能够处理裸布尔列形式的连接子句,例如 ON t1.boolcol

变更

修复自连接移除,使其能够处理裸布尔列形式的连接子句,例如 ON t1.boolcol(Andrei Lepikhov, Tender Wang, Alexander Korotkov)§

以前这种情况会导致 “no relation entry for relid N” 错误。

BUG 修复修复 UPDATE/DELETE ... WHERE CURRENT OF,使其可用于带有虚拟生成列的表

变更

修复 UPDATE/DELETE ... WHERE CURRENT OF,使其可用于带有虚拟生成列的表(Satyanarayana Narlapuram, Dean Rasheed)§

BUG 修复修复 INSERT ... ON CONFLICT 中 EXCLUDED 列引用里的虚拟生成列展开问题

变更

修复 INSERT ... ON CONFLICT 中 EXCLUDED 列引用里的虚拟生成列展开问题(Satyanarayana Narlapuram, Dean Rasheed)§

BUG 修复修正规则动作和规则限定条件中对 NEW 生成列的错误处理

变更

修正规则动作和规则限定条件中对 NEW 生成列的错误处理(Richard Guo,Dean Rasheed)§

此前,在 INSERT 情况下,此类列引用会生成 NULL;在 UPDATE 情况下,则等同于 OLD 值。

关联记录(4)

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

BUG 修复修复虚假的 “indexes on virtual generated columns are not supported” 错误

变更

修复虚假的 “indexes on virtual generated columns are not supported” 错误(Robert Haas)§

创建表达式索引时有时会错误地报告此错误。

BUG 修复修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误

变更

修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误(Tom Lane)§

在 COPY FROM WHERE 条件中使用系统列时,有时会错误报告此错误。

关联记录(4)

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

其他改进当 MERGE 在可重复读或可串行化模式下遇到被并发更新的元组时,正确报告串行化失败

变更

当 MERGE 在可重复读或可串行化模式下遇到被并发更新的元组时,正确报告串行化失败(Tender Wang)§

此前,这类场景的行为与较低隔离级别中的行为相同。

关联记录(3)

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

BUG 修复修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS

变更

修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS(Julien Tachoires)§

在这类情况下,扩展统计信息对象可能会被错误复制,或该命令可能给出错误的报错。

关联记录(4)

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

其他改进允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效

变更

允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效(Sami Imseih)§

存在一些边界情况:即使分区索引的所有叶子索引均有效,该分区索引仍可能保持被标记为无效。此变更提供了一种机制,使用户可以在不借助手工更新系统目录的情况下纠正这种情况。

关联记录(4)

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

BUG 修复修复 ALTER TABLE ... SET NOT NULL,使其只在完成目录更改后才调用对象访问钩子函数

变更

修复 ALTER TABLE ... SET NOT NULL,使其只在完成目录更改后才调用对象访问钩子函数(Artur Zakirov)§

BUG 修复修复 ALTER FOREIGN DATA WRAPPER,使其不要删除包装器对象对其处理器函数的依赖

变更

修复 ALTER FOREIGN DATA WRAPPER,使其不要删除包装器对象对其处理器函数的依赖(Jeff Davis)§

关联记录(4)

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

BUG 修复修复外键触发器的可延迟性丢失问题

变更

修复外键触发器的可延迟性丢失问题(Yasuo Honda)§

以前,定义为 DEFERRABLE INITIALLY DEFERRED 的外键,在被设置为 NOT ENFORCED 状态再改回 ENFORCED 后,会表现得像 NOT DEFERRABLE。

如果你有受此问题影响的外键,可以在安装本次更新后,再次将其设置为 NOT ENFORCED,然后改回 ENFORCED 来修复。

BUG 修复修复 WITHOUT OVERLAPS 以允许域

变更

修复 WITHOUT OVERLAPS 以允许域(Jian He)§

UNIQUE/PRIMARY KEY ... WITHOUT OVERLAPS 要求无重叠列是范围或多范围,但它也应允许基于这类类型的域。

其他改进不允许复合类型通过多范围成为自身的成员

变更

不允许复合类型通过多范围成为自身的成员(Heikki Linnakangas)§

当中间类型是域、数组、复合类型或范围时,我们已经禁止此类情况;但此前遗漏了多范围。

关联记录(4)

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

BUG 修复修复 Datum 镜像比较,使其不受符号扩展差异影响

变更

修复 Datum 镜像比较,使其不受符号扩展差异影响(David Rowley)§

这修复了一些此前会导致 “could not find memoization table entry” 错误或错误查询结果的情况。

关联记录(4)

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

BUG 修复修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑

变更

修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑(Chengpeng Yan)§

此前的代码可能崩溃或给出错误结果。所有内置数据类型都有严格的等值操作符,因此此问题只可能出现在扩展数据类型上。

关联记录(4)

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

其他改进在 to_char() 中截断过长的区域设置相关数字符号

变更

在 to_char() 中截断过长的区域设置相关数字符号(Tom Lane)§

如果某个区域设置指定了长度超过 8 字节的货币符号、千位分隔符、小数符号或正负号符号,就可能出现缓冲区越界写。现实世界中不存在这样的区域设置,而且非特权攻击者也不太可能在 Postgres 服务器下安装恶意区域设置定义;但为安全起见,检查过长符号并在需要时截断。

关联记录(4)

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

其他改进防止解析 Ispell 字典的词缀文件时发生缓冲区越界写

变更

防止解析 Ispell 字典的词缀文件时发生缓冲区越界写(Tom Lane)§ §

损坏或恶意的词缀文件可能使服务器崩溃。这不被视为安全问题,因为文本检索配置文件被假定为可信,但仍然值得修复。

关联记录(4)

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

其他改进防范窗口聚合的帧起始和结束位置计算中的整数溢出

变更

防范窗口聚合的帧起始和结束位置计算中的整数溢出(Richard Guo)§

用户指定的极大偏移量(接近 INT64_MAX)可能导致错误或错误的查询结果。

关联记录(4)

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

BUG 修复修复 array_agg_array_combine(),使其正确组合数组的空值位图

变更

修复 array_agg_array_combine(),使其正确组合数组的空值位图(Dmytro Astapov)§

此错误导致并行化的 array_agg(anyarray) 计算有时产生不正确输出。

关联记录(2)

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

其他改进如果 sync_file_range() 返回错误码 EINTR,则进行重试

变更

如果 sync_file_range() 返回错误码 EINTR,则进行重试(DaeMyung Kang)§

关联记录(2)

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

BUG 修复修复 pg_stat_reset_single_table_counters() 在共享系统目录上的错误行为

变更

修复 pg_stat_reset_single_table_counters() 在共享系统目录上的错误行为(Chao Li)§

这类场景会产生重置当前数据库的 stat_reset_timestamp 的副作用,而这不是有意的。

关联记录(3)

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

其他改进当并行应用工作进程空闲时更新活动统计信息

变更

当并行应用工作进程空闲时更新活动统计信息(Zhijie Hou)§

以前,刚完成事务的统计信息可能长时间不被报告,尤其在工作负载较轻时。

关联记录(2)

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

BUG 修复修复集合操作中估算数组长度时出现的 “no relation entry for relid 0” 失败

变更

修复集合操作中估算数组长度时出现的 “no relation entry for relid 0” 失败(Tender Wang)§

关联记录(1)

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

BUG 修复修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题

变更

修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题(Andrew Dunstan)§

此前可能读取输入末尾之后的几个字节,在极其不走运的情况下可能导致崩溃。

关联记录(4)

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

BUG 修复修复增量 JSON 解析器对跨输入缓冲区边界的数字词元的处理

变更

修复增量 JSON 解析器对跨输入缓冲区边界的数字词元的处理(Andrew Dunstan)§

过去可能接受格式不正确的数字,导致后续失败。

关联记录(1)

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

其他改进防止恢复增量备份时关系可见性映射膨胀

变更

防止恢复增量备份时关系可见性映射膨胀(Robert Haas)§

由于错误计算预期文件长度,恢复可能向可见性映射追加许多零块。这不会导致数据损坏,但可能浪费大量磁盘空间。

关联记录(1)

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

其他改进在文本列上的系统目录缓存查找中使用 C 排序规则,而不是数据库的默认排序规则

变更

在文本列上的系统目录缓存查找中使用 C 排序规则,而不是数据库的默认排序规则(Jeff Davis)§

这避免了某些边缘场景中的失败,例如物理复制启动时没有已确定的数据库,因而无法确定默认排序规则。

关联记录(1)

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

其他改进防止卡住的 slotsync 工作进程阻塞备库提升

变更

防止卡住的 slotsync 工作进程阻塞备库提升(Nisha Moond、Ajin Cherian)§ § §

一个徒劳等待主库响应的工作进程,会让提升延迟一段不合理的时间。

关联记录(1)

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

BUG 修复修复空闲 slotsync 工作进程产生过多日志输出的问题

变更

修复空闲 slotsync 工作进程产生过多日志输出的问题(Zhijie Hou)§

关联记录(1)

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

其他改进确保即使发生错误后,tuplestore 数据结构在内部也保持一致

变更

确保即使发生错误后,tuplestore 数据结构在内部也保持一致(Tom Lane)§

此前代码对此不够谨慎,这在大多数时候没有问题,但对于支撑 WITH HOLD 游标的 tuplestore 则有问题。在 v15 及更早版本中,这会导致容易重现的崩溃;目前尚不知道较新分支是否易受影响,但最好在所有分支中保持一致性。

关联记录(4)

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

其他改进让 pg_aios 系统视图的 pid 列在条目没有所属进程时显示 NULL 而不是 0

变更

让 pg_aios 系统视图的 pid 列在条目没有所属进程时显示 NULL 而不是 0(ChangAo Chen)§

BUG 修复修复 pg_stat_replication 中过早报告 NULL 延迟的问题

变更

修复 pg_stat_replication 中过早报告 NULL 延迟的问题(Shinya Kato)§

即使复制活动正在发生,延迟列也经常读作 NULL。

关联记录(4)

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

BUG 修复修复并行 B-树索引扫描所用共享内存分配不足的问题

变更

修复并行 B-树索引扫描所用共享内存分配不足的问题(Siddharth Kothari)§

在边界情况下,这可能导致服务器崩溃。

其他改进避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败

变更

避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败(Tomas Vondra)§

不记录 WAL 的 GiST 索引有时仍可能产生 “xlog flush request n/nnnn is not satisfied” 错误,原因是错误地选择了一个“假 LSN” 来表示插入点。

关联记录(4)

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

BUG 修复修复对非常规大小的段所需 DSA 页面映射大小的低估问题

变更

修复对非常规大小的段所需 DSA 页面映射大小的低估问题(Paul Bunn)§

此误算导致越界访问,并进而造成服务器崩溃。

关联记录(4)

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

BUG 修复修复共享内存中 oldest-multixact 数组的索引

变更

修复共享内存中 oldest-multixact 数组的索引(Yura Sokolov)§ §

这一错误可能导致一个已预备但尚未提交的事务所持有的行锁在其他会话看来不可见,或者导致该事务结果出现其他可见性问题。在 max_connections 设置非常小时,也可能发生内存踩踏。

关联记录(1)

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

BUG 修复修复安装过多 EXPLAIN 扩展选项时的数组越界写

变更

修复安装过多 EXPLAIN 扩展选项时的数组越界写(Joel Jacobson)§

BUG 修复修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃

变更

修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃(Michael Paquier)§

如果该数据类型的 typanalyze 函数没有计算任何有用的统计信息,就可能发生 NULL 指针解引用。核心内置的 typanalyze 函数都不会这样表现,但扩展可能会如此。

关联记录(4)

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

其他改进正确显示在 GROUP BY 中使用的连接别名 Vars

变更

正确显示在 GROUP BY 中使用的连接别名 Vars(Tom Lane)§

在包含类似 SELECT ... t1 LEFT JOIN t2 USING (x) GROUP BY x 查询的视图中,GROUP BY 子句可能被逆解析错误显示,从而导致导出/恢复失败。只有当 t1.x 和 t2.x 数据类型并不相同,并且 t1.x 是需要隐式强制转换的一侧时,才会发生该失败。

BUG 修复修复基于 ICU 的字符串处理中轻微的内存泄漏

变更

修复基于 ICU 的字符串处理中轻微的内存泄漏(Jeff Davis)§

关联记录(2)

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

其他改进如果启动进程失败,在 postmaster 退出前正确关闭其他子进程

变更

如果启动进程失败,在 postmaster 退出前正确关闭其他子进程(Ayush Tiwari)§

对此情况的处理依赖于一个早已过时的假定:启动进程运行时不存在其他 postmaster 子进程,因此可以立即退出 postmaster。孤立的子进程最终会注意到 postmaster 已死亡并自行退出,但更干净的关闭过程仍然是可取的。

关联记录(3)

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

BUG 修复修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件

变更

修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件(Heikki Linnakangas)§

跟随来自较旧小版本主库的 WAL 的备库,可能陷入反复崩溃和重启的循环,并抱怨 “could not access status of transaction”。

关联记录(4)

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

其他改进防止 WAL 发送进程关闭时无限期等待

变更

防止 WAL 发送进程关闭时无限期等待(Anthonin Bonnefoy)§ §

在发布逻辑复制数据的集簇关闭时,WAL 发送进程会等待所有待处理 WAL 被写出。但它没有正确请求执行此操作,因此在某些情况下这可能变成无限期等待。

关联记录(4)

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

其他改进确保恢复期间对表空闲空间映射的更改会被持久化

变更

确保恢复期间对表空闲空间映射的更改会被持久化(Alexey Makhmutov)§

此前,在重放应当改变空闲空间映射的操作时,WAL 重放确实会更新该映射;但如果启用了校验和,映射页缓冲区不会被标记为脏,因此这些更改可能永远不会被写出。在备库上,随着时间推移,这会导致映射与表的实际内容严重不符。虽然该映射只作为提示使用,但在备库被提升为活跃服务器后,直到大部分映射被更新修复之前,这种情况可能在一段时间内造成显著性能下降。

关联记录(4)

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

BUG 修复修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃

变更

修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃(Shruthi Gowda)§

关联记录(4)

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

其他改进加固 tar 文件解析逻辑,使其能够防范无法处理的归档

变更

加固 tar 文件解析逻辑,使其能够防范无法处理的归档(Tom Lane)§

pg_basebackup 和 pg_verifybackup 中使用的 tar 文件读取代码,根本没有验证输入是否为 tar 文件,更不用说验证它是否属于我们能够处理的有效 tar 文件子集。对于输入文件由 PostgreSQL 代码生成的常见场景,这不是问题;但如果输入由其他 tar 程序生成,就可能成为问题。

BUG 修复修复备份解压和 tar 解析代码中的多项错误

变更

修复备份解压和 tar 解析代码中的多项错误(Andrew Dunstan, Tom Lane, Chao Li)§ § §

pg_basebackup 和 pg_verifybackup 中使用的解压和 tar 文件读取代码,会错误处理 tar 文件填充数据,在边界情况下可能损坏 LZ4 压缩数据,未检查一些异常错误条件,压缩/解压错误后未退出(导致级联错误报告),并且会泄漏内存。

关联记录(3)

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

其他改进在 pg_dump 中,保留 NOT NULL 约束的 NO INHERIT 属性

变更

在 pg_dump 中,保留 NOT NULL 约束的 NO INHERIT 属性(Jian He)§

有些情况遗漏了打印 NO INHERIT 子句。

其他改进在 pg_dumpall 中,不要跳过具有悬挂授权者 OID 的角色 GRANT

变更

在 pg_dumpall 中,不要跳过具有悬挂授权者 OID 的角色 GRANT(Tom Lane)§

作为替代,像 v16 之前那样,通过发出不带任何 GRANTED BY 子句的 GRANT 来处理此类情况。这可以避免在可预见的情况下丢失授权,因为 v16 之前的服务器不会阻止删除授权者角色。继续针对缺失的授权者发出警告,但仅当源服务器为 v16 或更高版本时才这样做。

关联记录(2)

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

BUG 修复在 pg_upgrade 中,连接到较旧源服务器时注意使用正确的协议版本

变更

在 pg_upgrade 中,连接到较旧源服务器时注意使用正确的协议版本(Jacob Champion)§

在尝试从 2018 年以前的服务器升级时,这可能会造成问题。

关联记录(4)

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

其他改进在 contrib/basic_archive 中,允许启动时归档目录不存在

变更

在 contrib/basic_archive 中,允许启动时归档目录不存在(Nathan Bossart)§

此前,如果 basic_archive.archive_directory 的设置没有指向一个已存在的目录,就会被拒绝。这并不理想,因为即使该目录稍后出现,归档也会无限期卡住。

关联记录(3)

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

BUG 修复修复 contrib/ltree,使其能够处理大小写折叠改变字符串字节长度的情况

变更

修复 contrib/ltree,使其能够处理大小写折叠改变字符串字节长度的情况(Jeff Davis)§ §

此前,指定大小写不敏感匹配的 lquery 模式,可能无法匹配本应匹配的标签。

关联记录(4)

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

BUG 修复修复 contrib/pg_overexplain 的 RANGE_TABLE 选项输出结构错误的问题

变更

修复 contrib/pg_overexplain 的 RANGE_TABLE 选项输出结构错误的问题(Satyanarayana Narlapuram)§

某些字段在 JSON、YAML 和 XML 格式中位置错误,导致输出在结构上无效。

其他改进在 contrib/pg_stat_statements 中,如果解析 pgss_query_texts.stat 文件时发生错误,不要泄漏内存

变更

在 contrib/pg_stat_statements 中,如果解析 pgss_query_texts.stat 文件时发生错误,不要泄漏内存(Heikki Linnakangas)§

关联记录(4)

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

BUG 修复在 contrib/postgres_fdw 中,避免因过早清理失败连接而崩溃

变更

在 contrib/postgres_fdw 中,避免因过早清理失败连接而崩溃(Etsuro Fujita)§

如果远程连接的中止清理失败,我们就不能再使用它。但要将关闭连接对象延迟到事务结束时执行,因为打开的游标等数据结构中可能仍有对它的引用。

关联记录(4)

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

其他改进将时区数据文件更新到 tzdata 2026b 发布版本

变更

将时区数据文件更新到 tzdata 2026b 发布版本(Tom Lane)§

British Columbia(America/Vancouver)将从 2026 年 11 月开始全年采用 UTC-07(实际上就是永久 DST)。本次发布假定其 TZ 缩写从那时起为 MST。这看起来可能会改变,但尚不清楚会使用什么新缩写。另外还有一项针对 Moldova 的历史修正:自 2022 年以来,他们一直遵循 EU 的 DST 转换时间。

关联记录(4)

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

这份对比如何生成?

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

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

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

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

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