↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 18.3 发布变化

此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。

此版本的完整变化
此版本的完整变化

包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。

完整发布变化

18.3

2026-02-26

导出 JSON ↓
9项变化功能、修复、改进
1个版本按版本分组
2CVE独立漏洞编号

18.3stable支持截止 2030-11-14

安全变化
CVE / 问题严重程度修复版本所选版本状态
CVE-2026-2006

避免在对“经过 TOAST 处理”的数据应用 substring() 时误报无效编码

18.2已记录修复
CVE-2026-2007

修复针对 CVE-2026-2007 的修复中遗漏的问题

18.2已记录修复

PostgreSQL 18.3

迁移与兼容性

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

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

问题修复修复在重放由较旧小版本生成的 WAL 多事务 ID 截断记录后发生失败的问题

变更

修复在重放由较旧小版本生成的 WAL 多事务 ID 截断记录后发生失败的问题(Heikki Linnakangas)§

为兼容旧版本处理多事务 ID 回卷方式而编写的错误逻辑,会导致重放失败,并出现诸如 “could not access status of transaction” 之类的消息。一种典型场景是:最新小版本的备库正在消费来自较旧版本主库的 WAL。

关联记录 (4)
安全避免在对“经过 TOAST 处理”的数据应用 substring() 时误报无效编码

变更

避免在对“经过 TOAST 处理”的数据应用 substring() 时误报无效编码(Noah Misch)§ § §

针对 CVE-2026-2006 的修复过于激进,在原本合法的情况下也可能报出字符不完整错误。

关联记录 (4)
安全修复针对 CVE-2026-2007 的修复中遗漏的问题

变更

修复针对 CVE-2026-2007 的修复中遗漏的问题(Zsolt Parragi)§

如果因为输入包含的三字符组比初始估计更多而需要扩展 “bounds” 数组,generate_trgm_only 没有把修改后的数组指针返回给调用者。这会导致 strict_word_similarity() 及相关函数输出错误,极少数情况下还会崩溃。如果输入字符串在转换为小写后变长,就会触发这段错误代码。目前已知仅会在某些单字节编码配合 ICU 区域设置时发生这种情况。

问题修复修复 json_strip_nulls() 和 jsonb_strip_nulls() 的波动性标记

变更

修复 json_strip_nulls() 和 jsonb_strip_nulls() 的波动性标记(Andrew Dunstan)§

这些函数一直被视为不可变,但在版本 18 的重构中却意外被标记为稳定。这会阻止它们被用于索引表达式,并可能导致查询中不必要的重复求值。该修复会纠正在新初始化的数据库集簇中的标记(包括通过 pg_upgrade 升级到 18.3 或更高版本的集簇)。但是,它无法帮助使用 18.0 到 18.2 创建的现有集簇。

如果这一错误影响到了你对这些函数的使用,建议对现有集簇执行手工目录更新。以超级用户身份在每个受影响的数据库中执行:

UPDATE pg_catalog.pg_proc SET provolatile = 'i' WHERE oid IN ('3261','3262');

同时也要更新 template0 和 template1,这样将来新建的数据库也会带有该修复。

问题修复修复对 LATERAL UNION ALL 子查询输出可能将其置空的外连接集合的计算

变更

修复对 LATERAL UNION ALL 子查询输出可能将其置空的外连接集合的计算(Richard Guo)§

这一错误可能导致系统误以为某些 NOT NULL 测试没有必要,从而跳过这些测试,最终产生错误的查询结果。

关联记录 (2)
改进避免用户自定义约束与自动命名的 NOT NULL 约束发生名称冲突

变更

避免用户自定义约束与自动命名的 NOT NULL 约束发生名称冲突(Laurenz Albe)§

从版本 18 开始,NOT NULL 约束拥有完整的 pg_constraint 条目,因此需要名字。对未命名 NOT NULL 约束选择名称的逻辑,未能避免与同一 CREATE TABLE 语句中用户编写的其他约束发生冲突。

问题修复修复 pg_stat_get_backend_wait_event() 和 pg_stat_get_backend_wait_event_type(),使其能够为辅助进程返回值

变更

修复 pg_stat_get_backend_wait_event() 和 pg_stat_get_backend_wait_event_type(),使其能够为辅助进程返回值(Heikki Linnakangas)§

此前,这些函数对辅助进程返回 NULL,但这与 pg_stat_activity 视图的行为不一致。

关联记录 (4)
问题修复修复在从 PL/pgSQL 函数返回其值时,将复合类型变量转换为域类型的问题

变更

修复在从 PL/pgSQL 函数返回其值时,将复合类型变量转换为域类型的问题(Tom Lane)§

如果该变量的值为 NULL,则会出现 “cache lookup failed for type 0” 错误。

关联记录 (4)
问题修复修复 contrib/hstore 二进制输入函数中潜在的空指针解引用问题

变更

修复 contrib/hstore 二进制输入函数中潜在的空指针解引用问题(Michael Paquier)§

hstore 的接收函数在输入包含重复键时会崩溃。由 PostgreSQL 生成的 hstore 值永远不会包含重复键,因此这一错误一直未被发现。恶意构造或损坏的数据都可能触发该崩溃。

关联记录 (4)
如何生成比较结果?

比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。

发布快照: 2026-09-26 · 安全快照: 2026-09-26

内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.