pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2023-02-09
15.2 受支持版本维护截止 2027-11-11
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2022-41862 libpq 在 GSSAPI 传输加密初始化失败后可能泄漏内存内容 | 3.7 | 15.2 |
对于运行 15.X 的用户,不需要执行导出/恢复。
但是,如果你从早于 15.1 的版本升级,请参见第 E.19 节。
变更
libpq 在 GSSAPI 传输加密初始化失败后可能泄漏内存内容(Jacob Champion)§
一个被修改的服务器,或未经身份验证的中间人,可以在建立 GSSAPI(Kerberos)传输加密期间发送一个非零终止的错误消息。 libpq 随后会复制该字符串以及应用程序内存中直到下一个零字节的后续字节到其错误报告中。根据调用应用程序对错误报告的处理方式,这可能导致应用程序内存内容的泄露。由于读取超出内存末尾,还有很小的概率导致崩溃。修复方法是正确地对服务器消息进行零终止处理。(CVE-2022-41862)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在对分区表或继承树执行 UPDATE 时,计算子表中哪些 GENERATED 列需要更新的问题(Amit Langote,Tom Lane)§ §
此修复解决了以下问题:未能更新父表中不存在的 GENERATED 列,或者其依赖关系与父列的生成表达式不同的列。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 MERGE 可能无法计算 GENERATED 列的问题(Dean Rasheed)§
当 MERGE 的第一个行级操作是 UPDATE 时,任何后续的 INSERT 操作将无法计算被认为对 UPDATE 操作不需要计算的 GENERATED 列(因为不依赖于任何 UPDATE 目标列)。
变更
修复 MERGE 对不可达 WHEN 子句的检查(Dean Rasheed)§
在无条件 WHEN 子句之后的 WHEN 子句应该被拒绝为不可达,但这种情况并非总是被检测到。
变更
修复 MERGE 的规则检测测试(Dean Rasheed)§
MERGE 不支持带规则的表;但它在曾经有规则但现在已没有规则的表上也会失败。
变更
在 MERGE 中,不将 DO NOTHING 操作计为已处理的元组(Álvaro Herrera)§
这使代码行为与文档一致。
变更
允许 WITH RECURSIVE ... CYCLE CTE 访问其输出列(Tom Lane)§
从 CTE 内部引用 SET 列会导致 “cache lookup failed for type 0” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许在尚未(完全)有效的索引上设置 REPLICA IDENTITY(Tom Lane)§
当 pg_dump 导出一个标记了 REPLICA IDENTITY 的分区索引时,它生成的命令序列会在分区索引被标记为有效之前应用 REPLICA IDENTITY,导致恢复失败。似乎没有很好的理由禁止按此顺序操作,因此允许这样做。在索引变为有效之前,该标记不会产生任何效果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在规则中从多行 VALUES 列表执行 INSERT 时对 DEFAULT 标记的处理(Dean Rasheed)§
在某些情况下,DEFAULT 标记不会被替换为正确的默认值表达式,导致 “unrecognized node type” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝在 jsonpath 存在性检查中使用未定义的变量(Alexander Korotkov,David G. Johnston)§
虽然 jsonpath 匹配操作符对路径模式中的未定义变量会抛出错误,但存在性操作符却默默地将其视为匹配。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 jsonb 下标操作,使其能够处理经过 TOAST 处理的下标值(Tom Lane,David G. Johnston)§
使用直接从表中获取的文本值作为 jsonb 下标时很可能会失败。获取操作通常找不到任何匹配的元素。赋值操作可能会使用垃圾键存储值,不过在实际使用中,足够长以导致该问题的键可能很少见。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复并行哈希连接中的边界情况数据损坏问题(Dmitry Astapov)§
如果正在写入临时文件的大元组的最后一个块恰好是 32760 字节,由于栅栏柱错误会导致数据损坏。查询通常会在稍后以数据损坏的症状而失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
遵循 checkpoint_completion_target 的非默认设置(Bharath Rupireddy)§
在 checkpoint_completion_target 更改后,内部状态未被更新,可能导致检查点 I/O 执行得比预期更快或更慢,特别是在动态更改该设置时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 recovery_target_xid 模式下记录正确的结束时间戳(Tom Lane)§
当基于 recovery_target_xid 设置且 recovery_target_inclusive = off 结束恢复时,我们在 “recovery stopping before ... transaction” 日志消息中打印了一个不正确的时间戳(始终为 2000-01-01)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进某些缓冲文件读取失败的错误报告(Peter Eisentraut)§
正确报告短读取,给出期望的字节数和实际读取的字节数,而不是报告一个不相关的错误代码。大多数地方已经正确处理了此问题,但一些最近编写的复制逻辑没有。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除 int2vector 和 oidvector 中元素数量的任意限制(Tom Lane)§
这些类型的输入函数以前拒绝超过 100 个元素。随着逻辑复制列列表功能的引入,需要接受最多 1600 列的 int2vector,否则长列列表会导致逻辑复制失败。
变更
在扩展查询协议中,如果我们正在运行管道,避免在 ANALYZE 之后立即提交(Tom Lane)§
如果没有显式的 BEGIN TRANSACTION,ANALYZE 会自行提交,但这在管道化的命令序列中不应该发生。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝长度错误的取消请求包(Andrey Borodin)§
即使取消请求的长度字段过小,服务器也会处理该请求。这导致读取超出已分配缓冲区的末尾。理论上这可能导致段错误,但在实际中不太可能发生,因为缓冲区需要非常接近内存末尾才会出现。更可能的结果是关于错误后端 PID 或取消码的虚假日志消息。改为对错误的长度发出报告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复规划器对窗口函数运行条件表达式的预处理疏忽(Richard Guo,David Rowley)§
这可能导致规划器错误,例如 “WindowFunc not found in subplan target lists”。
变更
修复在执行窗口函数运行条件表达式期间可能的悬挂指针访问(David Rowley)§
实际上,由于运行条件优化仅应用于某些恰好都返回 int8 的窗口函数,这仅在 32 位构建上表现为问题。
变更
在子查询提升中增加递归和循环防护(Tom Lane)§
一个精心构造的查询可能导致深度递归和过多的时间用于尝试展平子查询。一个正确的修复对于后移来说过于侵入性,但至少我们可以增加堆栈深度检查和中断检查以允许取消查询。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复按分区连接代码以容忍无法为每个分区生成计划的情况(Tom Lane)§
这可能导致 “could not devise a query plan for the given query” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
限制 get_actual_variable_range 执行的清理工作量(Simon Riggs)§
在删除大量出现在索引末尾的元组之后立即进行的规划器运行,可能会花费大量工作来设置那些索引条目的 “killed” 位。通过在检查 100 个堆页面后放弃此过程来限制任何一次查询中的工作量。所有清理工作最终仍会完成,但不会出现如此大的性能波动。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止当关系的 relkind 发生变化时统计机制混淆(Andres Freund)§
将表转换为视图可能导致崩溃或断言失败。
变更
修复 AT TIME ZONE 构造的括号不足的显示问题(Tom Lane)§
如果 AT TIME ZONE 的参数本身是一个表达式,这可能导致规则或视图的导出/恢复失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 SQL 函数中工具语句的缓存解析树被覆盖(Tom Lane,Daniel Gustafsson)§
如果一个 SQL 语言函数在单个调用查询中多次执行同一个工具命令,可能会崩溃或报告诸如 “unrecognized node type” 之类的奇怪错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保在执行短语匹配时可以取消全文检索查询的执行(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在使用非确定性排序规则对字符串进行 hash 运算时的内存泄漏(Jeff Davis)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 DROP DATABASE 与逻辑复制工作进程之间的死锁问题(Hou Zhijie)§
此问题是由在工作进程中创建逻辑复制槽时不当选择阻塞中断引起的。在版本 15 中,这可能导致未被检测到的死锁。在版本 14 中,虽然未观察到死锁,但在等待网络 I/O 时阻塞中断仍然是不好的做法。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在复制连接尝试失败后清理 libpq 连接对象(Andres Freund)§
之前的代码泄漏了连接对象。在后台代码路径中这基本无害,因为调用进程会放弃并退出。但在诸如 CREATE SUBSCRIPTION 等命令中,此类失败会导致少量会话生命周期的内存泄漏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在热备服务器中,减少跟踪主库上已知活跃 XID 的处理开销(Simon Riggs,Michail Nikolaev)§
对 KnownAssignedXids 数组清理不够积极可能导致性能下降,特别是在备库上 max_connections 设置较大时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在确定最旧的目录 xmin 时忽略已失效的逻辑复制槽(Sirisha Chamarthi)§
复制槽即使在因超过 max_slot_wal_keep_size 而变为失效之后,仍可能阻止系统目录中死元组的清理。因此,复制消费者的故障可能导致无限增长的目录膨胀。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在逻辑解码中,当检测到事务已崩溃时通知远程节点(Hou Zhijie)§
在服务器重启后,我们将重新流式传输重启前不久发生的事务的变更。其中一些事务可能从未完成;当我们发现某个事务未完成时,我们在本地丢弃了相关的解码状态,但忽略了通知订阅者。这导致订阅者保留无用的流式文件,直到下次重启。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑解码中使用未初始化内存的问题(Masahiko Sawada)§
在某些情况下,恢复逻辑解码可能会尝试重新使用已释放的 XID 数据,导致不可预测的行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在逻辑解码上下文创建期间更新共享状态时获取自旋锁(Masahiko Sawada)§
我们在更新两阶段事务的数据时忽略了获取适当的锁,这可能允许其他进程看到不一致的数据。
变更
修复 pgoutput 复制插件,使其不发送未列在表的复制列列表中的列(Hou Zhijie)§
UPDATE 和 DELETE 事件没有注意配置的列列表,因此发送了比预期更多的数据。当接收者是我们内置的逻辑复制代码时这不会造成问题,但它可能会使其他接收者混淆,并且在任何情况下都浪费了网络带宽。
变更
避免在 WAL 重放 hash 索引页面分裂操作期间出现罕见的 “failed to acquire cleanup lock” 恐慌(Robert Haas)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 WAL 重放期间设置堆页面的 all-visible 位时推进页面的 LSN(Jeff Davis)§
未能这样做会导致备库上的页面可能与主库不同,并违反了关于 LSN 何时更改的其他预期。就 PostgreSQL 本身而言,这似乎只是一个理论上的隐患,但可能影响第三方工具。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 int64_div_fast_to_numeric() 以适用于更广范围的输入(Dean Rasheed)§
该函数对其第二个参数的某些值表现异常。核心 PostgreSQL 中没有此类用法,但这对外部模块来说显然是一个隐患,因此予以修复。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 WaitEventSet 逻辑中的潜在缓冲区溢出问题(Thomas Munro)§
基于 epoll 和 kqueue 的实现,在其内部缓冲区大小与调用者输出缓冲区大小不同时,可能向内核请求过多的事件。该情况在已发布的 PostgreSQL 版本中尚未出现,但此错误对外部模块和未来的错误修复构成隐患。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 32 位构建中访问共享内存时出现名义上的未定义行为(Andres Freund)§
clang 的未定义行为检测器对使用对齐不足的指针发出了警告。这在非调试构建中不太可能造成问题,但为了测试目的值得修复。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 BRIN minmax-multi 操作符类中的断言失败(Tomas Vondra)§
该断言过于严格,因此此错误在非断言构建中是无害的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除无用的 RESULT-RTE 优化逻辑中的错误断言(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ACL 检查中缓存查找失败消息的复制粘贴错误(Justin Pryzby)§
原则上这些错误应该永远不会触发。但如果触发了,其中一些会报告错误类型的对象。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_basebackup 中非常大的表空间映射文件可能损坏的问题(Antonin Houska)§
变更
避免 pg_dump 在 --if-exists 模式下的无害警告(Tom Lane)§
如果 public 模式有一个非默认的所有者,则使用 pg_dump 的 --if-exists 选项会产生警告消息 “warning: could not find where to insert IF EXISTS in statement "-- *not* dropping schema, since initdb creates it"”。不过导出输出是正确的。
变更
修复 psql 的 \sf 和 \ef 命令以处理具有 SQL 标准函数体的 SQL 语言函数(Tom Lane)§
当函数体使用新式语法时,这些命令错误识别了函数体的起始位置。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA 的 Tab 补全(Dean Rasheed)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新 contrib/pageinspect 以将其磁盘访问函数标记为 PARALLEL RESTRICTED(Tom Lane)§
这避免了在使用这些函数之一检查临时表时可能出现的失败,因为会话的临时表无法从并行工作进程访问。
变更
修复 contrib/seg 在输入数字超过 127 位时不再崩溃或输出垃圾数据(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在 Microsoft Visual Studio 2013 上的构建问题(Tom Lane)§
之前的补丁假设所有相关平台都有 snprintf(),但 MSVC 2013 尚未完全支持。在该平台上恢复使用 sprintf()。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在使用 Strawberry Perl 时用 MSVC 构建 PL/Perl 的编译失败问题(Andrew Dunstan)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复用 MSVC 构建的 PL/Perl 与用 gcc 构建的 Perl 库之间的不匹配问题(Andrew Dunstan)§
此类组合之前可能导致 “loadable library and perl binaries are mismatched” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
抑制来自 Perl 头文件的编译器警告(Andres Freund)§
我们首选的编译器选项会对 Perl 头文件最近版本中出现的构造引发警告。在使用 gcc 时,我们可以用 pragma 来抑制这些警告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_waldump 在不丢弃未使用的 static-inline 函数的编译器上的构建问题(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新为 tzdata 2022g 版本,包含格陵兰和墨西哥的夏令时法规变更,以及加拿大北部、哥伦比亚和新加坡的历史修正。(Tom Lane)§
值得注意的是,一个新的时区 America/Ciudad_Juarez 从 America/Ojinaga 中分离出来。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。