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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 15.16 的版本变更

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

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

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

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

本次发布的全部变更

15.16

2026-02-12

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

15.16 受支持版本维护截止 2027-11-11

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

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

8.815.16
CVE-2026-2005

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

8.815.16
CVE-2026-2004

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

8.815.16
CVE-2026-2003

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

4.315.16

PostgreSQL 15.16

升级与兼容性说明

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

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

安全相关防止 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)

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

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

变更

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

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

关联记录(4)

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

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

变更

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

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

关联记录(3)

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

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

变更

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

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

关联记录(4)

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

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

变更

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

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

关联记录(4)

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

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

变更

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

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

关联记录(4)

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

其他改进防止截断未读 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)

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

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

变更

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

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

关联记录(4)

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

BUG 修复修复原地更新系统目录时的问题

变更

修复原地更新系统目录时的问题(Noah Misch)§ § §

对于原地更新,发送非事务性的失效消息,因为此类更新在事务回滚后仍会保留。同时,确保该更新在其他会话可见之前已经写入 WAL。这些修复主要防止关系的 frozen-XID 属性出现不一致,从而避免 CLOG 被过早截断并随后出现 “could not access status of transaction” 错误。

关联记录(3)

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

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

变更

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

关联记录(4)

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

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

变更

防止崩溃后多事务日志被错误截断(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)

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

其他改进如果 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)

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

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

变更

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

关联记录(4)

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

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)

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

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

变更

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

关联记录(4)

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

其他改进使 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/intarray 中 @@ 选择率估算器的边界情况整数溢出问题

变更

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

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

关联记录(4)

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

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

变更

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

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

关联记录(4)

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

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

变更

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

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

关联记录(4)

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

这份对比如何生成?

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

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

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

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

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