pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2024-08-08
14.13 受支持版本维护截止 2026-11-12
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2024-7348 防止在 pg_dump 期间执行未经授权的代码 | 8.8 | 14.13 |
| CVE-2023-5869 检测计算新数组维度时的另一个整数溢出情况 | 8.8 | 14.10 |
对于运行 14.X 的用户,不需要执行导出/恢复。
但是,如果是从早于 14.12 的版本升级,请参见第 E.13 节。
变更
防止在 pg_dump 期间执行未经授权的代码(Masahiko Sawada)§
能够创建和删除非临时对象的攻击者可以注入 SQL 代码,该代码将由并发的 pg_dump 会话以运行 pg_dump 的角色权限(通常是超级用户)来执行。该攻击涉及将序列或类似对象替换为会执行恶意代码的视图或外部表。为防止此问题,引入了新的服务器参数 restrict_nonsystem_relation_kind,可以禁止展开非内置视图以及访问外部表,并教会 pg_dump 在可用时设置该参数。请注意,只有当 pg_dump 和它正在导出的服务器都足够新以包含此修复时,才能防止该攻击。
PostgreSQL 项目感谢 Noah Misch 报告此问题。(CVE-2024-7348)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 VACUUM 中的无限循环(Melanie Plageman)§
在一个具有旧运行事务的断开连接的备库重新连接到主库之后,主库上的 VACUUM 可能会对哪些元组可以移除产生混淆,从而导致无限循环。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在将表作为分区附加后的失败,如果该表之前有继承子表(Álvaro Herrera)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复涉及不一致的基于索引的约束时 ALTER TABLE DETACH PARTITION 的问题(Álvaro Herrera,Tender Wang)§ §
当分区表有一个不与约束关联的索引,但某个分区有一个等效的索引且该索引与约束关联时,分离该分区会出现异常行为,导致前分区的约束具有不正确的 coninhcount 值。这会在后续对该约束进行任何操作时引发问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER TABLE DETACH PARTITION CONCURRENTLY 期间的分区剪枝设置(Álvaro Herrera)§ §
执行器假定在对分区表的查询规划和执行之间不会有分区被分离。自从引入 DETACH PARTITION 的 CONCURRENTLY 选项后,这一假设不再成立,使得在使用该选项时查询执行可能会出现短暂的失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在最后一个子分区被删除后,正确地将分区表的 pg_class.reltuples 字段更新为零(Noah Misch)§
对这样的分区表进行第一次 ANALYZE 时必须同时更新 relhassubclass,而这导致 reltuples 的更新丢失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
SQL CALL 语句未能为此类参数解析正确的数据类型,导致诸如 “cannot display a value of type anyelement” 之类的错误,甚至直接崩溃。(但 PL/pgSQL 中的 CALL 可以正确工作。)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复从 CALL 语句的参数列表中调用稳定函数时的行为(Tom Lane)§
如果 CALL 位于原子上下文中(例如存在外部事务块),此类函数会被传递错误的快照,导致它们看到自外部事务开始以来已修改的行的过期值。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
检测 money 计算中的整数溢出(Joseph Koshakow)§
之前 money 类型的所有算术函数都没有检查溢出,因此在溢出的情况下会静默地给出错误的结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 round(numeric) 和 trunc(numeric) 中对小数位参数过于激进的截断(Dean Rasheed)§
这些函数将小数位参数截断到 +/-2000,但有些有效的使用场景需要更大的值;在这些情况下函数返回了不正确的结果。改为截断到 numeric 类型实际允许的范围。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 pg_sequence_last_value() 在备库上的不记录 WAL 的序列以及其他会话的临时序列上失败(Nathan Bossart)§
在这些情况下使其返回 NULL 而不是抛出错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 websearch_to_tsquery() 中被忽略的操作符的解析(Tom Lane)§
根据手册,websearch_to_tsquery() 的输入中的标点符号除了破折号和引号的特殊情况外都会被忽略。然而,紧接在 or 之前出现的括号和其他一些字符可能导致 or 被视为数据词,而非预期的 OR 操作符。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
检测计算新数组维度时的另一个整数溢出情况(Joseph Koshakow)§
拒绝将数组维度 [-2147483648:2147483647] 应用于空数组。这与 CVE-2023-5869 密切相关,但看起来是无害的,因为数组最终仍然为空。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
检测在对目录缓存条目的字段进行解压缩时该条目变为过期的另一种情况(Noah Misch)§
在展开目录元组的行外字段时发生的原地更新可能会被遗漏,导致目录缓存条目缺少原地更改但不被认为是过时的。这仅在 pg_database 目录中可能发生,因此影响范围较窄,但可能会导致异常行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确检查由 INSERT ... DEFAULT 目标的视图列的可更新性(Tom Lane)§
如果这样的列不可更新,我们应该报告相应的错误。但该检查被遗漏了,随后的代码会报告一个不太有用的错误,如 “attribute number N not found in view targetlist”。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免对不正确的递归查询报告无用的内部错误(Tom Lane)§
重新排列错误检查的顺序,以便在 WITH RECURSIVE 查询在 UNION 的第二个分支中没有自引用,但在其他位置(如 ORDER BY)有自引用时,抛出针对性的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当排队的 AFTER 触发器不再存在时不抛出错误(Tom Lane)§
事务可能会执行一个操作将延迟的 AFTER 触发器排队等待后续执行,然后在触发器执行之前将其删除。之前这会导致诸如 “could not find trigger NNNN” 之类的奇怪错误。如果触发器在应该执行的时间点已不存在,静默地不做任何操作似乎更好。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在删除表时未能移除 pg_init_privs 中列级权限条目的问题(Tom Lane)§
如果扩展对其创建的表授予了某些列级权限,在删除该扩展后相关的目录条目会被保留。这在表的 OID 被另一个关系重新使用之前是无害的,届时它可能会干扰 pg_dump 对该关系的导出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复当目标索引具有表达式或谓词时 ON CONFLICT 仲裁索引的选择(Tom Lane)§
如果使用 ON CONFLICT 的查询通过可更新视图访问目标表,可能会失败并报告 “there is no unique or exclusion constraint matching the ON CONFLICT specification”,即使存在匹配的索引。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝使用 ALTER TABLE 修改另一个会话的临时表(Tom Lane)§
权限检查通常会阻止此类情况发生,但可以通过修改一个其子表是另一个会话的临时表的父表来达到此情况。如果我们发现这样的子表属于另一个会话,则抛出错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 CREATE TABLE LIKE STATISTICS 中对表达式上扩展统计信息的处理(Tom Lane)§
CREATE 命令未能将统计表达式中的列引用调整为新表可能不同的列编号。这会产生无效的统计对象,在后续操作中造成问题。需要重新编号列的典型场景是源表包含一些已删除的列。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复从 MIN() 或 MAX() 聚合生成的子查询未能重新计算的问题(Tom Lane)§
在某些情况下,在外部查询的某一行计算出的聚合结果可能会被后续行错误地重用。目前仅在外部查询使用以 hash 聚合实现的 DISTINCT 时观察到此问题,但可能存在其他情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 JIT 内联的后端函数抛出错误时崩溃(Tom Lane)§
错误状态可以包含指向持有 JIT 编译代码的动态加载模块的指针(用于错误位置字符串)。在某些代码路径中,模块可能在错误报告被处理之前被卸载,导致访问位置字符串时出现 SIGSEGV。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
应对 libxml2 版本 2.13.x 中的行为变更(Erik Wienhold,Tom Lane)§
值得注意的是,我们现在会抑制来自 libxml2 的 “chunk is not well balanced” 错误,除非这是唯一报告的错误。这是为了使 2.13.x 和更早版本的 libxml2 之间的错误报告保持一致。在更早的版本中,该消息几乎总是冗余的或完全不正确的,因此 2.13.x 大幅减少了报告该消息的情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复启动热备服务器时预备事务的子事务处理(Heikki Linnakangas)§
当备库在关机检查点 WAL 记录处开始回放时,在主库上已预备但尚未提交的事务会被正确地理解为仍在进行中。但预备事务的子事务(由保存点或 PL/pgSQL 异常块创建)未被考虑,会被当作已中止的事务处理。如果预备事务随后被提交,就会导致不一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止逻辑复制槽的不正确初始化(Masahiko Sawada)§
在某些情况下,复制槽在 WAL 流中的起始点可能被设置为事务内部的某个位置,导致断言失败或不正确的解码结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在处理通知或共享失效中断后的内存泄漏(Tom Lane)§
这些事件的处理函数可能将当前内存上下文切换到 TopMemoryContext,导致在错误设置被替换之前分配的任何数据出现会话级别的泄漏。至少在传入查询的编码转换和附加到 Bind 消息的参数方面存在可观察到的泄漏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止在截断多事务 SLRU 日志时出现死锁和断言失败(Heikki Linnakangas)§
尝试删除 SLRU 段的进程可能与检查点进程发生死锁。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 Windows 套接字上可能遗漏输入结束事件(Thomas Munro)§
Windows 在连接的远程端断开连接后只报告一次 FD_CLOSE 事件。在时机不巧的情况下,我们可能会遗漏该报告并无限期等待,或者至少等到超时为止,以期望获得更多输入。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 JSON 解析错误报告中针对不完整字节序列的缓冲区越界读取(Jacob Champion)§
当最后的字节构成不完整的多字节字符时,可能会在输入缓冲区末尾越界读取几个字节。虽然通常无害,但原则上这可能导致崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在重新规划 PL/pgSQL “简单表达式”时,检查其是否仍然是简单的(Tom Lane)§
某些相当人工的情况,如删除一个被引用的函数并将其重新创建为聚合函数,可能导致诸如 “unexpected plan node type” 之类的意外失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Perl 与 Perl 5.40 之间的不兼容问题(Andrew Dunstan)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复返回 RECORD 类型的递归 PL/Python 函数(Tom Lane)§
如果递归到同一函数的新调用并传递了不同的列定义列表(AS 子句),将会失败,因为内部调用会覆盖外部调用所期望的返回行类型。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止在递归触发器调用期间损坏 PL/Python 的 TD 字典(Tom Lane)§
如果一个 PL/Python 语言的触发器导致另一个触发器被调用,为内部触发器创建的 TD 字典会覆盖外部触发器的 TD 字典。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Tcl 在返回元组的函数结果中存在无效列表语法时的报告(Erik Wienhold,Tom Lane)§
这种情况可能导致崩溃,或发出实际上引用的是之前 Tcl 错误的误导性上下文信息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 libpq 中使用非线程安全的 strerror()(Peter Eisentraut)§
在多线程应用程序中,OpenSSL 返回的某些错误消息可能会出现乱码。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 pg_restore -l 正确报告依赖的 TOC 条目(Tom Lane)§
如果 -l 与选择性恢复选项(如 -n 或 -N)一起指定,依赖的 TOC 条目(如注释)会从列表中被省略,即使实际恢复会选择它们。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/postgres_fdw 中,不向远程服务器发送 FETCH FIRST WITH TIES 子句(Japin Li)§
远程服务器可能不支持此子句,或可能对其解释与本地不同,因此不要冒险尝试远程执行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免与系统提供的 <regex.h> 头文件冲突(Thomas Munro)§
这修复了 macOS 版本 15 及更高版本上的编译失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Memoize 代价估算中无害的断言失败(David Rowley)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对 SP-GiST 索引执行 REINDEX CONCURRENTLY 时的无害断言失败(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。