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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 12.10 的版本变更

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

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

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

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

本次发布的全部变更

12.10

2022-02-10

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

12.10 历史版本维护截止 2024-11-21

PostgreSQL 12.10

升级与兼容性说明

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

但是,如果曾对 TOAST 表的索引执行 REINDEX CONCURRENTLY,或者发现无法访问 TOAST 数据,请参阅下方变更记录中的第一项。

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

其他改进对 TOAST 表更新强制使用标准锁定协议,以防止 REINDEX CONCURRENTLY 出现问题

变更

对 TOAST 表更新强制使用标准锁定协议,以防止 REINDEX CONCURRENTLY 出现问题(Michael Paquier)§

如果对 TOAST 表或 TOAST 表的索引应用 REINDEX CONCURRENTLY,往往会产生损坏的索引。这是因为更新 TOAST 条目的会话立即释放了其 ROW EXCLUSIVE 锁,而不是像其他所有更新那样持有到事务提交。修复方法是使 TOAST 更新按照正常规则持有表锁。任何已损坏的索引都可以通过重建索引来修复。

关联记录(2)

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

BUG 修复修复并行单子节点 Append 节点的不正确计划创建

变更

修复并行单子节点 Append 节点的不正确计划创建(David Rowley)§

在某些情况下,Append 在不应该被简化时被简化了,导致错误的查询结果(重复行)。

关联记录(2)

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

BUG 修复修复当并非所有索引列都可返回时的仅索引扫描计划

变更

修复当并非所有索引列都可返回时的仅索引扫描计划(Tom Lane)§ §

如果一个索引同时具有可返回列和不可返回列,且其中一个不可返回列是使用出现在可返回索引列中的表列的表达式,那么使用该表达式的查询可能会产生一个尝试读取不可返回列的仅索引扫描计划,而不是按预期从可返回列重新计算表达式。不可返回列将读取为 NULL,导致错误的查询结果。

关联记录(4)

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

其他改进确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用

变更

确保将类型转换到未指定的 typmod 时生成 RelabelType 节点而非长度强制函数调用(Tom Lane)§

虽然强制函数应该做正确的事情(即什么都不做),但这种转换效率不必要地低下。

关联记录(4)

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

BUG 修复修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败

变更

修复当数据库一致性恰好在 WAL 页面边界处达到时的 WAL 重放失败(Álvaro Herrera)§

关联记录(4)

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

BUG 修复修复物理副本的启动以容忍事务 ID 回卷

变更

修复物理副本的启动以容忍事务 ID 回卷(Abhijit Menon-Sen,Tomas Vondra)§

如果副本服务器在主库上的活跃事务集跨越回卷边界时启动(即有些较新的事务的 XID 比较旧的事务小),副本将因 “out-of-order XID insertion in KnownAssignedXids” 而失败。副本会重试,但永远无法越过该错误。

关联记录(4)

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

其他改进移除在逻辑复制连接上发出的 SQL 命令的词法限制

变更

移除在逻辑复制连接上发出的 SQL 命令的词法限制(Tom Lane)§ §

如果 SQL 命令包含未加引号的分号,或包含带有奇数个单引号或双引号的美元引用字面量,或以注释开头,walsender 进程就会失败。此外,错误恢复不正确也可能导致后续命令发生意外错误。

关联记录(4)

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

BUG 修复修复事务的最后一个子事务的提交时间戳可能丢失的问题

变更

修复事务的最后一个子事务的提交时间戳可能丢失的问题(Alex Kingsborough,Kyotaro Horiguchi)§

关联记录(4)

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

其他改进确保在检查点期间对 pg_logical/mappings 子目录执行 fsync

变更

确保在检查点期间对 pg_logical/mappings 子目录执行 fsync(Nathan Bossart)§

在某些文件系统上,这一疏忽可能导致在系统崩溃后丢失逻辑重写状态文件。

关联记录(4)

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

其他改进为分区表构建扩展统计信息

变更

为分区表构建扩展统计信息(Justin Pryzby)§

之前的一个错误修复禁用了为旧式继承树构建扩展统计信息,但它也阻止了为分区表构建这些统计信息,这是一个不必要的限制。此变更允许 ANALYZE 计算分区表的统计对象的值。(但请注意,自动清理本身不处理分区表,因此如果需要维护此类统计信息,必须定期对分区表发出手动 ANALYZE。)

关联记录(4)

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

其他改进忽略继承树的扩展统计信息

变更

忽略继承树的扩展统计信息(Justin Pryzby)§

目前,扩展统计信息的值只是针对每个表本地计算的,而不是针对整个继承树。但是,在规划跨继承树的查询时,这些值被错误地参考了,可能导致比默认估计更差的结果。

关联记录(4)

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

其他改进当分区表的行类型在其他地方被用作复合类型时,禁止修改其列的数据类型

变更

当分区表的行类型在其他地方被用作复合类型时,禁止修改其列的数据类型(Tom Lane)§

这一限制对于普通表早已存在,但由于疏忽,对分区表未做检查。

关联记录(4)

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

其他改进禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL

变更

禁止对作为副本标识索引一部分的列执行 ALTER TABLE ... DROP NOT NULL(Haiying Tang,Hou Zhijie)§

对于主键索引已经存在相同的禁止规则。

关联记录(4)

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

其他改进在 ALTER TABLE ADD PRIMARY KEY USING INDEX 期间正确更新缓存的表状态

变更

在 ALTER TABLE ADD PRIMARY KEY USING INDEX 期间正确更新缓存的表状态(Hou Zhijie)§

并发会话未能更新其关于表是否具有主键的判断,可能导致不正确的逻辑复制行为。

关联记录(3)

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

其他改进在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态

变更

在切换 REPLICA IDENTITY 索引时正确更新缓存的表状态(Tang Haiying,Hou Zhijie)§

并发会话未能更新其关于哪个索引是副本标识索引的判断,可能导致不正确的逻辑复制行为。

关联记录(4)

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

BUG 修复避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存

变更

避免在重新分配大量对象所有权的 REASSIGN OWNED BY 操作期间泄漏内存(Justin Pryzby)§

关联记录(4)

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

BUG 修复修复 pg_hba_file_rules 视图中 cert 认证方法选项的显示

变更

修复 pg_hba_file_rules 视图中 cert 认证方法选项的显示(Magnus Hagander)§

cert 认证方法隐含 clientcert=verify-full,但 pg_hba_file_rules 视图错误地报告了 clientcert=verify-ca。

关联记录(2)

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

BUG 修复修复出现在 INSERT ... VALUES 规则中的整行变量的显示

变更

修复出现在 INSERT ... VALUES 规则中的整行变量的显示(Tom Lane)§

整行变量会被打印为 “var.*”,但这允许在规则重新加载时将其展开为各个列,导致不同的语义。附加显式类型转换以防止这种情况,正如我们在其他地方所做的那样。

关联记录(4)

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

BUG 修复修复或移除一些不正确的断言

变更

修复或移除一些不正确的断言(Simon Riggs,Michael Paquier,Alexander Lakhin)§ § §

这些错误应该只影响调试构建,不影响生产环境。

关联记录(4)

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

BUG 修复修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件

变更

修复在多线程使用 libpq 或 ecpglib 早期报告的错误消息本地化失败的竞态条件(Tom Lane)§

关联记录(4)

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

其他改进避免从 libpq 的 PQcancel 函数中调用 strerror

变更

避免从 libpq 的 PQcancel 函数中调用 strerror(Tom Lane)§

PQcancel 应该可以安全地从信号处理程序中调用,但 strerror 不是安全的。这一错误用法仅在向服务器发送取消消息失败的不太可能的情况下才会发生,这也许解释了为什么没有相关报告。

关联记录(4)

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

其他改进使 psql 的 \password 命令默认设置 CURRENT_USER 的密码,而非连接的原始用户名

变更

使 psql 的 \password 命令默认设置 CURRENT_USER 的密码,而非连接的原始用户名(Tom Lane)§

这与文档中描述的行为一致,并且避免了在会话开始后执行了 SET ROLE 或 SET SESSION AUTHORIZATION 时可能出现的权限失败。为防止混淆,现在密码提示中包含了要操作的角色名称。

关联记录(4)

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

其他改进在 psql 和其他一些客户端程序中,避免在 Ctrl-C 信号处理程序中尝试调用 gettext()

变更

在 psql 和其他一些客户端程序中,避免在 Ctrl-C 信号处理程序中尝试调用 gettext()(Tom Lane)§

虽然没有已报告的失败可追溯到此错误,但这样做几乎不可能是安全的。

关联记录(4)

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

其他改进允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示

变更

允许取消 pg_receivewal 和 pg_recvlogical 中的初始密码提示(Tom Lane,Nathan Bossart)§

之前在这些程序提示输入密码时无法通过 Ctrl-C 终止它们。

关联记录(4)

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

BUG 修复修复 pg_dump 对用户定义类型转换的转储顺序

变更

修复 pg_dump 对用户定义类型转换的转储顺序(Tom Lane)§

在极少数情况下,输出脚本可能在用户定义类型转换被创建之前就引用了它。

关联记录(4)

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

BUG 修复修复 pg_dump 的 --inserts 和 --column-inserts 模式以处理同时包含生成列和已删除列的表

变更

修复 pg_dump 的 --inserts 和 --column-inserts 模式以处理同时包含生成列和已删除列的表(Tom Lane)§ §

关联记录(2)

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

BUG 修复修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题

变更

修复 pg_dump 和 pg_basebackup 中可能错误报告错误的问题(Tom Lane)§ §

之前的代码未能检查某些内核调用的错误,并且在其他情况下可能报告错误的 errno 值。

关联记录(4)

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

BUG 修复修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果

变更

修复 char(N) 列上 contrib/btree_gist 索引的仅索引扫描结果(Tom Lane)§

仅索引扫描返回的列值去除了尾部空格,这不是预期的行为。这是因为数据就是以这种方式存储在索引中的。此修复更改代码以使用预期的空格填充来存储 char(N) 值。除非你执行 REINDEX,否则此类索引的行为不会立即改变;在更新过程中,去除空格的值将逐渐被替换。不使用仅索引扫描计划的查询在任何情况下都不受影响。

关联记录(4)

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

其他改进更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python

变更

更改 configure 以使用 Python 的 sysconfig 模块代替已弃用的 distutils 模块来确定如何构建 PL/Python(Peter Eisentraut,Tom Lane,Andres Freund)§

对于 Python 3.10,这避免了在 configure 时出现关于 distutils 已弃用并计划在 Python 3.12 中移除的警告。想必一旦 3.12 发布,configure --with-python 将会完全失败。这种面向未来的改进确实有一个代价:sysconfig 在 Python 2.7 之前不存在,在 Python 3 分支中在 3.2 之前也不存在,因此不再可能针对早已停止维护的 Python 版本构建 PL/Python。

关联记录(4)

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

BUG 修复修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败

变更

修复在 Windows 上使用 Perl 5.28 及更高版本时的 PL/Perl 编译失败(Victor Wagner)§

关联记录(4)

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

BUG 修复修复在 Python 3.11 及更高版本上的 PL/Python 编译失败

变更

修复在 Python 3.11 及更高版本上的 PL/Python 编译失败(Peter Eisentraut)§

关联记录(4)

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

其他改进增加对使用 Visual Studio 2022 构建的支持

变更

增加对使用 Visual Studio 2022 构建的支持(Hans Buschmann)§

关联记录(4)

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

其他改进允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用

变更

允许 MSVC 构建系统中的 .bat 包装脚本无需先切换到其所在目录即可调用(Anton Voloshin,Andrew Dunstan)§ §

关联记录(4)

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

这份对比如何生成?

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

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

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

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

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