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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 18.2 的版本变更

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

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

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

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

本次发布的全部变更

18.2

2026-02-12

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

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

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

修复多字节字符长度验证不充分的问题

8.818.2
CVE-2026-2005

修复 contrib/pgcrypto PGP 解密函数中的缓冲区溢出问题

8.818.2
CVE-2026-2004

增强选择率估算器在被附加到接受非预期数据类型的操作符时的防护

8.818.2
CVE-2026-2007

加固 contrib/pg_trgm,以应对字符串转小写行为的变化

8.218.2
CVE-2026-2003

防止 oidvector/int2vector 出现意外的维度

4.318.2

PostgreSQL 18.2

升级与兼容性说明

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

但是,如果你在 ltree 列上建有索引,则更新后可能需要对其重新索引。请参见下方第六条变更记录。

安全相关防止 oidvector/int2vector 出现意外的维度

变更

防止 oidvector/int2vector 出现意外的维度(Tom Lane)§

这些数据类型预期为不含空值的一维数组,但某些类型转换路径允许违背这些预期。现已为一些原本依赖这些预期却未加验证的函数补充检查,因为它们可能因此产生错误行为。

PostgreSQL 项目感谢 Altan Birler 报告此问题。(CVE-2026-2003)

关联记录(4)

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

安全相关增强选择率估算器在被附加到接受非预期数据类型的操作符时的防护

变更

增强选择率估算器在被附加到接受非预期数据类型的操作符时的防护(Tom Lane)§ §

contrib/intarray 包含一个选择率估算函数;由于它未检查输入是否为预期的数据类型,该函数可被滥用来执行任意代码。第三方扩展也应检查是否存在类似风险,并采用 intarray 现在使用的技术来增加防护。由于此类扩展的修复需要时间,我们现在要求具有超级用户权限,才能将非内置的选择率估算器附加到操作符上。

PostgreSQL 项目感谢 Daniel Firer(zeroday.cloud 成员)报告此问题。(CVE-2026-2004)

关联记录(4)

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

安全相关修复 contrib/pgcrypto PGP 解密函数中的缓冲区溢出问题

变更

修复 contrib/pgcrypto PGP 解密函数中的缓冲区溢出问题(Michael Paquier)§

解密带有超长会话密钥的精心构造消息会导致缓冲区溢出,严重时甚至可能执行任意代码。

PostgreSQL 项目感谢 Team Xint Code(zeroday.cloud 成员)报告此问题。(CVE-2026-2005)

关联记录(4)

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

安全相关修复多字节字符长度验证不充分的问题

变更

修复多字节字符长度验证不充分的问题(Thomas Munro,Noah Misch)§ § § § § §

多处漏洞使攻击者只要能够发出精心构造的 SQL,就可能溢出字符串缓冲区,严重时甚至可以执行任意代码。应用这些修复后,当字符串函数处理数据库中存储的无效文本时,应用程序可能会看到 “invalid byte sequence for encoding” 错误。

PostgreSQL 项目感谢 Paul Gerste 和 Moritz Sanft(zeroday.cloud 成员)报告此问题。(CVE-2026-2006)

关联记录(4)

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

安全相关加固 contrib/pg_trgm,以应对字符串转小写行为的变化

变更

加固 contrib/pg_trgm,以应对字符串转小写行为的变化(Heikki Linnakangas)§ §

修复潜在的缓冲区越界问题,因为在某些区域设置中,将字符串转换为小写后产生的字符数可能多于原始字符串中的字符数(而非字节数)。这种行为是版本 18 中新增的,因此该缺陷也是新引入的。

PostgreSQL 项目感谢 Heikki Linnakangas 报告此问题。(CVE-2026-2007)

BUG 修复修复 contrib/ltree 中不一致的大小写不敏感匹配问题

变更

修复 contrib/ltree 中不一致的大小写不敏感匹配问题(Jeff Davis)§ §

ltree 中与索引相关的例程所使用的大小写折叠实现与主操作符不同。只有在默认排序规则提供者为 libc 且编码为单字节时,两者行为才一致。

为修复该问题,代码已改为使用数据库默认排序规则的大小写折叠行为。除非数据库使用 libc 作为排序规则提供者且其编码为单字节,否则此更改要求对 ltree 列上的索引重新建立索引(无论索引访问方法为何)。否则,使用这些索引的搜索将无法找到相关条目。

其他改进使用 ALTER TABLE ... ADD CONSTRAINT 为列添加显式命名的非空约束时,如果该列已经标记为 NOT NULL,则要求所提供的名称与现有约束名称一致(Álvaro Herrera、Srinath Reddy Sadipiralla)。

变更

使用 ALTER TABLE ... ADD CONSTRAINT 为列添加显式命名的非空约束时,如果该列已经标记为 NOT NULL,则要求所提供的名称与现有约束名称一致(Álvaro Herrera、Srinath Reddy Sadipiralla)。§

其他改进不允许由子查询中的 CTE 引用决定聚合函数的语义层级

变更

不允许由子查询中的 CTE 引用决定聚合函数的语义层级(Tom Lane)§

此变更撤销了两个小版本之前引入的一项更改;现在,如果某个子查询引用的 CTE 所处层级低于按标准 SQL 规则依据其中的列引用和聚合所判定的聚合语义层级,将抛出错误。先前的修复方案本身也带来了问题,而且目前尚不清楚应如何处理。由于 SQL 标准本就完全不允许在聚合中包含子查询,将此类情况视为错误似乎已经足够。

关联记录(4)

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

BUG 修复修复 CTE 查询中 MERGE 的触发器过渡表捕获问题

变更

修复 CTE 查询中 MERGE 的触发器过渡表捕获问题(Dean Rasheed)§

当执行包含 MERGE 和另一个对具有语句级 AFTER 触发器的表的 DML 操作的数据修改 CTE 查询时,传递给触发器的过渡表将不包含 MERGE 影响的行,而只包含其他操作影响的行。

关联记录(3)

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

BUG 修复修复对非关系范围表条目(例如子查询)所对应行标记的错误剪枝

变更

修复对非关系范围表条目(例如子查询)所对应行标记的错误剪枝(Dean Rasheed)§

如果拟执行的行更新需要由 EvalPlanQual 复查修改,例如该行被并发更新时,此问题会导致不正确的结果。

BUG 修复修复当分区目标表的所有子表在 UPDATE 或 DELETE 操作中都被剪枝时的失败问题

变更

修复当分区目标表的所有子表在 UPDATE 或 DELETE 操作中都被剪枝时的失败问题(Amit Langote)§

在这种情况下,执行器可能报告 “could not find junk ctid column” 错误,即使实际上无需执行任何操作。

关联记录(4)

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

BUG 修复修复数组下标内子查询的表达式求值错误

变更

修复数组下标内子查询的表达式求值错误(Andres Freund)§

BUG 修复修复非确定性排序规则下的文本子串搜索

变更

修复非确定性排序规则下的文本子串搜索(Laurenz Albe)§

使用非确定性排序规则时,未能检测到恰好位于被搜索字符串末尾的匹配。

其他改进避免当查询包含重复的窗口函数调用时规划器可能出现的失败

变更

避免当查询包含重复的窗口函数调用时规划器可能出现的失败(Meng Zhang,David Rowley)§

对此类调用去重时的混淆可能导致诸如 “WindowFunc with winref 2 assigned to WindowAgg with winref 1” 之类的错误。

关联记录(2)

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

BUG 修复修复涉及返回集合的函数和分组集的规划器错误

变更

修复涉及返回集合的函数和分组集的规划器错误(Richard Guo)§

构造 ProjectSet 计划节点时,规划器未能识别出涉及分组表达式的子表达式已由输入计划计算。这会导致低效计划,或出现 “variable not found in subplan target list” 等错误。

其他改进避免在子查询的分组子句包含易变函数或返回集合的函数时进行不正确的优化

变更

避免在子查询的分组子句包含易变函数或返回集合的函数时进行不正确的优化(Richard Guo)§

规划器会尝试下推引用此类分组列的外层查询限制,这会因为对易变函数进行多次求值而导致错误行为,或者因将返回集合的函数引入子查询的 WHERE/HAVING 子句而报错。

其他改进在搜索表达式的统计信息时穿透 PlaceHolderVar 节点

变更

在搜索表达式的统计信息时穿透 PlaceHolderVar 节点(Richard Guo)§

此更改允许规划器找到从子查询上拉出来的表达式,或用于 GROUP BY 的表达式的相关统计信息,从而避免退回到默认估算值。(严格来说,我们也许应该调整找到的统计信息,以反映该值为 NULL 的概率增加,但对于普通 Var 我们也从未做过同等处理。)这一限制虽由来已久,但 PostgreSQL 18 让 PlaceHolderVar 的出现比以前更常见,因此做出此修改以避免受影响场景中的计划退化。

其他改进在将表达式匹配到索引时穿透无操作的 PlaceHolderVar 节点

变更

在将表达式匹配到索引时穿透无操作的 PlaceHolderVar 节点(Richard Guo)§

由于 PostgreSQL 18 在更多场景下使用 PlaceHolderVar,一些原本可以使用索引的查询反而不能使用索引了。新增相应逻辑以防止这种退化。

BUG 修复修复规划器将 OR 子句转换为 ScalarArrayOp 索引条件时的问题

变更

修复规划器将 OR 子句转换为 ScalarArrayOp 索引条件时的问题(Tender Wang、Tom Lane)§

该代码未能正确处理 RelabelType 节点,可能生成无效表达式,或者无法完成本应有效的转换。

其他改进允许在部分 hash 索引上进行索引扫描,即使索引的谓词蕴含 WHERE 子句的真值

变更

允许在部分 hash 索引上进行索引扫描,即使索引的谓词蕴含 WHERE 子句的真值(Tom Lane)§

通常我们会删除被谓词蕴含的 WHERE 子句,因为测试它没有意义——对于每个索引条目,该条件必然成立。然而,如果索引是需要在前导索引键上有 WHERE 子句的类型(如 hash 索引),这样做可能阻止创建索引扫描计划。在考虑此类索引时,不要删除被蕴含的子句。

关联记录(4)

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

其他改进不要为不记录 WAL 的 BRIN 索引生成 WAL

变更

不要为不记录 WAL 的 BRIN 索引生成 WAL(Kirill Reshke)§

一条很少执行到的代码路径错误地为 BRIN 索引生成了 WAL 记录,即使该索引被标记为不记录 WAL。崩溃恢复时将无法重放该记录,并报告文件已存在的错误。

关联记录(4)

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

BUG 修复在并行 GIN 索引构建中使用正确的排序函数

变更

在并行 GIN 索引构建中使用正确的排序函数(Tomas Vondra)§

并行代码使用了默认排序操作符(由列数据类型的 B-树操作符类决定),而它本应在存在时使用 GIN 操作符类指定的排序函数。如果该数据类型没有 B-树操作符类,就会失败;如果操作符类指定的排序函数与 B-树操作符类不一致,则会生成无效索引。

其他改进防止截断未读 NOTIFY 消息仍然需要的 CLOG

变更

防止截断未读 NOTIFY 消息仍然需要的 CLOG(Joel Jacobson,Heikki Linnakangas)§ § §

此修复防止了当后端进程吸收 NOTIFY 消息较慢时出现的 “could not access status of transaction” 错误。

关联记录(4)

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

其他改进将 NOTIFY 消息处理期间发生的错误升级为 FATAL,即关闭连接

变更

将 NOTIFY 消息处理期间发生的错误升级为 FATAL,即关闭连接(Heikki Linnakangas)§

以前,如果后端在吸收 NOTIFY 消息时遇到错误,它会跳过该消息,向客户端报告错误,然后继续运行。但这种行为存在很多问题。一个主要问题是,客户端没有好的方法来知道通知丢失了,更无法知道通知的内容是什么。根据应用逻辑的不同,错过一条通知可能导致应用程序卡在等待状态。此外,剩余的消息在有人发送新的 NOTIFY 之前不会被处理。

另外,如果连接在接收到 NOTIFY 信号时处于空闲状态,由于无关的原因,任何 ERROR 都会被升级为 FATAL。因此,我们选择在所有情况下都这样做,以保持一致性,并向应用程序提供一个明确的信号,表明它可能错过了一些通知。

关联记录(4)

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

其他改进在计算查询 ID hash 时纳入分组表达式

变更

在计算查询 ID hash 时纳入分组表达式(Jian He)§

以前,两个除了 GROUP BY 表达式不同之外其余都相同的查询,会被 contrib/pg_stat_statements 以及其他使用查询 ID 的模块合并在一起。

BUG 修复修复在发生并发更新时 EXPLAIN ANALYZE MERGE 对更新计数错误的问题

变更

修复在发生并发更新时 EXPLAIN ANALYZE MERGE 对更新计数错误的问题(Dean Rasheed)§

这种情况会导致 EXPLAIN 输出中的 “skipped” 元组计数错误,或者在启用断言的构建中引发断言失败。

关联记录(1)

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

BUG 修复修复在锁定元组时跟踪更新链的错误

变更

修复在锁定元组时跟踪更新链的错误(Jasper Smit)§

此代码路径忽略了检查更新链中第一个新元组的 xmin,使得在原始更新者中止且空间被 VACUUM 立即回收并重新使用的情况下,可能会锁定一个不相关的元组。这可能导致意外的事务延迟或死锁。与识别到错误元组相关的错误也已被观察到。

关联记录(4)

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

BUG 修复修复对大表增量备份处理不正确的问题

变更

修复对大表增量备份处理不正确的问题(Robert Haas、Oleg Tkachenko)§

如果一个超过 1GB 的表(更一般地说,超过安装的段大小的表)在基础备份和增量备份之间被 VACUUM 截断,pg_combinebackup 可能会因 “truncation block length in excess of segment size” 错误而失败,从而无法恢复该增量备份。

关联记录(1)

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

BUG 修复修复后端进程在退出时由于尝试在已取消映射的共享内存段中释放锁而可能崩溃的问题

变更

修复后端进程在退出时由于尝试在已取消映射的共享内存段中释放锁而可能崩溃的问题(Rahila Syed)§

关联记录(4)

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

BUG 修复修复异步 I/O 代码中的竞争条件

变更

修复异步 I/O 代码中的竞争条件(Andres Freund)§

异步 I/O 操作的结果码有可能在被读取之前就被覆盖。

其他改进防止崩溃后多事务日志被错误截断

变更

防止崩溃后多事务日志被错误截断(Heikki Linnakangas)§

关联记录(4)

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

BUG 修复修复 pg_stat_get_backend_activity() 可能返回编码错误的结果的问题

变更

修复 pg_stat_get_backend_activity() 可能返回编码错误的结果的问题(Chao Li)§

保存会话活动字符串的共享内存缓冲区末尾可能包含不完整的多字节字符。读取者应该截断掉任何此类不完整字符,但此函数未能做到这一点。

关联记录(4)

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

其他改进防止递归的内存上下文日志记录

变更

防止递归的内存上下文日志记录(Fujii Masao)§

持续不断的请求内存上下文日志记录的信号流可能导致日志记录代码的递归执行,理论上可能导致栈溢出。

关联记录(4)

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

BUG 修复修复重新初始化并行执行上下文时的内存上下文使用问题

变更

修复重新初始化并行执行上下文时的内存上下文使用问题(Jakub Wartak,Jeevan Chalke)§

此错误可能由于附属数据结构的生命周期比并行上下文更短而导致崩溃。目前尚未发现仅使用 PostgreSQL 核心就能触发该问题的情况,但我们收到了扩展中出现问题的报告。

关联记录(4)

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

其他改进在创建新的多事务 ID 时设置下一个多事务 ID 的偏移量,以消除在边界情况下所需的等待循环

变更

在创建新的多事务 ID 时设置下一个多事务 ID 的偏移量,以消除在边界情况下所需的等待循环(Andrey Borodin)§ §

之前的逻辑可能会卡在等待一个永远不会发生的更新上。

关联记录(4)

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

其他改进避免多次重写数据修改 CTE

变更

避免多次重写数据修改 CTE(Bernice Southey,Dean Rasheed)§

以前,在更新自动可更新视图或带规则的关系时,如果原始查询含有数据修改 CTE,重写器会由于递归而多次重写这些 CTE。这不仅低效,而且当 CTE 包含对GENERATED ALWAYS 列的更新时可能产生虚假错误。

关联记录(4)

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

其他改进允许重试 DSM 注册表条目的初始化

变更

允许重试 DSM 注册表条目的初始化(Nathan Bossart)§

如果动态共享内存条目的初始化进行到一半失败,允许下一次尝试使用该条目时重新初始化。此前,该条目会永久处于失败状态。

关联记录(1)

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

其他改进避免在页面被换出时 NUMA 状态视图失败

变更

避免在页面被换出时 NUMA 状态视图失败(Tomas Vondra)§

其他改进避免在使用较旧 libnuma 版本查询 NUMA 页面状态时出现 “operation not permitted” 错误

变更

避免在使用较旧 libnuma 版本查询 NUMA 页面状态时出现 “operation not permitted” 错误(Tomas Vondra)§

其他改进如果 WAL 未涵盖检查点记录指示的重做点,则使恢复失败

变更

如果 WAL 未涵盖检查点记录指示的重做点,则使恢复失败(Nitin Jadhav)§

在开始恢复之前添加一个显式检查,以确保不会造成损害并提供有用的错误消息。以前,在这种情况下恢复可能会崩溃或损坏数据库。

关联记录(4)

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

其他改进避免在 ALTER PUBLICATION 期间修改源查询树

变更

避免在 ALTER PUBLICATION 期间修改源查询树(Sunil S)§

此错误的可见效果是,为该查询触发的事件触发器只能看到第一个 publish 选项,即使指定了多个选项。如果此类查询被设置为预备语句,重新执行时也会出现错误行为。

关联记录(4)

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

其他改进将 CREATE SUBSCRIPTION ... CONNECTION 中指定的连接选项传递给发布端的 walsender 进程

变更

将 CREATE SUBSCRIPTION ... CONNECTION 中指定的连接选项传递给发布端的 walsender 进程(Fujii Masao)§

在此修复之前,options 连接选项(如果有的话)会被忽略,因此,例如无法在 walsender 会话中设置自定义服务器参数值。该功能本应正常工作;在 PostgreSQL 15 中的重构破坏它之前,它也确实一直是正常工作的,因此这里恢复了先前的行为。

关联记录(3)

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

其他改进防止新创建或新同步的复制槽被无效化

变更

防止新创建或新同步的复制槽被无效化(Zhijie Hou)§ § §

与并发检查点的竞争条件可能导致复制槽所需的 WAL 被删除,使得该槽立即被标记为无效。

关联记录(4)

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

BUG 修复修复计算复制槽所需 xmin 时的竞争条件

变更

修复计算复制槽所需 xmin 时的竞争条件(Zhijie Hou)§

这可能导致错误 “cannot build an initial slot snapshot as oldest safe xid follows snapshot's xmin”。

关联记录(4)

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

其他改进在逻辑复制订阅的初始同步期间,在开始复制数据之前提交 pg_replication_origin 条目的添加

变更

在逻辑复制订阅的初始同步期间,在开始复制数据之前提交 pg_replication_origin 条目的添加(Zhijie Hou)§

以前,如果复制步骤失败,新的 pg_replication_origin 条目会因事务回滚而丢失,从而导致共享内存中的状态不一致。

关联记录(4)

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

其他改进在并行工作进程应用失败后不推进逻辑复制进度

变更

在并行工作进程应用失败后不推进逻辑复制进度(Zhijie Hou)§

之前的行为允许订阅者丢失事务。

关联记录(2)

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

BUG 修复修复逻辑复制 slotsync 工作进程对 LOCK_TIMEOUT 信号的处理

变更

修复逻辑复制 slotsync 工作进程对 LOCK_TIMEOUT 信号的处理(Zhijie Hou)§

以前,这类超时信号实际上会被忽略。

关联记录(1)

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

BUG 修复修复流复制副本服务器重启期间可能出现的 “unexpected data beyond EOF” 失败问题

变更

修复流复制副本服务器重启期间可能出现的 “unexpected data beyond EOF” 失败问题(Anthonin Bonnefoy)§

关联记录(4)

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

BUG 修复修复 SQL/JSON 路径类型不匹配时的错误报告

变更

修复 SQL/JSON 路径类型不匹配时的错误报告(Jian He)§

该代码原本应报告路径表达式类型不正确,却可能产生 “cache lookup failed for type 0” 错误。

关联记录(1)

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

BUG 修复修复解析分区范围边界时对列位置的错误跟踪

变更

修复解析分区范围边界时对列位置的错误跟踪(myzhen)§

这可能导致在关于将分区边界值转换为列的数据类型的错误消息中引用错误的列名。

关联记录(4)

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

BUG 修复修复错误消息中的各种小错误

变更

修复错误消息中的各种小错误(Man Zeng,Tianchen Zhang)§ § § § §

例如,关于备份清单中时间线编号不匹配的错误报告在应该显示结束时间线编号的地方显示了起始时间线编号。

关联记录(4)

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

BUG 修复修复在使用 LLVM 17 或更高版本进行 JIT 编译时无法执行函数内联的问题

变更

修复在使用 LLVM 17 或更高版本进行 JIT 编译时无法执行函数内联的问题(Anthonin Bonnefoy)§

关联记录(4)

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

其他改进调整我们的 JIT 代码以兼容 LLVM 21

变更

调整我们的 JIT 代码以兼容 LLVM 21(Holger Hoffstätte)§

之前的代码在 aarch64 机器上编译失败。

关联记录(4)

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

BUG 修复修复 aarch64 专用代码,使其可与旧版(RHEL7 时代)的系统头文件一起构建

变更

修复 aarch64 专用代码,使其可与旧版(RHEL7 时代)的系统头文件一起构建(Tom Lane)§ §

BUG 修复修复对 io_uring_queue_init_mem() 的错误 configure 检测

变更

修复对 io_uring_queue_init_mem() 的错误 configure 检测(Masahiko Sawada)§

该错误导致在基于 autotools 的构建中无法优化异步 I/O 缓冲区分配,尽管使用 meson 构建时这段代码是可用的。这个遗漏的主要影响是后端进程退出速度比应有的更慢。

其他改进增加新的服务器参数file_extend_method来控制 posix_fallocate() 的使用

变更

增加新的服务器参数file_extend_method来控制 posix_fallocate() 的使用(Thomas Munro)§

PostgreSQL 版本 16 及更高版本会使用 posix_fallocate()(如果平台提供的话)来扩展关系文件。然而,据报告这与某些文件系统交互不良:BTRFS 压缩会因使用 posix_fallocate() 而被禁用,而在较旧的 Linux 内核版本中 XFS 可能会产生虚假的 ENOSPC 错误。为提供一种解决方案,引入了这个新的服务器参数。将 file_extend_method 设置为 write_zeros 将使服务器回退到通过写入全零数据块来扩展文件的旧方法。

关联记录(2)

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

其他改进在 Windows 上遵守 open() 的 O_CLOEXEC 标志

变更

在 Windows 上遵守 open() 的 O_CLOEXEC 标志(Bryan Green,Thomas Munro)§ § §

使此标志像在 POSIX 平台上一样工作,以避免将文件句柄泄漏到子进程(如 COPY TO/FROM PROGRAM)中。虽然该泄漏没有造成太多问题,但它似乎是不可取的。

关联记录(2)

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

BUG 修复修复在使用 meson 构建的 Solaris 可执行文件中无法解析服务器命令行长选项的问题

变更

修复在使用 meson 构建的 Solaris 可执行文件中无法解析服务器命令行长选项的问题(Tom Lane)§

关联记录(2)

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

其他改进支持在 GNU/Hurd 上更改进程标题

变更

支持在 GNU/Hurd 上更改进程标题(Michael Banck)§

关联记录(4)

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

BUG 修复修复 psql 对 VACUUM 选项值的 Tab 补全

变更

修复 psql 对 VACUUM 选项值的 Tab 补全(Yugo Nagata)§

其他改进在 psql 命令提示符中,如果没有服务器连接,则不要显示 %P(管道状态)的值

变更

在 psql 命令提示符中,如果没有服务器连接,则不要显示 %P(管道状态)的值(Chao Li)§

这使 %P 的行为与其他依赖当前活动连接的提示符转义序列保持一致。

BUG 修复修复 pg_dump 收集序列值的逻辑

变更

修复 pg_dump 收集序列值的逻辑(Nathan Bossart)§ §

如果某个序列在转储过程中被并发删除,pg_dump 会失败,即使该序列并不在待转储的数据库对象中。另外,如果调用用户没有权限读取序列值,pg_dump 先前会输出错误的值,而不是像预期那样失败。

BUG 修复修复 pg_dump 对 oauth_validator_libraries 取值的引号处理可能不正确的问题

变更

修复 pg_dump 对 oauth_validator_libraries 取值的引号处理可能不正确的问题(ChangAo Chen)§

如果 pg_dump 需要转储该设置的值,它此前会应用错误的引用规则。

其他改进避免 pg_dump 在 binary-upgrade 模式下触发断言失败

变更

避免 pg_dump 在 binary-upgrade 模式下触发断言失败(Vignesh C)§

对象排序代码未能处理订阅关系对象,从而触发断言,不过在生产构建中并未发现严重的实际影响。

关联记录(1)

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

BUG 修复修复 pipeline 模式下 pgbench 在有多个 \syncpipeline 命令时的错误处理问题

变更

修复 pipeline 模式下 pgbench 在有多个 \syncpipeline 命令时的错误处理问题(Yugo Nagata)§

如果在查询错误之后又遇到多个 \syncpipeline 命令,pgbench 会报告 “failed to exit pipeline mode”,或者在启用断言的构建中触发断言失败。

关联记录(1)

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

其他改进使 pg_resetwal 在更改 OldestXID 时打印更新后的值

变更

使 pg_resetwal 在更改 OldestXID 时打印更新后的值(Heikki Linnakangas)§

它对可以更改的其他每个变量都已经这样做了。

关联记录(4)

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

其他改进使 pg_resetwal 允许将下一个多事务 xid 设置为 0 或将下一个多事务偏移量设置为 UINT32_MAX

变更

使 pg_resetwal 允许将下一个多事务 xid 设置为 0 或将下一个多事务偏移量设置为 UINT32_MAX(Maxim Orlov)§

这些是有效的值,因此拒绝它们是不正确的。在最坏的情况下,如果恰好在多事务回卷点尝试 pg_upgrade,升级将失败。

关联记录(3)

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

BUG 修复在 contrib/amcheck 中,为 B-树索引父节点检查使用正确的快照

变更

在 contrib/amcheck 中,为 B-树索引父节点检查使用正确的快照(Mihail Nikalayeu)§ §

之前的代码在检查使用 CREATE INDEX CONCURRENTLY 创建的索引时会产生虚假错误。

关联记录(4)

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

BUG 修复修复 contrib/amcheck 以正确处理“半死亡” B-树索引页面

变更

修复 contrib/amcheck 以正确处理“半死亡” B-树索引页面(Heikki Linnakangas)§

amcheck 期望此类页面有一个父级下行链接,但实际上没有,导致关于 “mismatch between parent key and child high key” 的虚假错误报告。

关联记录(4)

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

BUG 修复修复 contrib/amcheck 以正确处理不完整的 B-树根页面分裂

变更

修复 contrib/amcheck 以正确处理不完整的 B-树根页面分裂(Heikki Linnakangas)§

amcheck 可能会报告关于 “block is not true root” 的虚假错误。

关联记录(4)

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

BUG 修复修复 contrib/pg_buffercache 中过度分配内存的问题

变更

修复 contrib/pg_buffercache 中过度分配内存的问题(David Geier)§

代码分配的内存是NUMA页面状态需要的两倍。

BUG 修复修复 contrib/intarray 中 @@ 选择率估算器的边界情况整数溢出问题

变更

修复 contrib/intarray 中 @@ 选择率估算器的边界情况整数溢出问题(Chao Li)§

这可能导致在涉及最大整数值的情况下产生不准确的选择率估算。

关联记录(4)

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

BUG 修复修复 contrib/ltree 中的多字节编码问题

变更

修复 contrib/ltree 中的多字节编码问题(Jeff Davis)§

之前的代码可能将不完整的多字节字符传递给 lower(),可能导致不正确的行为。

关联记录(4)

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

BUG 修复避免当 contrib/pg_stat_statements 处理包含常量和非常量表达式的 IN 列表时发生崩溃

变更

避免当 contrib/pg_stat_statements 处理包含常量和非常量表达式的 IN 列表时发生崩溃(Sami Imseih)§

其他改进将时区数据文件更新到 tzdata 2025c 版本

变更

将时区数据文件更新到 tzdata 2025c 版本(Tom Lane)§

唯一的变更是下加利福尼亚 1976 年之前时间戳的历史数据。

关联记录(4)

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

这份对比如何生成?

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

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

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

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

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