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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 14.12 的版本变更

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

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

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

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

本次发布的全部变更

14.12

2024-05-09

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

14.12 受支持版本维护截止 2026-11-12

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

将 pg_stats_ext 和 pg_stats_ext_exprs 条目的可见性限制为表所有者

3.114.12

PostgreSQL 14.12

升级与兼容性说明

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

但是,在系统视图 pg_stats_ext 和 pg_stats_ext_exprs 中发现了一个安全漏洞,可能允许已认证的数据库用户查看他们不应看到的数据。如果你的安装受此影响,请按照下面第一个变更日志条目中的步骤进行修复。

此外,如果是从早于 14.11 的版本升级,请参见第 E.14 节。

安全相关将 pg_stats_ext 和 pg_stats_ext_exprs 条目的可见性限制为表所有者

变更

将 pg_stats_ext 和 pg_stats_ext_exprs 条目的可见性限制为表所有者(Nathan Bossart)§

这些视图未能隐藏涉及访问用户没有权限读取的列的表达式统计信息。视图列如 most_common_vals 可能暴露安全相关的数据。这里的潜在交互尚不完全清楚,因此为了安全起见,使这些视图中的行仅对关联表的所有者可见。

PostgreSQL 项目感谢 Lukas Fittl 报告此问题。(CVE-2024-4317)

仅凭此修复本身只会修复新初始化的数据库集簇中的行为。如需在现有集簇中应用此更改,需要执行以下步骤:

  1. 在 PostgreSQL 安装的 share 目录(通常位于类似 /usr/share/postgresql/ 的位置)中找到 SQL 脚本 fix-CVE-2024-4317.sql。确保使用适合你的 PostgreSQL 主版本的脚本。如果未看到此文件,则说明你的版本不受影响(只有 v14–v16 受影响),或者你的小版本太旧,尚未包含此修复。

  2. 在集簇的每个数据库中,以超级用户身份运行 fix-CVE-2024-4317.sql 脚本。在 psql 中,命令如下:

    \i /usr/share/postgresql/fix-CVE-2024-4317.sql
    

    (根据需要调整文件路径)。任何错误可能表明你使用了错误版本的脚本。多次运行该脚本不会有害。

  3. 不要忘记包含 template0 和 template1 数据库,否则以后创建的数据库仍然存在该漏洞。要修复 template0,你需要临时允许它接受连接。执行:

    ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
    

    然后在修复 template0 后,执行以下命令撤销:

    ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
    
关联记录(2)

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

BUG 修复修复从多个 VALUES 行 INSERT 到目标列为数组或复合类型上的域时的问题

变更

修复从多个 VALUES 行 INSERT 到目标列为数组或复合类型上的域时的问题(Tom Lane)§

这类情况会以数据类型不匹配的意外错误失败,或者插入可能导致奇怪结果的意外强制转换。

关联记录(4)

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

BUG 修复修复当表按布尔列分区且查询含有布尔 IS NOT 子句时,对 NULL 分区的不正确修剪

变更

修复当表按布尔列分区且查询含有布尔 IS NOT 子句时,对 NULL 分区的不正确修剪(David Rowley)§

NULL 值满足诸如 boolcol IS NOT FALSE 之类的子句,因此修剪掉包含 NULL 的分区会产生不正确的结果。

关联记录(4)

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

其他改进使 ALTER FOREIGN TABLE SET SCHEMA 将所拥有的序列移到新模式中

变更

使 ALTER FOREIGN TABLE SET SCHEMA 将所拥有的序列移到新模式中(Tom Lane)§

将常规表移到新模式会导致该表所拥有的序列也被移到该模式中(连同索引和约束)。但对于外部表,这一点被遗漏了。

关联记录(4)

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

其他改进改进当存在依赖的函数或发布时 ALTER TABLE ... ALTER COLUMN TYPE 的错误消息

变更

改进当存在依赖的函数或发布时 ALTER TABLE ... ALTER COLUMN TYPE 的错误消息(Tom Lane)§

关联记录(2)

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

BUG 修复修复 EXPLAIN 对位图堆扫描访问的堆页面的计数

变更

修复 EXPLAIN 对位图堆扫描访问的堆页面的计数(Melanie Plageman)§

之前,不包含可见元组的堆页面不被计数;但计算位图索引扫描返回的所有页面似乎更一致。

关联记录(4)

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

BUG 修复避免在移除孤立临时表时出现死锁

变更

避免在移除孤立临时表时出现死锁(Mikhail Zhilin)§

如果创建临时表的会话在未移除该表的情况下崩溃,autovacuum 最终会尝试移除该孤立的表。然而,被分配了相同临时命名空间的新传入会话也会尝试这样做。如果临时表有依赖项(如拥有的序列),这两个清理尝试之间可能会产生死锁。

关联记录(4)

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

其他改进避免在检查每个关系的冻结 XID 值时出现竞态条件

变更

避免在检查每个关系的冻结 XID 值时出现竞态条件(Noah Misch)§

VACUUM 从每个关系的值计算每个数据库的冻结 XID 值时,可能会被另一个 VACUUM 对这些值的并发更新所混淆。

关联记录(4)

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

其他改进禁止在使用该表的外部 SQL 命令内将表转换为视图

变更

禁止在使用该表的外部 SQL 命令内将表转换为视图(Tom Lane)§

这避免了可能的崩溃。

关联记录(3)

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

BUG 修复确保从等价类生成的连接条件在正确的计划层级应用

变更

确保从等价类生成的连接条件在正确的计划层级应用(Tom Lane)§

在 PostgreSQL 16 之前的版本中,生成的条件可能在外连接下方被评估,而实际上应在外连接上方(之后)评估,导致不正确的查询结果。所有版本在考虑连接到具有部分 SELECT 分支中连接列为常量输出的 UNION ALL 树时都有类似的隐患。

关联记录(4)

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

其他改进避免在非移动窗口帧中不必要地使用移动聚合模式

变更

避免在非移动窗口帧中不必要地使用移动聚合模式(Vallimaharajan G)§

当普通聚合作为窗口函数使用,且窗口帧起始指定为 UNBOUNDED PRECEDING 时,帧的头部无法移动,因此我们不需要使用特殊的(且更昂贵的)移动聚合模式。这个优化一直是预期的,但由于编码错误从未被触发。

关联记录(4)

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

其他改进避免在 GEQO 下规划按分区连接时使用已释放的数据

变更

避免在 GEQO 下规划按分区连接时使用已释放的数据(Tom Lane)§

这通常会以崩溃或意外的错误消息告终。

关联记录(4)

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

其他改进避免在 Memoize 中释放仍在使用的数据

变更

避免在 Memoize 中释放仍在使用的数据(Tender Wang,Andrei Lepikhov)§

在生产构建中,此错误通常不会造成任何问题,因为被释放的数据在被使用之前极有可能不会被覆盖。

关联记录(2)

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

BUG 修复修复 “requested statistics kind X is not yet built” 错误消息中不正确报告的统计类型代码

变更

修复 “requested statistics kind X is not yet built” 错误消息中不正确报告的统计类型代码(David Rowley)§

关联记录(4)

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

其他改进更加小心地处理 FROM 中返回 RECORD 的函数

变更

更加小心地处理 FROM 中返回 RECORD 的函数(Tom Lane)§ §

此类函数调用的输出列必须由指定列名和数据类型的 AS 子句来定义。如果实际的函数输出值不匹配,应在运行时抛出错误。然而,某些代码路径会过早检查实际值,如果不符合预期可能会发出奇怪的错误或触发断言失败。

关联记录(4)

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

BUG 修复修复 SQL 语言过程的返回行类型混淆

变更

修复 SQL 语言过程的返回行类型混淆(Tom Lane)§

以 SQL 语言实现的返回单个复合类型列的过程会导致断言失败或核心转储。

关联记录(4)

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

其他改进为一些递归函数增加保护性栈深度检查

变更

为一些递归函数增加保护性栈深度检查(Egor Chindyaskin)§

关联记录(4)

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

BUG 修复修复 date_bin() 中的舍入错误和溢出隐患

变更

修复 date_bin() 中的舍入错误和溢出隐患(Moaaz Assali)§

在源时间戳在原点时间戳之前且两者差值恰好是步长的整数倍的情况下,代码错误地仍然减去了步长。此外,检测了一些会产生不正确结果的整数溢出情况。

关联记录(2)

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

其他改进检测在 timestamp 上加减 interval 时的整数溢出

变更

检测在 timestamp 上加减 interval 时的整数溢出(Joseph Koshakow)§

某些应该导致超出范围错误的情况反而产生了不正确的结果。

关联记录(4)

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

其他改进避免 pg_get_expr() 中的竞态条件

变更

避免 pg_get_expr() 中的竞态条件(Tom Lane)§

如果参数引用的关系被并发删除,函数的意图是返回 NULL,但有时会失败。

关联记录(4)

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

BUG 修复修复 XID 状态函数中对旧事务 ID 的检测

变更

修复 XID 状态函数中对旧事务 ID 的检测(Karina Litskevich)§

距今超过 231 个事务的事务 ID 可能被误识别为近期的,导致 pg_xact_status() 或 txid_status() 出现异常行为。

关联记录(4)

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

其他改进确保表的空闲空间映射不会返回超出表末尾的页面

变更

确保表的空闲空间映射不会返回超出表末尾的页面(Ronan Dunklau)§

由于空闲空间映射不写入 WAL 日志,在涉及操作系统崩溃、副本提升或 PITR 恢复的边缘情况下这是可能的。结果将会是 “could not read block” 错误。

关联记录(2)

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

BUG 修复修复在 WaitEventSetWait 中等待时抛出错误导致的文件描述符泄漏

变更

修复在 WaitEventSetWait 中等待时抛出错误导致的文件描述符泄漏(Etsuro Fujita)§

关联记录(4)

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

BUG 修复避免在 FDW 实现了异步追加但未为 Append 计划节点配置任何等待条件时损坏异常栈

变更

避免在 FDW 实现了异步追加但未为 Append 计划节点配置任何等待条件时损坏异常栈(Alexander Pyhalov)§

关联记录(2)

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

其他改进如果在重建索引期间访问索引,则抛出错误

变更

如果在重建索引期间访问索引,则抛出错误(Tom Lane)§

之前这只是一个断言检查,现在将其提升为常规运行时错误。当重建索引的用户定义索引表达式尝试访问其自身的表时,这将提供一个更有针对性的错误消息。

关联记录(4)

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

其他改进确保对 name 列的仅索引扫描返回完整填充的值

变更

确保对 name 列的仅索引扫描返回完整填充的值(David Rowley)§

物理存储在索引中的值是被截断的,之前会将指向该值的指针返回给调用者。这在 valgrind 下测试时引发了告警。理论上可能导致崩溃,但尚未收到相关报告。

关联记录(4)

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

BUG 修复修复大于 4GB 的 DSM 分配时的崩溃

变更

修复大于 4GB 的 DSM 分配时的崩溃(Heikki Linnakangas)§

关联记录(4)

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

其他改进如果新服务器会话的客户端套接字无法被设置为非阻塞模式则断开连接

变更

如果新服务器会话的客户端套接字无法被设置为非阻塞模式则断开连接(Heikki Linnakangas)§

曾经在理论上可以使用阻塞模式的套接字来运行;但这在很长时间以来就已经不能完全工作了,所以在连接开始时失败而不是稍后出现异常行为。

关联记录(4)

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

BUG 修复修复 OpenSSL 3.0.0 及更高版本中不充分的错误报告

变更

修复 OpenSSL 3.0.0 及更高版本中不充分的错误报告(Heikki Linnakangas,Tom Lane)§

通过 OpenSSL 传递的系统报告错误是用数字错误代码而非可读内容报告的。

关联记录(4)

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

其他改进避免在 libpq 和 ecpglib 中并发调用 bindtextdomain()

变更

避免在 libpq 和 ecpglib 中并发调用 bindtextdomain()(Tom Lane)§ §

虽然 GNU gettext 的实现似乎可以处理并发调用,但 Windows 上可用的版本不行。

关联记录(4)

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

BUG 修复修复 ecpg 的预处理器在程序尝试重新定义在预处理器命令行上定义的宏时崩溃的问题

变更

修复 ecpg 的预处理器在程序尝试重新定义在预处理器命令行上定义的宏时崩溃的问题(Tom Lane)§ § §

关联记录(4)

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

其他改进在 ecpg 中,避免发出错误的 “unsupported feature will be passed to server” 警告

变更

在 ecpg 中,避免发出错误的 “unsupported feature will be passed to server” 警告(Tom Lane)§

关联记录(4)

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

其他改进确保 ecpg 的 intoasc() 函数的字符串结果正确以零结尾

变更

确保 ecpg 的 intoasc() 函数的字符串结果正确以零结尾(Oleg Tselebrovskiy)§

关联记录(4)

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

BUG 修复修复 pg_dumpall,使角色注释(如果存在)无论 --no-role-passwords 的设置如何都会被导出

变更

修复 pg_dumpall,使角色注释(如果存在)无论 --no-role-passwords 的设置如何都会被导出(Daniel Gustafsson,Álvaro Herrera)§ §

关联记录(4)

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

BUG 修复修复 PL/pgSQL 对表达式后跟单行注释(-- 风格注释)的解析

变更

修复 PL/pgSQL 对表达式后跟单行注释(-- 风格注释)的解析(Erik Wienhold,Tom Lane)§

此错误导致当此类注释跟在 PL/pgSQL CASE 语句中的 WHEN 表达式之后时会出现解析错误。

关联记录(4)

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

其他改进在 contrib/amcheck 中,不要由于短头部与长头部值的差异而报告虚假的不匹配失败

变更

在 contrib/amcheck 中,不要由于短头部与长头部值的差异而报告虚假的不匹配失败(Andrey Borodin,Michael Zhilin)§ §

堆元组或索引元组中的可变长度数据项可以有短头部或长头部,这取决于其创建时应用的压缩参数。将这些情况视为等价的,而不是在存在差异时报告错误。

关联记录(4)

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

BUG 修复修复 BRIN 输出函数中的错误

变更

修复 BRIN 输出函数中的错误(Tomas Vondra)§

这些输出函数仅用于在 contrib/pageinspect 中显示索引条目,因此这些错误在实际中影响有限。

关联记录(2)

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

其他改进在 contrib/postgres_fdw 中,避免发出按常量排序的请求

变更

在 contrib/postgres_fdw 中,避免发出按常量排序的请求(David Rowley)§

这可能发生在涉及 UNION ALL 和常量输出子查询的情况下。按常量排序当然是无用的,但还有被远程服务器误解的风险,导致 “ORDER BY position N is not in select list” 错误。

关联记录(4)

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

其他改进使 contrib/postgres_fdw 将远程会话的时区设置为 GMT 而不是 UTC

变更

使 contrib/postgres_fdw 将远程会话的时区设置为 GMT 而不是 UTC(Tom Lane)§

在实际用途中这应该产生相同的结果。然而,GMT 由服务器中的硬编码代码识别,而 UTC 则从时区数据库中查找。因此在远程服务器的时区数据库缺少条目的不太可能的情况下,旧代码可能失败。

关联记录(4)

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

其他改进在 contrib/xml2 中,避免使用在较新版本的 libxml2 中已弃用的库函数

变更

在 contrib/xml2 中,避免使用在较新版本的 libxml2 中已弃用的库函数(Dmitry Koval)§

关联记录(4)

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

BUG 修复修复与 LLVM 18 的不兼容性

变更

修复与 LLVM 18 的不兼容性(Thomas Munro,Dmitry Dolgov)§

关联记录(4)

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

其他改进允许 make check 在 musl C 库下工作

变更

允许 make check 在 musl C 库下工作(Thomas Munro,Bruce Momjian,Tom Lane)§

关联记录(4)

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

这份对比如何生成?

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

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

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

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

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