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

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

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 16.15 发布变化

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

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

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

完整发布变化

16.15

2026-08-13

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

16.15stable支持截止 2028-11-09

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

避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针

16.14已记录修复
CVE-2026-6473

修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出

16.14已记录修复
CVE-2026-19385

移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设

16.15已记录修复
CVE-2026-18408

不要对 psql 的 \unrestrict 命令参数执行反引号扩展

16.15已记录修复
CVE-2026-16239

交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型

16.15已记录修复
CVE-2026-16238

修复 pg_restore_attribute_stats() 对多范围类型的处理

已记录修复
CVE-2026-15742

修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出

16.15已记录修复
CVE-2026-15741

逆解析 EXTRACT() 函数调用时,按需为字段名加引号

16.15已记录修复
CVE-2026-14680

拒绝从 SQL 调用接受或返回 internal 类型的函数

16.15已记录修复
CVE-2026-14677

修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出

16.15已记录修复
CVE-2026-14676

修复 contrib/pg_stat_statements 中的缓冲区越界写入

已记录修复
CVE-2026-14671

移除 contrib/refint 中的计划缓存

16.15已记录修复
CVE-2026-14670

增强 PL/Perl 对 “tied” Perl 数组和 hash 的防护

16.15已记录修复
CVE-2026-14669

修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入

16.15已记录修复
CVE-2026-14664

修复正则表达式匹配/拆分函数中的缓冲区越界写入

16.15已记录修复
CVE-2026-14662

增强 tsvector 和 tsquery 代码对超长值的防护(包括单个词位以及向量/查询的总长度)

16.15已记录修复
CVE-2025-8714

不要对 psql 的 \unrestrict 命令参数执行反引号扩展

16.10已记录修复
CVE-2026-14679

修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题

16.15已记录修复
CVE-2026-6464

修复 psql:跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据,即使 COPY 在发送 PGRES_COPY_IN 前失败

16.15已记录修复
CVE-2026-14668

让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型

16.15已记录修复
CVE-2026-6471

将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合

16.15已记录修复
CVE-2026-14663

修复 contrib/pgcrypto 的 PGP 加密,使其能够检测不受支持的密码算法

16.15已记录修复
CVE-2026-14672

让模拟的 SCRAM secret 更可信

16.15已记录修复
CVE-2026-6470

在此前漏检的场景中检查数据类型的 USAGE 权限

16.15已记录修复
CVE-2026-18024

增强 ascii() 函数对无效输入的防护

16.15已记录修复
CVE-2026-14678

修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误

16.15已记录修复
CVE-2026-14681

在直接 SSL 连接之后拒绝 GSSEncRequest

已记录修复
CVE-2026-14666

角色发生变更后使依赖角色的缓存计划失效

16.15已记录修复
CVE-2026-6469

在 ALTER TABLE 重建扩展统计信息对象时保留其所有权

16.15已记录修复
CVE-2026-16241

修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入

16.15已记录修复
CVE-2026-14673

确保 contrib/amcheck 函数在执行索引表达式前限制 search_path

16.15已记录修复

PostgreSQL 16.15

迁移与兼容性

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

但是,下面前三个安全条目描述了更新后可能需要进行的配置调整和数据清理。

此外,如果使用 contrib/btree_gist 或 contrib/ltree,可能需要为这些扩展创建的索引重建索引;请参见下面的相关条目。

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

安全将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合

变更

将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合(Jacob Champion)§

此前,复制用户可以为逻辑解码选择任意可加载库,从而实施各种攻击。为了在不破坏原有可用配置的情况下收紧这一限制,现引入一份允许使用的输出插件列表。

默认情况下,只有随 PostgreSQL 提供的输出插件(pgoutput 和 test_decoding)会包含在 output_plugin_libraries 中。使用其他输出插件的安装必须在更新服务器后将其加入该参数,例如:

output_plugin_libraries = 'pgoutput, test_decoding, my_trusted_decoder'

此外,从版本 17 或更高版本迁移时,如果 pg_upgrade --check 发现新集簇的 output_plugin_libraries 参数不允许旧集簇逻辑复制槽所使用的插件,检查将会失败。请在执行 pg_upgrade 前对新集簇的设置作必要补充。

PostgreSQL 项目感谢 Vladimir Tokarev 和 Yu Kunpeng 报告此问题。(CVE-2026-6471)

关联记录 (4)
安全修复 contrib/pgcrypto 的 PGP 加密,使其能够检测不受支持的密码算法

变更

修复 contrib/pgcrypto 的 PGP 加密,使其能够检测不受支持的密码算法(Daniel Gustafsson)§ §

此前,如果 OpenSSL 拒绝所请求的密码算法(例如,因为它正以 FIPS 模式运行,或尚未加载 legacy provider),pgcrypto 无法发现这一失败,只会将未经加密的块与明文进行异或,使这种“加密”轻易即可破解。这通常发生在已弃用或不符合 FIPS 的密码算法上(cipher-algo=blowfish/bf、twofish、cast5 或 3des)。

默认情况下,pgcrypto 现在将无法解密以这种方式受影响的任何消息。为了能够取回这类数据,现新增选项 ignore-cipher-failure,用于 pgp_pub_decrypt() 和 pgp_sym_decrypt()。设置 ignore-cipher-failure=1 将恢复此前的行为,从而可以移除有缺陷的加密封装:

pgp_sym_decrypt(encrypted_column, any key, 'ignore-cipher-failure=1')

识别出受影响的消息并移除其封装后,即可使用现代算法重新加密。不过,OpenSSL 的行为必须与创建这些有缺陷消息时相同:如果不受支持的算法集合并不相同,这种方法将无法奏效。请参阅 ignore-cipher-failure 的文档。

PostgreSQL 项目感谢 Shishir Sharma 报告此问题。(CVE-2026-14663)

关联记录 (4)
安全修复 psql:跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据,即使 COPY 在发送 PGRES_COPY_IN 前失败

变更

修复 psql:跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据,即使 COPY 在发送 PGRES_COPY_IN 前失败(Tom Lane)§ §

此前,如果 COPY 命令在开始执行时失败(例如目标表不存在), psql 无法意识到这一点,会继续把随后的内联数据当作 SQL 命令读取。即使在最好的情况下这也是错误的,在最坏的情况下则会构成 SQL 注入风险。现在,psql 会识别语法有效的 COPY ... FROM STDIN 命令,并在服务器没有返回 PGRES_COPY_IN 时自行跳过数据。

此修复不太可能影响生产 SQL 脚本,但测试脚本可能会有意测试失败的 COPY ... FROM STDIN 命令。此类脚本需要在每条这样的命令后增加一行 \. 数据终止符。

PostgreSQL 项目感谢 Alexander Lakhin 报告此问题。(CVE-2026-6464)

关联记录 (4)
安全交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型

变更

交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型(Robert Haas)§

EXECUTE 和 FETCH 使用两个 portal:外层 portal 用于语句本身,内层 portal 则代其运行实际查询。此前可以使两个 portal 声明的行类型不一致,从而导致服务器内存泄露和任意代码执行。

PostgreSQL 项目感谢 Ben Morris(与 Claude 和 Anthropic Research 协作)和 Peter Geoghegan 报告此问题。(CVE-2026-16239)

关联记录 (4)
安全修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入

变更

修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入(Tom Lane)§

这很容易导致服务器崩溃,并且已有报告表明可利用该问题执行任意代码。

PostgreSQL 项目感谢 Hcamael、Amjad Shahzad、AntAISecurityLab 的 Tan Zhen、Tomer Fichman、Zheng Yu、Amy Burnett(OpenAI Codex Security)、Rick de Jager、Heewon Song、Sylvie Mayer、Aleksander Alekseev 和 Hillai Ben Sasson 报告此问题。(CVE-2026-14669)

关联记录 (9)
安全修复正则表达式匹配/拆分函数中的缓冲区越界写入

变更

修复正则表达式匹配/拆分函数中的缓冲区越界写入(Masahiko Sawada)§

如果传入编码无效的数据,这些函数可能会在转换缓冲区末尾之外写入数据。

PostgreSQL 项目感谢 Francesco Verardi 报告此问题。(CVE-2026-14664)

关联记录 (4)
安全增强 ascii() 函数对无效输入的防护

变更

增强 ascii() 函数对无效输入的防护(Michael Paquier)§

通过提供编码无效的输入,可以诱使此函数读取并返回几个不应访问的数据字节。在启用断言的构建中,还可能触发其断言。

PostgreSQL 项目感谢 Hcamael 报告此问题。(CVE-2026-18024)

关联记录 (4)
安全修复 pg_restore_attribute_stats() 对多范围类型的处理

变更

修复 pg_restore_attribute_stats() 对多范围类型的处理(OpenAI Security Research Team)

pg_restore_attribute_stats() 将多范围类型当作其底层范围类型处理。对于边界直方图,这是正确的,但对于其他所有统计信息类型都是错误的。

PostgreSQL 项目感谢 Amy Burnett(OpenAI Codex Security)报告此问题。(CVE-2026-16238)

关联记录 (4)
安全让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型

变更

让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型(Tom Lane)§

对于所有使用此估算器的内置操作符,这一预期都会成立,但恶意构造的操作符可能违反该预期,从而导致崩溃或服务器内存泄露。

PostgreSQL 项目感谢 Hcamael 报告此问题。(CVE-2026-14668)

关联记录 (4)
安全增强 tsvector 和 tsquery 代码对超长值的防护(包括单个词位以及向量/查询的总长度)

变更

增强 tsvector 和 tsquery 代码对超长值的防护(包括单个词位以及向量/查询的总长度)(Tom Lane)§ §

文档所述限制并未在所有代码路径上强制执行。

PostgreSQL 项目感谢 Yuhang Wu、Zhenpeng Lin、Zheng Yu 和 Hcamael 报告这些问题。(CVE-2026-14662)

关联记录 (4)
安全修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题

变更

修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题(Tom Lane)§ §

特别是,服务器对聚合函数参数数量的实际限制是 FUNC_MAX_ARGS - 1,但解析器未强制执行这一限制,给后续处理带来隐患。

PostgreSQL 项目感谢 Zheng Yu、ylwangtju 和 Masahiko Sawada 报告这些问题。(CVE-2026-14679)

关联记录 (4)
安全拒绝从 SQL 调用接受或返回 internal 类型的函数

变更

拒绝从 SQL 调用接受或返回 internal 类型的函数(Tom Lane)§ §

现有防护已被证明不足,因此添加更明确的检查。

PostgreSQL 项目感谢 Amy Burnett(OpenAI Codex Security)报告此问题。(CVE-2026-14680)

关联记录 (4)
安全在 ALTER TABLE 重建扩展统计信息对象时保留其所有权

变更

在 ALTER TABLE 重建扩展统计信息对象时保留其所有权(Masahiko Sawada)§

此前,执行 ALTER TABLE 的角色会取得这类对象的所有权,这并不合适。

PostgreSQL 项目感谢 Noah Misch 报告此问题。(CVE-2026-6469)

关联记录 (4)
安全逆解析 EXTRACT() 函数调用时,按需为字段名加引号

变更

逆解析 EXTRACT() 函数调用时,按需为字段名加引号(Nathan Bossart)§

解析器接受 EXTRACT() 中的任意字符串字面量作为字段名,并将验证推迟到执行阶段。如果该调用被存储后再逆解析(例如在 pg_dump 期间),字符串正文会被原样输出,从而造成 SQL 注入。

PostgreSQL 项目感谢 Ben Morris(与 Claude 和 Anthropic Research 协作)报告此问题。(CVE-2026-15741)

关联记录 (4)
安全在此前漏检的场景中检查数据类型的 USAGE 权限

变更

在此前漏检的场景中检查数据类型的 USAGE 权限(Nathan Bossart)§ § §

CREATE TYPE AS RANGE、ALTER TABLE OF 以及创建存储表达式的命令此前都没有执行这一检查。这些遗漏使没有 USAGE 权限的角色仍能创建依赖该类型的对象,并可能阻止类型所有者日后更改该类型。

PostgreSQL 项目感谢 Jingzhou Fu 报告此问题。(CVE-2026-6470)

关联记录 (4)
安全角色发生变更后使依赖角色的缓存计划失效

变更

角色发生变更后使依赖角色的缓存计划失效(Ilya Staroverov、Shinya Kato、Nathan Bossart)§

角色成员关系、角色属性和数据库所有权的变更可能影响行级安全策略的预期行为,但此前系统仍会继续使用按旧状态生成的缓存计划。

PostgreSQL 项目感谢 Ilya Staroverov 和 Shinya Kato 报告此问题。(CVE-2026-14666)

关联记录 (4)
安全在直接 SSL 连接之后拒绝 GSSEncRequest

变更

在直接 SSL 连接之后拒绝 GSSEncRequest(Michael Paquier)

建立 TLS 加密连接后,服务器仍会接受 GSSAPI 加密请求。如果请求成功,连接仍会使用 TLS 加密,但在 pg_hba 规则看来却像 GSS 连接。因此,意图禁止 TLS 的 pg_hba 策略无法得到正确执行。

PostgreSQL 项目感谢 p4p3r 报告此问题。(CVE-2026-14681)

关联记录 (4)
安全让模拟的 SCRAM secret 更可信

变更

让模拟的 SCRAM secret 更可信(Nathan Bossart)§

如果尝试以 SCRAM 登录不存在或没有 SCRAM secret 的角色,系统会生成一个模拟 secret 并照常执行认证握手,以免向攻击者泄露这些事实。但模拟 secret 使用固定的迭代次数,这本身可能形成可观察的响应差异。现改用配置设置 scram_iterations,使模拟 secret 更接近该安装中的真实 secret。

PostgreSQL 项目感谢 Radim Marek 报告此问题。(CVE-2026-14672)

关联记录 (4)
安全修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入

变更

修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入(Michael Paquier)§

ecpg 未经检查便假定任何 bytea 值都必须以 \x 开头。有缺陷或恶意的服务器可能发送短于 2 字节的字符串,从而破坏应用程序内存。

PostgreSQL 项目感谢 ylwangtju 报告此问题。(CVE-2026-16241)

关联记录 (4)
安全不要对 psql 的 \unrestrict 命令参数执行反引号扩展

变更

不要对 psql 的 \unrestrict 命令参数执行反引号扩展(Nathan Bossart)§

CVE-2025-8714 修复中的这一疏漏,使恶意服务器能够把 shell 命令注入纯文本转储输出,并在恢复时于运行 psql 的机器上执行;这正是 CVE-2025-8714 意图防止的场景。

PostgreSQL 项目感谢 Lucas Velgus、Filip Janus 和 Daniel Bakker 报告此问题。(CVE-2026-18408)

关联记录 (4)
安全移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设

变更

移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设(Tom Lane)§

由于该数组可能同时包含输入和输出参数的条目,其长度完全可能超过 FUNC_MAX_ARGS(该值只限制输入参数)。即使并非如此, pg_dump 也不能假定服务器构建时使用的 FUNC_MAX_ARGS 值与自身相同。越界写入会导致 pg_dump 内部的内存被破坏。

PostgreSQL 项目感谢 Masahiko Sawada 报告此问题。(CVE-2026-19385)

关联记录 (4)
安全增强 PL/Perl 对 “tied” Perl 数组和 hash 的防护

变更

增强 PL/Perl 对 “tied” Perl 数组和 hash 的防护(Tom Lane)§

行为不符合常规的 tied 对象可能导致内存覆盖,或构造出损坏的结果数组(这很可能在之后引发问题)。

PostgreSQL 项目感谢 Hcamael 报告此问题。(CVE-2026-14670)

关联记录 (4)
安全修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出

变更

修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出(Heikki Linnakangas)§

该问题与 CVE-2026-6473 属于同一类型,只是出现在代码的不同部分,并采用相同方式修复。

PostgreSQL 项目感谢 Tulya Project(Team Dhiutsa、Bitecope Technologies Private Ltd)报告此问题。(CVE-2026-14677)

关联记录 (4)
安全确保 contrib/amcheck 函数在执行索引表达式前限制 search_path

变更

确保 contrib/amcheck 函数在执行索引表达式前限制 search_path(Noah Misch)§

由于 amcheck 会以相关表所有者的身份运行这些索引表达式,调用者可能劫持依赖 search_path 的函数,以表所有者身份运行任意代码。默认情况下这并非漏洞,因为只有超级用户可以调用 amcheck 函数;但如果将该权限授予其他用户,造成的风险会比文档所述更大。

PostgreSQL 项目感谢 Yuelin Wang 和 Jacob Brazeal 报告此问题。(CVE-2026-14673)

关联记录 (4)
安全修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出

变更

修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出(Nathan Bossart)§

向这些函数传入很大的代价值可能引发整数溢出,从而产生无意义的结果,甚至在某些情况下导致越界写入。

PostgreSQL 项目感谢 Ben Morris(与 Claude 和 Anthropic Research 协作)报告此问题。(CVE-2026-15742)

关联记录 (4)
安全修复 contrib/pg_stat_statements 中的缓冲区越界写入

变更

修复 contrib/pg_stat_statements 中的缓冲区越界写入(Álvaro Herrera)

查询规范化过程未准确计算规范化字符串所需的空间。

PostgreSQL 项目感谢 Sajeeb Lohani(与 TrendAI Zero Day Initiative 合作)和 Yuelin Wang 报告此问题。(CVE-2026-14676)

关联记录 (4)
安全修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误

变更

修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误(Heikki Linnakangas)§

此错误会导致缓冲区越界读取,通常造成不佳的页面分裂决策;在极少数情况下也可能导致崩溃。

PostgreSQL 项目感谢 Mehmet D. Ince 报告此问题。(CVE-2026-14678)

关联记录 (4)
安全移除 contrib/refint 中的计划缓存

变更

移除 contrib/refint 中的计划缓存(Ayush Tiwari)§

这种缓存行为存在几个严重缺陷,尤其是 check_foreign_key() 会把新键值嵌入其级联 UPDATE 查询,因此缓存计划会重复使用最初所需的值,而不是当前应使用的键值。最简单的解决办法是移除该缓存。

PostgreSQL 项目感谢 Hcamael 报告此问题。(CVE-2026-14671)

关联记录 (4)
问题修复修复重放由较旧小版本生成的 WAL 时发生的自死锁

变更

修复重放由较旧小版本生成的 WAL 时发生的自死锁(Andrey Borodin)§

该错误由上一批小版本发布引入。在某些场景中,它会使跟随较旧小版本主库的备库卡住。

关联记录 (2)
问题修复修复重新扫描异步 Append 计划节点时异步读取处理不当的问题

变更

修复重新扫描异步 Append 计划节点时异步读取处理不当的问题(Alexander Korotkov、Gleb Kashkin、Etsuro Fujita)§

当上层计划节点尚未读取完整的 Append 输出就重新扫描 Append 时,需要丢弃所有已发送到外部服务器且尚未完成的请求(例如由 postgres_fdw 发送的请求)。此前,当子计划的参数发生变化,或者在下一次扫描中被分区剪枝丢弃时,这项操作未能正确完成。这可能导致错误的查询结果、无限循环或断言失败。

关联记录 (4)
问题修复修复 RANGE 分区表的分区剪枝错误

变更

修复 RANGE 分区表的分区剪枝错误(David Rowley)§

在某些情况下,本不应跳过的 DEFAULT 分区会被跳过,这可能导致查询结果中缺少行。

关联记录 (4)
问题修复修复规划器对 value IN (array) 表达式所做的可空性和严格性检查

变更

修复规划器对 value IN (array) 表达式所做的可空性和严格性检查(Ayush Tiwari)§

只有在已知数组操作数非空时,这些检查才应成功,但此前遗漏了这项考虑,因而可能应用本不该采用的优化。如果数组实际为空,这可能导致查询结果错误。

关联记录 (4)
问题修复修复错误的连接移除逻辑

变更

修复错误的连接移除逻辑(Matheus Alcantara、Richard Guo)§ §

在边缘情况下,来自外连接可空侧内部的常量输出值可能在应替换为 NULL 时未被替换。

关联记录 (2)
改进补上对容器数据类型(数组、复合类型、范围类型)的等值比较是否支持 hash 运算的检查

变更

补上对容器数据类型(数组、复合类型、范围类型)的等值比较是否支持 hash 运算的检查(Andrei Lepikhov、Tom Lane)§

规划器在决定可以使用基于 hash 的计划类型之前,必须验证容器组成类型是否可进行 hash 运算。此前有些地方遗漏了这一步,导致执行时出现 “could not identify a hash function” 错误。

关联记录 (4)
问题修复修复 COUNT 窗口函数的错误优化:这些函数带有 EXCLUDE 子句或缺少 ORDER BY

变更

修复 COUNT 窗口函数的错误优化:这些函数带有 EXCLUDE 子句或缺少 ORDER BY(Chengpeng Yan、David Rowley)§

这些窗口函数在不应被视为单调函数的情况下被当成单调函数处理,因而可能计算出错误答案。

关联记录 (3)
问题修复修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题

变更

修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题(Alberto Piai)§

关联记录 (4)
改进禁止将规则重命名为 _RETURN

变更

禁止将规则重命名为 _RETURN(Tom Lane)§

该名称保留给视图的 ON SELECT 规则,但 ALTER RULE 允许将其他规则重命名为 _RETURN,从而引发后续问题。

关联记录 (4)
问题修复修复 DROP OWNED BY 中角色成员资格授权未释放锁的问题

变更

修复 DROP OWNED BY 中角色成员资格授权未释放锁的问题(Jeff Davis)§

这一疏漏会产生警告消息,随后成员资格授权上的锁会一直保留到事务结束。

关联记录 (2)
问题修复修复 EXPLAIN 在逆解析 SQL/JSON 聚合时失败的问题

变更

修复 EXPLAIN 在逆解析 SQL/JSON 聚合时失败的问题(Richard Guo)§

某些计划结构会导致 “invalid JsonConstructorExpr underlying node type” 错误。

关联记录 (2)
问题修复修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题

变更

修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题(Nitin Motiani)§

在 REINDEX CONCURRENTLY 期间创建的临时索引副本被错误地标记为强制立即满足唯一性,导致虚假的约束违例报告。

关联记录 (4)
问题修复修复 to_date() 对本地化月份名和星期名的匹配

变更

修复 to_date() 对本地化月份名和星期名的匹配(Heikki Linnakangas)§

当大小写折叠改变字符串的字节长度时,匹配逻辑会出现错误行为。

关联记录 (4)
问题修复修复谚文 U+11A7 (TBASE) 的 NFC 重组错误

变更

修复谚文 U+11A7 (TBASE) 的 NFC 重组错误(Diego Frias、Michael Paquier)§

该字符被当作有效的 T 音节,但实际上并非如此,因此在规范化过程中被悄然吞掉。

关联记录 (4)
改进避免不区分大小写的 synonym 词典可能截断输出词位

变更

避免不区分大小写的 synonym 词典可能截断输出词位(Jeff Davis)§

如果折叠为小写增加了词位的字节长度,输出时会错误地将其截断为原来的字节长度。

关联记录 (4)
问题修复修复 hash_record_extended() 中的拼写错误

变更

修复 hash_record_extended() 中的拼写错误(Man Zeng)§

代码未初始化传给 FunctionCallInvoke() 的第二个 isnull 参数。对于现有的核心内置扩展 hash 支持函数,这不会造成影响,因为它们不会检查该值。不过,如果扩展提供的 hash 函数检查 PG_ARGISNULL(1),就可能受到影响。

关联记录 (4)
问题修复修复 pg_get_publication_tables() 在可发布表被并发删除时失败的问题

变更

修复 pg_get_publication_tables() 在可发布表被并发删除时失败的问题(Bharath Rupireddy)§

关联记录 (2)
问题修复防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃

变更

防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃(Robert Haas)§

关联记录 (4)
改进使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误

变更

使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误(Ewan Young)§

特别是,以八进制形式(\nnn)报告不是可打印 ASCII 字符的权重字符,就像 charout() 对它们的呈现方式一样。这可以避免生成编码无效的错误消息。

关联记录 (4)
问题修复修复 xpath() 对命名空间节点处理不当的问题

变更

修复 xpath() 对命名空间节点处理不当的问题(Michael Paquier)§ §

此修复避免了意外的 “could not copy node” 错误。

关联记录 (4)
改进即使未提供任何变量,也将未定义的 jsonpath 变量作为错误处理

变更

即使未提供任何变量,也将未定义的 jsonpath 变量作为错误处理(Andrey Rachitskiy)§

jsonb 的 @? 和 @@ 操作符无法提供任何变量供其 jsonpath 表达式使用。此代码路径错误地将未知的 jsonpath 变量视为 JSON null,而没有按预期抛出错误。除了行为不符合预期之外,此错误还可能导致无上限的内存消耗。

关联记录 (2)
问题修复修复 IS JSON 或类似构造的参数属于字符串类别但缺少到 text 类型的类型转换时发生的空指针崩溃

变更

修复 IS JSON 或类似构造的参数属于字符串类别但缺少到 text 类型的类型转换时发生的空指针崩溃(Ayush Tiwari)§

PostgreSQL 核心中没有这种数据类型,但某些扩展类型可以触发该问题。

关联记录 (2)
改进避免将最小的 money 值除以 -1 时出现依赖机器的行为

变更

避免将最小的 money 值除以 -1 时出现依赖机器的行为(Andrey Rachitskiy)§

关联记录 (4)
问题修复修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃

变更

修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃(Tom Lane)§

关联记录 (4)
问题修复修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷

变更

修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷(Andrey Rachitskiy)§

关联记录 (4)
改进禁止访问其他会话的临时表

变更

禁止访问其他会话的临时表(Jim Jones、Daniil Davydov、Alexander Korotkov)§

某些代码路径未能阻止这种访问,导致在没有报错的情况下得到错误(不一致)的结果。

关联记录 (2)
改进在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟

变更

在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟(Paul Kim、Alexander Korotkov)§

常见值的倒排树可能很大,因此遗漏这项检查可能导致清理运行很长时间后才注意到中断。

关联记录 (4)
问题修复修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题

变更

修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题(Peter Geoghegan)§

此错误可能导致仅索引扫描计划输出损坏的数据。唯一受影响的核心操作符类是 GiST 的 range_ops,并且只有当范围列不是第一个索引列时才可能出错。

关联记录 (4)
改进确保批量扩展的表中新出现的最后一个块被及时加入其空闲空间映射

变更

确保批量扩展的表中新出现的最后一个块被及时加入其空闲空间映射(Jingtang Zhang)§

一个差一错误导致多块表扩展的最后一个块未在映射中标记为空闲。清理最终会纠正此问题,但在此之前这部分空间无法使用。

关联记录 (2)
改进创建目录时,容忍同一目录被并发创建

变更

创建目录时,容忍同一目录被并发创建(Andrew Dunstan、Tom Lane)§

关联记录 (4)
改进通过在任何被依赖对象上取得共享锁,防止创建悬空的对象依赖关系

变更

通过在任何被依赖对象上取得共享锁,防止创建悬空的对象依赖关系(Bertrand Drouvot)§ §

该共享锁会与任何删除被依赖对象的尝试冲突,从而消除之前存在的竞态条件。例如,如果一个会话删除一个在其看来为空的模式,同时另一个会话在该模式中创建函数,此前两个事务都可能提交,并留下无效的函数定义。现在,其中一个事务会失败。

关联记录 (4)
问题修复修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件

变更

修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件(Peter Geoghegan)§

检查最初为空的 B-树索引时可能漏掉冲突,因错误地允许冲突事务提交而破坏可串行性。

关联记录 (4)
问题修复修复 ProcSignalBarrier 代码中的竞态条件

变更

修复 ProcSignalBarrier 代码中的竞态条件(Masahiko Sawada)§

此错误可能导致进程卡住,通常发生在报告 “still waiting for backend with PID nnnn to accept ProcSignalBarrier” 之后。

关联记录 (3)
问题修复修复属于同一锁组的一组进程同时退出时的竞态条件

变更

修复属于同一锁组的一组进程同时退出时的竞态条件(Vlad Lesin)§ §

这些错误可能导致 PANIC 中止,并出现 “latch already owned” 等消息。普通并行查询通常不会出现此问题,因为领导者在看到其工作进程结束之前不会退出;但某些扩展会触发此问题。

关联记录 (4)
问题修复修复备库提升期间逻辑解码选择时间线时的竞态条件

变更

修复备库提升期间逻辑解码选择时间线时的竞态条件(Bertrand Drouvot)§ § §

在备库上执行的逻辑解码可能会失败,并出现 “requested WAL segment has already been removed” 错误。重试即可成功,因此没有永久性问题,但存在可用性隐患。

关联记录 (2)
改进避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串

变更

避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串(Chao Li)§

pg_stat_wal_receiver 视图应显示不含敏感数据的脱敏连接字符串。但复用现有 WAL 接收进程时,它会短暂显示完整字符串。

关联记录 (4)
问题修复使用运行时检查而不只是 Asserts,验证逻辑复制期间接收的元组具有正确的列数

变更

使用运行时检查而不只是 Asserts,验证逻辑复制期间接收的元组具有正确的列数(Varik Matevosyan)§

恶意或有缺陷的发布者可能发送列数不一致的数据。虽然尚未找到会因此产生严重不良后果的场景,但额外谨慎似乎是必要的。

关联记录 (4)
改进改进构造的复制命令中字符串参数的引用处理

变更

改进构造的复制命令中字符串参数的引用处理(Tom Lane)§

多处生成复制命令的代码在引用复制槽名称及其他需要插入命令的参数时不够谨慎。这可能导致命令出现意外的语法错误。原则上,精心构造的复制槽名称可能导致 SQL 注入;但这种场景在实践中似乎极不可能发生,因为只有高权限用户才能调用复制操作,而且他们没有理由使用来自不可信来源的槽名称。

关联记录 (4)
问题修复修复对空预备事务的逻辑解码

变更

修复对空预备事务的逻辑解码(Masahiko Sawada)§

未产生任何可解码更新的预备事务可能导致向输出插件发送 COMMIT/ROLLBACK PREPARED,而之前没有发送 PREPARE。对于内置订阅者,这会破坏复制,其他插件很可能也无法正确处理。

关联记录 (4)
问题修复修复备库提升后不记录 WAL 的序列损坏的问题

变更

修复备库提升后不记录 WAL 的序列损坏的问题(Fujii Masao)§

此前,如果在主库上创建了不记录 WAL 的序列并将其复制到备库,那么提升备库后访问该序列可能会失败,并出现 “bad magic number in sequence” 或相关错误。

关联记录 (3)
问题修复修复回退到归档后级联备库无法重新连接的问题

变更

修复回退到归档后级联备库无法重新连接的问题(Marco Nenciarini)§

回退到归档恢复后,级联备库可能因 “requested starting point ... is ahead of the WAL flush position” 而无法重新连接到其上游备库。

关联记录 (9)
改进避免删除临时复制槽时的竞态条件

变更

避免删除临时复制槽时的竞态条件(Zhijie Hou)§

释放槽的代码在释放复制槽后,还会对该槽的共享内存条目执行一些额外更新。这并不安全,因为另一个会话可能立即复用已删除槽的共享内存条目。对于临时槽,现跳过这些更新。

关联记录 (4)
问题修复修复逻辑复制表同步期间陈旧的进度报告

变更

修复逻辑复制表同步期间陈旧的进度报告(Shinya Kato)§

此前,即使数据复制已经完成,订阅者中的 pg_stat_progress_copy 视图仍会把最初的 COPY 操作显示为活动状态。在同步追上发布者之前,该陈旧条目会一直可见。

关联记录 (4)
改进在备份失败时清除基础备份进度

变更

在备份失败时清除基础备份进度(Chao Li)§ §

此前,失败后 pg_stat_progress_basebackup 视图会继续显示过时的进度条目,直到复制客户端断开连接。 pg_basebackup 通常会立即断开连接,但其他客户端可能不会。

关联记录 (3)
问题修复修复启用 track_functions 时并发删除 pgstats 条目可能导致的 PANIC

变更

修复启用 track_functions 时并发删除 pgstats 条目可能导致的 PANIC(Sami Imseih、Michael Paquier)§ § §

关联记录 (3)
改进未能为对应的共享 hash 表条目获取空间后,清理已损坏的本地 pgstats 条目

变更

未能为对应的共享 hash 表条目获取空间后,清理已损坏的本地 pgstats 条目(Niall Newman)§

如果不进行清理,下次使用该本地条目时会导致空指针解引用。

关联记录 (3)
问题修复在 PL/Perl 中,避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃

变更

在 PL/Perl 中,避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃(Xing Guo)§

关联记录 (4)
改进在 PL/Python 中,正确检查处理序列和映射对象时发生的错误

变更

在 PL/Python 中,正确检查处理序列和映射对象时发生的错误(Richard Guo)§

此前,损坏的对象或未处理的异常可能导致解引用 NULL 指针而崩溃。

关联记录 (4)
改进在 libpq 中,执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节

变更

在 libpq 中,执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节(Jacob Champion)§ § § §

这可以避免一种边界情况:libpq 或调用它的应用程序等待套接字上有更多数据到达,而实际上所有数据都已经到达。

关联记录 (4)
改进允许 libpq 接受超过 30000 字节的 ParameterDescription 消息

变更

允许 libpq 接受超过 30000 字节的 ParameterDescription 消息(Ning Sun)§

此前,libpq 的有效性启发规则并未把这种消息类型视为可能很长。此限制会导致参数超过 7498 个的预备查询失败;这种情况虽然不太可能出现,但系统确实支持。

关联记录 (4)
改进拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项

变更

拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项(Masashi Kamura)§

此前语法允许这种形式,但会生成有缺陷的 C 代码。现调整语法和文档,只允许一个首部项。

关联记录 (4)
改进使 psql 扩展对齐输出格式中的行宽保持一致

变更

使 psql 扩展对齐输出格式中的行宽保持一致(Pavel Stehule)§

当表的数据行比记录标题行窄时,将数据行加宽到与标题行一致,从而避免输出不美观。

关联记录 (4)
问题修复修复 psql 在 \l+ 中显示数据库大小时的权限检查

变更

修复 psql 在 \l+ 中显示数据库大小时的权限检查(Christoph Berg)§

底层服务器函数允许具有 pg_read_all_stats 权限的用户查看所有数据库的大小,即使他们没有 CONNECT 权限。但 psql 不知道这一规定,除非用户具有 CONNECT 权限,否则不会调用该函数。

关联记录 (4)
问题修复修复 psql 对 \df 的 TAB 补全,使其也涵盖过程

变更

修复 psql 对 \df 的 TAB 补全,使其也涵盖过程(Erik Wienhold)§

关联记录 (4)
问题修复修复 pgbench 中的线程安全性缺陷

变更

修复 pgbench 中的线程安全性缺陷(Fujii Masao)§

当 pgbench 使用多个线程和 --verbose-errors 选项运行时,不同线程可能尝试使用同一个缓冲区构造错误消息,导致日志输出损坏。

关联记录 (3)
改进对 pg_recvlogical 输出文件采用源集簇的文件组读权限

变更

对 pg_recvlogical 输出文件采用源集簇的文件组读权限(Fujii Masao)§

文档声称 pg_recvlogical 会这样做,但它从未实际启用组读权限。

关联记录 (4)
改进在 contrib/amcheck 中,正确处理短头部 varlena Datum

变更

在 contrib/amcheck 中,正确处理短头部 varlena Datum(Andrey Borodin)§

此错误可能导致验证 B-树索引时执行多余工作,但似乎没有造成更严重的后果。

关联记录 (4)
问题修复在 contrib/btree_gist 中,修复 NaN 在 float4 和 float8 操作符类中的处理

变更

在 contrib/btree_gist 中,修复 NaN 在 float4 和 float8 操作符类中的处理(Bill Kim、Tom Lane)§

比较以及 GiST penalty 和 distance 函数都没有考虑 NaN,因而在遇到该值时会给出错误结果。建议在安装此更新后对 float 列上的 btree_gist 索引重建索引,前提是这些列中可能存在 NaN 条目。

关联记录 (4)
问题修复在 contrib/btree_gist 中,修复使用不等操作符的搜索

变更

在 contrib/btree_gist 中,修复使用不等操作符的搜索(Ayush Tiwari)§

对于变长数据类型,扫描非叶索引页的代码使用了错误的比较函数,导致结果错误并可能引发崩溃。

关联记录 (4)
问题修复修复以下模块中缺少防护的递归和循环:contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython

变更

修复以下模块中缺少防护的递归和循环:contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython(Aleksander Alekseev)§ §

防止处理深度嵌套的 jsonb 值时发生栈溢出,并允许中断尝试解引用 Perl 对象引用的环状链时造成的无限循环。

关联记录 (4)
问题修复修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题

变更

修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题(Man Zeng)§

此疏漏会导致 “resource was not closed: cache pg_statistic” 之类的警告。

关联记录 (4)
问题修复在 contrib/ltree 中,修复比较时的整数溢出

变更

在 contrib/ltree 中,修复比较时的整数溢出(Ayush Tiwari)§

包含超过约 14,653 个标签的 ltree 值会因溢出而得到错误的比较结果。如果 B-树索引包含这类值,它很可能已经损坏,应在安装此更新后重建索引。

关联记录 (4)
问题修复修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入

变更

修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入(Michael Paquier)§

尝试更改偏移号等于 MaxHeapTuplesPerPage 的 TID 时,会在已分配数组的末尾之外写入一个字节,可能导致服务器崩溃。

关联记录 (4)
改进在 contrib/pg_surgery 中,避免包含超过 64K 个元素的 TID 数组导致无限循环

变更

在 contrib/pg_surgery 中,避免包含超过 64K 个元素的 TID 数组导致无限循环(Andrey Rachitskiy)§

关联记录 (4)
安全避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针

变更

避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针(Ayush Tiwari)§

在更新时级联的情况下,被引用列的 null 值会导致崩溃。这是 CVE-2026-6637 修复中的一项疏漏,但修复之前的代码也并不真正正确。

关联记录 (4)
问题修复修复 contrib/seg,使其正确打印带有 ~ 确定性指示符的线段

变更

修复 contrib/seg,使其正确打印带有 ~ 确定性指示符的线段(Ewan Young)§

由于拼写错误,seg_out() 不会打印附加在线段上界的 ~ 确定性指示符。更糟的是,如果下界带有 ~ 而上界没有指示符,上界会完全不被打印,从而错误地将该值转换为开区间。

关联记录 (4)
问题修复修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃

变更

修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃(Andrey Chernyy、Michael Paquier)§

关联记录 (4)
改进支持使用 Visual Studio 2026 构建 PostgreSQL

变更

支持使用 Visual Studio 2026 构建 PostgreSQL(Andrew Dunstan)§

关联记录 (2)
改进支持使用 OpenSSL 4 构建 PostgreSQL

变更

支持使用 OpenSSL 4 构建 PostgreSQL(Daniel Gustafsson)§

关联记录 (4)
改进将时区数据文件更新到 tzdata 2026c 发布版本

变更

将时区数据文件更新到 tzdata 2026c 发布版本(Tom Lane)§

Alberta(America/Edmonton)将从 2026 年 11 月开始全年采用 UTC-06(实际上就是永久 DST)。本次发布假定其 TZ 缩写从那时起为 CST。这看起来可能会改变,但尚不清楚会使用什么新缩写。

Morocco(Africa/Casablanca)将从 2026-09-20 起改为永久 UTC+00,不再进行夏令时转换。

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

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

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

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