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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 11.21 的版本变更

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

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

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

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

本次发布的全部变更

11.21

2023-08-10

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

11.21 历史版本维护截止 2023-11-09

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

如果模式或所有者名称包含引号、反斜杠或美元符号,则不允许将其替换到扩展脚本中

7.511.21

PostgreSQL 11.21

升级与兼容性说明

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

但是,如果使用 BRIN 索引,建议在更新后重建这些索引;请参阅下面的第二个变更条目。

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

安全相关如果模式或所有者名称包含引号、反斜杠或美元符号,则不允许将其替换到扩展脚本中

变更

如果模式或所有者名称包含引号、反斜杠或美元符号,则不允许将其替换到扩展脚本中(Noah Misch)

此限制可防止受信任的扩展中的 SQL 注入风险。

PostgreSQL 项目感谢 Micah Gate、Valerie Woolard、Tim Carey-Smith 和 Christoph Berg 报告此问题。(CVE-2023-39417)

关联记录(4)

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

BUG 修复修复 BRIN 索引中空范围(无行)与全 NULL 范围之间的混淆,以及全 NULL 摘要的不正确合并

变更

修复 BRIN 索引中空范围(无行)与全 NULL 范围之间的混淆,以及全 NULL 摘要的不正确合并(Tomas Vondra)

这些疏忽都可能导致忘记某个 BRIN 索引范围包含 NULL 值,从而可能使后续应当返回 NULL 值的查询遗漏这些值。

此修复本身不会纠正已有的错误 BRIN 条目。建议对任何可能用于搜索 NULL 值的 BRIN 索引执行 REINDEX。

关联记录(4)

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

BUG 修复避免在 DROP DATABASE 被中断时留下损坏的数据库

变更

避免在 DROP DATABASE 被中断时留下损坏的数据库(Andres Freund)

如果 DROP DATABASE 在已开始执行不可逆步骤之后被中断,目标数据库仍然可以访问(因为其 pg_database 行的移除会被回滚),但其内容已损坏。修复方法是在开始执行不可逆操作之前将数据库标记为不可访问。此后的失败将使数据库仍部分存在,但除了再次执行 DROP DATABASE 之外无法对其进行任何操作。

关联记录(4)

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

其他改进确保分区索引在创建时被正确标记为有效或无效

变更

确保分区索引在创建时被正确标记为有效或无效(Michael Paquier)

如果新建的分区索引匹配某个分区上已有但无效的索引,该分区索引可能会被过早地标记为有效。这可能导致后续对分区表的查询出现异常行为或断言失败。

关联记录(4)

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

其他改进在 ALTER TABLE ATTACH PARTITION 将分区索引匹配到子索引时忽略无效的子索引

变更

在 ALTER TABLE ATTACH PARTITION 将分区索引匹配到子索引时忽略无效的子索引(Michael Paquier)

这样的索引现在会被忽略,转而创建新的子索引。

关联记录(4)

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

BUG 修复修复在所有分区都已附加后将分区索引标记为有效时可能出现的失败

变更

修复在所有分区都已附加后将分区索引标记为有效时可能出现的失败(Michael Paquier)

更新索引的 pg_index 条目时可能对其他列使用了过期的数据。报告的一个症状是 “attempted to update invisible tuple” 错误。

关联记录(4)

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

BUG 修复修复 ALTER EXTENSION SET SCHEMA,使其在扩展包含扩展模式之外的对象时报告错误

变更

修复 ALTER EXTENSION SET SCHEMA,使其在扩展包含扩展模式之外的对象时报告错误(Michael Paquier,Heikki Linnakangas)

当扩展包含多个模式中的对象时报告错误一直是预期行为;但检查逻辑编写有误,未能检测到某些情况,导致令人意外的行为。

关联记录(4)

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

其他改进不要在规划器中使用部分唯一索引进行唯一性证明

变更

不要在规划器中使用部分唯一索引进行唯一性证明(David Rowley)

这可能产生不正确的计划,因为如果相关索引未用于扫描表,则从表中读取的行的假定唯一性可能不成立。

关联记录(4)

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

其他改进避免为具有伪常量连接子句的外部连接生成不正确的计划

变更

避免为具有伪常量连接子句的外部连接生成不正确的计划(Etsuro Fujita)

规划器目前缺少将伪常量连接子句附加到下推的远程连接的支持,因此在此类情况下禁用远程连接的生成。(更好的解决方案需要对规划器数据结构进行破坏 ABI 的更改,因此必须等到未来的主版本。)

关联记录(4)

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

其他改进在展开规则动作时正确处理 RLS 策略表达式和安全屏障视图中的子 SELECT

变更

在展开规则动作时正确处理 RLS 策略表达式和安全屏障视图中的子 SELECT(Tom Lane)

关联记录(4)

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

BUG 修复修复 SERIALIZABLE 隔离模式下冲突检测中的竞争条件

变更

修复 SERIALIZABLE 隔离模式下冲突检测中的竞争条件(Thomas Munro)

使用位图堆扫描、使用 GIN 索引以及检查初始为空的 B-树索引时可能会遗漏冲突。所有这些情况都可能因不当允许相互冲突的事务提交而破坏可串行性。

关联记录(4)

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

BUG 修复修复尝试更新复合列的字段时的间歇性失败

变更

修复尝试更新复合列的字段时的间歇性失败(Tom Lane)

如果复合列的整体值宽到需要行外 TOAST 存储,那么在不恰当时机发生的缓存刷新可能导致错误或服务器崩溃。

关联记录(4)

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

BUG 修复防止非常复杂的文本检索模式导致栈溢出崩溃

变更

防止非常复杂的文本检索模式导致栈溢出崩溃(Tom Lane)

关联记录(4)

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

其他改进允许 pg_hba.conf 和 pg_ident.conf 中的令牌长度最多为 10240 字节

变更

允许 pg_hba.conf 和 pg_ident.conf 中的令牌长度最多为 10240 字节(Tom Lane)

之前 256 字节的限制已被发现对某些使用场景不足。

关联记录(5)

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

BUG 修复修复 C++ 内存不足情况的错误处理

变更

修复 C++ 内存不足情况的错误处理(Heikki Linnakangas)

如果正在使用 JIT,C++ new 调用中的内存不足会导致 PostgreSQL 的 FATAL 错误,而非预期的 C++ 异常。

关联记录(4)

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

其他改进避免在页面释放导致空闲空间范围合并时丢失对可能有用的共享内存段的跟踪

变更

避免在页面释放导致空闲空间范围合并时丢失对可能有用的共享内存段的跟踪(Dongming Liu)

确保将该段移动到与其新的空闲空间量相应的 “bin” 中,以便后续搜索能够找到它。

关联记录(4)

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

其他改进允许 VACUUM 在检测到某些类型的 B-树索引损坏后继续执行

变更

允许 VACUUM 在检测到某些类型的 B-树索引损坏后继续执行(Peter Geoghegan)

如果检测到无效的兄弟页面链接,记录该问题并继续执行,而不是像之前那样抛出错误。只有 REINDEX 才能修复损坏的索引,但阻止 VACUUM 在此之前完成可能会使情况变得更糟。

关联记录(4)

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

其他改进确保在 VACUUM 检测到 pg_database.datfrozenxid 或 pg_database.datminmxid 中的无效数据后释放 WrapLimitsVacuumLock

变更

确保在 VACUUM 检测到 pg_database.datfrozenxid 或 pg_database.datminmxid 中的无效数据后释放 WrapLimitsVacuumLock(Andres Freund)

未能释放此锁可能导致后续死锁,尽管如果会话退出或遇到其他错误,该锁会被清理。

关联记录(4)

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

BUG 修复避免在崩溃恢复期间对预备事务的双重重放

变更

避免在崩溃恢复期间对预备事务的双重重放(suyu.cmj,Michael Paquier)

在检查点进行到部分时发生崩溃,且某些两阶段事务状态数据已被该检查点刷新到磁盘后,崩溃恢复可能尝试两次重放预备事务,导致诸如启动进程中 “lock is already held” 之类的致命错误。

关联记录(4)

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

其他改进确保新建但仍为空的表在下一次检查点时执行 fsync

变更

确保新建但仍为空的表在下一次检查点时执行 fsync(Heikki Linnakangas)

如果没有这一步,在操作系统崩溃导致空文件消失后,对该表的后续操作可能会出现 “could not open file” 错误。

关联记录(4)

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

其他改进确保不记录 WAL 的索引的 init fork 的创建被记录到 WAL

变更

确保不记录 WAL 的索引的 init fork 的创建被记录到 WAL(Heikki Linnakangas)

虽然不记录 WAL 的索引的主数据 fork 不记录 WAL,但其 init fork 应该记录,以确保在崩溃后有一个一致的状态来恢复索引。如果 init fork 不包含数据,则此步骤被遗漏,这是标准索引 AM 不使用的情况;但也许某些扩展会有这种行为。

关联记录(4)

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

BUG 修复修复延迟检查点结束标志的缺失重新初始化

变更

修复延迟检查点结束标志的缺失重新初始化(suyu.cmj)

这可能导致不必要的检查点延迟,或在启用断言的构建中出现断言失败。

关联记录(3)

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

其他改进避免在已中止的事务中通过扩展查询协议处理空语句时出现断言失败

变更

避免在已中止的事务中通过扩展查询协议处理空语句时出现断言失败(Tom Lane)

关联记录(4)

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

BUG 修复修复 contrib/fuzzystrmatch 的 Soundex difference() 函数以合理处理空输入

变更

修复 contrib/fuzzystrmatch 的 Soundex difference() 函数以合理处理空输入(Alexander Lakhin,Tom Lane)

不包含字母字符的输入字符串会产生不可预测的输出。

关联记录(4)

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

其他改进加强 contrib/hstore 输入中的空白检查

变更

加强 contrib/hstore 输入中的空白检查(Evan Jones)

在某些情况下,字符会被错误地识别为空白从而被丢弃。

关联记录(4)

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

其他改进拒绝 contrib/intarray 的 gist__int_ops 索引操作符类的超大输入数组

变更

拒绝 contrib/intarray 的 gist__int_ops 索引操作符类的超大输入数组(Ankit Kumar Pandey,Alexander Lakhin)

之前此代码会报告一个 NOTICE 但仍然继续执行,创建一个无效的索引条目,在读取索引时可能导致崩溃。

关联记录(4)

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

其他改进避免 contrib/intarray 中 GiST 索引条目的无用双重解压

变更

避免 contrib/intarray 中 GiST 索引条目的无用双重解压(Konstantin Knizhnik,Matthias van de Meent,Tom Lane)

关联记录(4)

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

其他改进确保关系缓存条目中的 pg_index.indisreplident 保持最新

变更

确保关系缓存条目中的 pg_index.indisreplident 保持最新(Shruthi Gowda)

此值在某些情况下可能是过期的。核心代码没有依赖关系缓存的此副本,因此就 PostgreSQL 本身而言这只是一个潜在缺陷;但对于某些扩展来说可能是一个实际缺陷。

关联记录(4)

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

其他改进消除使用 OpenSSL 3.0.0 或更新版本编译时的弃用警告

变更

消除使用 OpenSSL 3.0.0 或更新版本编译时的弃用警告(Peter Eisentraut)

关联记录(2)

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

这份对比如何生成?

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

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

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

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

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