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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 14.5 的版本变更

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

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

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

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

本次发布的全部变更

14.5

2022-08-11

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

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

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

修复 CREATE INDEX 中的权限检查

8.814.3
CVE-2022-2625

不允许扩展脚本替换不属于该扩展的已有对象

7.114.5

PostgreSQL 14.5

升级与兼容性说明

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

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

安全相关不允许扩展脚本替换不属于该扩展的已有对象

变更

不允许扩展脚本替换不属于该扩展的已有对象(Tom Lane)§

此更改防止扩展脚本在存在不属于该扩展的现有对象时执行 CREATE OR REPLACE。在相同情况下,也防止执行 CREATE IF NOT EXISTS。这防止了一种木马攻击形式,即恶意数据库用户可以成为扩展对象的所有者,然后修改它以危害其他用户对该对象的未来使用。作为附带的好处,它还降低了意外替换非预期对象的风险。

PostgreSQL 项目感谢 Sven Klemm 报告此问题。(CVE-2022-2625)

关联记录(4)

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

BUG 修复修复在备库上重放 CREATE DATABASE WAL 记录的问题

变更

修复在备库上重放 CREATE DATABASE WAL 记录的问题(Kyotaro Horiguchi,Asim R Praveen,Paul Guo)§ § § §

备库在重放数据库创建 WAL 记录时可能遇到缺失的表空间目录。在此补丁之前,备库在这种情况下会恢复失败;然而,此类目录可能是合法缺失的。创建表空间(作为普通目录),然后在重放达到一致状态后检查它是否已被删除。

关联记录(4)

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

其他改进支持“原位”表空间

变更

支持“原位”表空间(Thomas Munro,Michael Paquier,Álvaro Herrera)§ § §

通常,PostgreSQL 表空间是指向其他文件系统中某个目录的符号链接。此更改允许表空间直接就是一个普通目录。虽然这对将表分布到不同文件系统上没有帮助,但对测试来说是一种方便的设置。此外,为支持 CREATE DATABASE 的重放修复,这一能力是必需的;该修复会将缺失的表空间临时创建为“原位”表空间。

关联记录(4)

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

安全相关修复 CREATE INDEX 中的权限检查

变更

修复 CREATE INDEX 中的权限检查(Nathan Bossart,Noah Misch)§

CVE-2022-1552 的修复导致 CREATE INDEX 在查找操作符类和其他对象时应用表所有者的权限,而之前使用的是调用用户的权限。这破坏了导出/恢复场景,因为 pg_dump 在重新授予权限之前发出 CREATE INDEX。

关联记录(4)

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

其他改进在扩展查询协议中,在 CREATE DATABASE 和其他不能在事务块中运行的命令之后强制立即提交

变更

在扩展查询协议中,在 CREATE DATABASE 和其他不能在事务块中运行的命令之后强制立即提交(Tom Lane)§

如果客户端在此类命令之后没有立即发送 Sync 消息,而是发送了另一个命令,那么该命令中的任何失败都将导致回滚前面的命令,通常会在磁盘上留下不一致的状态(如缺失或多余的数据库目录)。用于防止这种情况的机制在简单查询消息中的多个命令中有效,但在一系列扩展协议消息中无效。为了防止不一致而不破坏当前可行的使用场景,在此类命令之后强制执行隐式提交。

关联记录(4)

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

BUG 修复修复检查事务可见性时的竞态条件

变更

修复检查事务可见性时的竞态条件(Simon Riggs)§

TransactionIdIsInProgress 可能在目标事务被认为可见之前就报告 false,导致各种异常行为。竞态条件窗口通常非常窄,但使用同步复制会使其大幅扩大,因为等待同步副本的过程发生在该窗口中。

关联记录(4)

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

BUG 修复修复在按包含非顶层集合返回函数的表达式排序时生成错误计划的问题

变更

修复在按包含非顶层集合返回函数的表达式排序时生成错误计划的问题(Richard Guo,Tom Lane)§ §

关联记录(1)

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

BUG 修复修复扩展统计信息的错误权限检查代码

变更

修复扩展统计信息的错误权限检查代码(Richard Guo)§

如果用户对一个有扩展统计信息的表仅有部分 SELECT 权限,某些查询会出现 “unrecognized node type” 错误。

BUG 修复修复扩展统计信息机制以处理布尔值表达式上的 MCV 类型统计信息

变更

修复扩展统计信息机制以处理布尔值表达式上的 MCV 类型统计信息(Tom Lane)§

统计信息收集工作正常,但 WHERE 中包含此类表达式的查询会出现 “unknown clause type” 错误。

其他改进避免在 array 变量上有 MCV 类型扩展统计信息时,constant = ANY(array) 子句导致规划器核心转储

变更

避免在 array 变量上有 MCV 类型扩展统计信息时,constant = ANY(array) 子句导致规划器核心转储(Tom Lane)§ §

关联记录(1)

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

BUG 修复修复 ALTER TABLE ... ENABLE/DISABLE TRIGGER 对分区表上的触发器正确处理递归

变更

修复 ALTER TABLE ... ENABLE/DISABLE TRIGGER 对分区表上的触发器正确处理递归(Álvaro Herrera,Amit Langote)§ §

在某些情况下,由于命令会尝试调整没有该触发器的子分区上的触发器,会出现 “trigger does not exist” 错误。

关联记录(3)

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

其他改进允许在 ANALYZE 计算扩展统计信息时取消操作

变更

允许在 ANALYZE 计算扩展统计信息时取消操作(Tom Lane,Justin Pryzby)§

在统计目标较高的某些场景中,可能会花费数秒在不可取消的排序操作中。

其他改进改进 jsonpath 类型的语法错误消息

变更

改进 jsonpath 类型的语法错误消息(Andrew Dunstan)§

关联记录(2)

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

其他改进确保 pg_stop_backup() 正确清理会话状态

变更

确保 pg_stop_backup() 正确清理会话状态(Fujii Masao)§

此遗漏可能导致会话后续出现断言失败或崩溃。

关联记录(4)

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

BUG 修复修复 trim_array() 以合理处理零维数组参数

变更

修复 trim_array() 以合理处理零维数组参数(Martin Kalcher)§

BUG 修复修复 FOR [KEY] UPDATE/SHARE 子句中的连接别名匹配

变更

修复 FOR [KEY] UPDATE/SHARE 子句中的连接别名匹配(Dean Rasheed)§

在某些边界情况下,可能报告误导性的错误。

关联记录(4)

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

其他改进拒绝 FROM 中列数过多的 ROW() 表达式和函数

变更

拒绝 FROM 中列数过多的 ROW() 表达式和函数(Tom Lane)§ §

超过约 1600 列的情况不受支持,且在执行时始终会失败。然而,一些较早的代码在查询超过 32K 列时可能被驱动到断言失败或崩溃。增加一个解析时检查以防止此问题。

关联记录(4)

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

BUG 修复修复使用 FROM 中返回复合类型的函数的视图的导出问题,当视图创建后复合类型的列已被删除时

变更

修复使用 FROM 中返回复合类型的函数的视图的导出问题,当视图创建后复合类型的列已被删除时(Tom Lane)§

此疏忽可能导致导出/恢复或 pg_upgrade 失败,因为导出的视图会有过多的函数列别名。

关联记录(4)

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

其他改进不允许在逻辑复制 walsender 中执行嵌套备份操作

变更

不允许在逻辑复制 walsender 中执行嵌套备份操作(Fujii Masao)§

关联记录(4)

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

BUG 修复修复逻辑复制订阅者中的内存泄漏

变更

修复逻辑复制订阅者中的内存泄漏(Hou Zhijie)§

关联记录(4)

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

BUG 修复修复当目标表是分区表时逻辑复制的副本标识检查

变更

修复当目标表是分区表时逻辑复制的副本标识检查(Shi Yu,Hou Zhijie)§ §

副本标识列必须为子分区重新识别。

关联记录(1)

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

BUG 修复修复在发布者上发生模式更改后逻辑复制订阅者未能更新缓存模式数据的问题

变更

修复在发布者上发生模式更改后逻辑复制订阅者未能更新缓存模式数据的问题(Shi Yu,Hou Zhijie)§ §

关联记录(1)

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

BUG 修复修复 WAL 一致性检查逻辑以正确处理 BRIN_EVACUATE_PAGE 标志

变更

修复 WAL 一致性检查逻辑以正确处理 BRIN_EVACUATE_PAGE 标志(Haiyang Wang)§ §

关联记录(4)

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

BUG 修复修复共享 hash 表管理中的错误断言检查

变更

修复共享 hash 表管理中的错误断言检查(Thomas Munro)§

关联记录(3)

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

其他改进避免在 min_dynamic_shared_memory 设置为非默认值时出现断言失败

变更

避免在 min_dynamic_shared_memory 设置为非默认值时出现断言失败(Thomas Munro)§

其他改进安排在 SPI_commit() 中的提交时错误后进行清理,而不是期望调用者来做

变更

安排在 SPI_commit() 中的提交时错误后进行清理,而不是期望调用者来做(Peter Eisentraut,Tom Lane)§ §

正确的清理很复杂,需要使用底层设施,因此已知的调用者没有一个做对了也不足为奇。这导致当 PL 过程执行 COMMIT 但发生失败(如延迟约束检查)时出现异常行为。为了改善情况,将 SPI_commit() 重新定义为启动一个新事务,使其等价于 SPI_commit_and_chain(),只是获得默认事务特性而不是保留先前事务的特性。为了使此更改在 API 层面具有一定透明性,将 SPI_start_transaction() 重新定义为空操作。所有已知的 SPI_commit() 调用者都会立即调用 SPI_start_transaction(),因此它们不会注意到任何变化。类似的说明适用于 SPI_rollback()。

另外修复了 PL/Python,它完全遗漏了对此类错误的任何处理,导致跳出 Python 解释器。据报告这会导致 Python 3.11 崩溃。较旧的 Python 版本会泄漏一些内存,但似乎在其他方面没有问题。

关联记录(3)

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

其他改进改进 libpq 在管道模式下对空闲状态的处理

变更

改进 libpq 在管道模式下对空闲状态的处理(Álvaro Herrera,Kyotaro Horiguchi)§ §

这修复了 “message type 0x33 arrived from server while idle” 警告,以及 PQgetResult() 可能丢失查询结束时的 NULL 结果。

其他改进避免 ecpglib 在意外的操作顺序下出现核心转储

变更

避免 ecpglib 在意外的操作顺序下出现核心转储(Tom Lane)§

某些操作如 EXEC SQL PREPARE 在建立任何数据库连接之前调用时会崩溃(而不是按预期报告错误)。

关联记录(4)

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

其他改进在 ecpglib 中,避免冗余的 newlocale() 调用

变更

在 ecpglib 中,避免冗余的 newlocale() 调用(Noah Misch)§ §

在首次连接时每个进程分配一次 C 区域设置对象,而不是每次查询都创建和释放区域设置对象。这缓解了 AIX 上 libc 的内存泄漏问题,并且可能在所有平台上提供一些性能改善。

关联记录(4)

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

其他改进在 psql 的 \watch 命令中,使用 control-C 取消后回显换行符

变更

在 psql 的 \watch 命令中,使用 control-C 取消后回显换行符(Pavel Stehule)§

这防止 libedit(也可能是 libreadline)对光标所在列的位置产生混乱。

关联记录(4)

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

BUG 修复修复 pg_upgrade 以检测使用 anyarray 的函数的不可升级用法

变更

修复 pg_upgrade 以检测使用 anyarray 的函数的不可升级用法(Justin Pryzby)§ §

版本 14 将一些内置函数改为接受 anycompatiblearray 类型而不是 anyarray。虽然这大多是透明的,但建立在这些函数之上的用户自定义聚合和操作符必须以完全匹配的类型声明。引用旧签名的对象的存在会导致 pg_upgrade 失败,因此改为在开始升级之前检测并报告此类情况。

BUG 修复修复在 pg_upgrade 使用 --clone 选项时 clone() 失败后可能报告错误的错误条件

变更

修复在 pg_upgrade 使用 --clone 选项时 clone() 失败后可能报告错误的错误条件(Justin Pryzby)§

关联记录(2)

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

BUG 修复修复 contrib/pg_stat_statements 以避免在 32 位平台上处理非常大的查询文本文件时出现问题

变更

修复 contrib/pg_stat_statements 以避免在 32 位平台上处理非常大的查询文本文件时出现问题(Tom Lane)§

关联记录(4)

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

其他改进在 contrib/postgres_fdw 中,当存在 WITH CHECK OPTION 约束时阻止批量插入

变更

在 contrib/postgres_fdw 中,当存在 WITH CHECK OPTION 约束时阻止批量插入(Etsuro Fujita)§

如果一次插入多行,此类约束无法被正确检查。

BUG 修复修复 contrib/postgres_fdw 以检测异步数据获取查询发送失败的情况

变更

修复 contrib/postgres_fdw 以检测异步数据获取查询发送失败的情况(Fujii Masao)§

其他改进确保 contrib/postgres_fdw 在发送 regconfig 和其他 reg* 类型的常量时使用正确的模式限定

变更

确保 contrib/postgres_fdw 在发送 regconfig 和其他 reg* 类型的常量时使用正确的模式限定(Tom Lane)§

关联记录(4)

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

其他改进在 Linux 上分配动态共享内存时阻塞信号

变更

在 Linux 上分配动态共享内存时阻塞信号(Thomas Munro)§ § §

这避免了信号中断 posix_fallocate() 时的问题。

关联记录(4)

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

其他改进检测 shm_open() 的意外 EEXIST 错误

变更

检测 shm_open() 的意外 EEXIST 错误(Thomas Munro)§

这避免了在 Solaris 上可能发生的崩溃。

关联记录(4)

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

其他改进避免在 illumos 系统上使用 signalfd()

变更

避免在 illumos 系统上使用 signalfd()(Thomas Munro)§

这似乎会触发挂起和内核恐慌,因此在修复可用之前避免使用该函数。

这份对比如何生成?

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

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

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

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

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