pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2026-08-13
18.6 受支持版本维护截止 2030-11-14
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2026-6637 避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针 | 8.8 | 18.4 |
| CVE-2026-6473 修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出 | 8.8 | 18.4 |
| CVE-2026-19385 移除 pg_dump 关于 pg_proc.protrftypes 不可能包含超过 FUNC_MAX_ARGS 个条目的假设 | 8.8 | 18.6 |
| CVE-2026-18408 不要对 psql 的 \unrestrict 命令参数执行反引号扩展 | 8.8 | 18.6 |
| CVE-2026-16239 交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型 | 8.8 | 18.6 |
| CVE-2026-16238 修复 pg_restore_attribute_stats() 对多范围类型的处理 | 8.8 | 18.6 |
| CVE-2026-15742 修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出 | 8.8 | 18.6 |
| CVE-2026-15741 逆解析 EXTRACT() 函数调用时,按需为字段名加引号 | 8.8 | 18.6 |
| CVE-2026-14680 拒绝从 SQL 调用接受或返回 internal 类型的函数 | 8.8 | 18.6 |
| CVE-2026-14677 修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出 | 8.8 | 18.6 |
| CVE-2026-14676 修复 contrib/pg_stat_statements 中的缓冲区越界写入 | 8.8 | 18.6 |
| CVE-2026-14671 移除 contrib/refint 中的计划缓存 | 8.8 | 18.6 |
| CVE-2026-14670 增强 PL/Perl 对 “tied” Perl 数组和 hash 的防护 | 8.8 | 18.6 |
| CVE-2026-14669 修复 to_char() 处理过长时区缩写时发生的缓冲区越界写入 | 8.8 | 18.6 |
| CVE-2026-14664 修复正则表达式匹配/拆分函数中的缓冲区越界写入 | 8.8 | 18.6 |
| CVE-2026-14662 增强 tsvector 和 tsquery 代码对超长值的防护(包括单个词位以及向量/查询的总长度) | 8.8 | 18.6 |
| CVE-2025-8714 不要对 psql 的 \unrestrict 命令参数执行反引号扩展 | 8.8 | |
| CVE-2026-14679 修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题 | 8.2 | 18.6 |
| CVE-2026-6464 修复 psql:跳过脚本中的 COPY ... FROM STDIN 命令后面的内联数据,即使 COPY 在发送 PGRES_COPY_IN 前失败 | 8.1 | 18.6 |
| CVE-2026-14668 让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型 | 8.1 | 18.6 |
| CVE-2026-6471 将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合 | 7.2 | 18.6 |
| CVE-2026-14663 修复 contrib/pgcrypto 的 PGP 加密,使其能够检测不受支持的密码算法 | 6.5 | 18.6 |
| CVE-2026-14672 让模拟的 SCRAM secret 更可信 | 5.3 | 18.6 |
| CVE-2026-6470 在此前漏检的场景中检查数据类型的 USAGE 权限 | 4.3 | 18.6 |
| CVE-2026-18024 增强 ascii() 函数对无效输入的防护 | 4.3 | 18.6 |
| CVE-2026-14678 修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误 | 4.3 | 18.6 |
| CVE-2026-14681 在直接 SSL 连接之后拒绝 GSSEncRequest | 4.2 | 18.6 |
| CVE-2026-14666 角色发生变更后使依赖角色的缓存计划失效 | 4.2 | 18.6 |
| CVE-2026-6469 在 ALTER TABLE 重建扩展统计信息对象时保留其所有权 | 3.8 | 18.6 |
| CVE-2026-16241 修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入 | 3.8 | 18.6 |
| CVE-2026-14673 确保 contrib/amcheck 函数在执行索引表达式前限制 search_path | 3.8 | 18.6 |
对于运行 18.X 的用户,不需要执行导出/恢复。
但是,下面前三个安全条目描述了更新后可能需要进行的配置调整和数据清理。
此外,如果存在任何 GIN 索引,请参见下面有关其所属表的 reltuples 值可能已损坏的变更条目。
此外,如果使用 contrib/btree_gist 或 contrib/ltree,可能需要为这些扩展创建的索引重建索引;请参见下面的相关条目。
此外,如果是从早于 18.2 的版本升级,请参见第 E.4 节。
变更
将逻辑解码输出插件限制为新服务器参数 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)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 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)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 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)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
交叉检查运行 EXECUTE 或 FETCH 的 portal 的输出行类型(Robert Haas)§
EXECUTE 和 FETCH 使用两个 portal:外层 portal 用于语句本身,内层 portal 则代其运行实际查询。此前可以使两个 portal 声明的行类型不一致,从而导致服务器内存泄露和任意代码执行。
PostgreSQL 项目感谢 Ben Morris(与 Claude 和 Anthropic Research 协作)和 Peter Geoghegan 报告此问题。(CVE-2026-16239)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 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)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复正则表达式匹配/拆分函数中的缓冲区越界写入(Masahiko Sawada)§
如果传入编码无效的数据,这些函数可能会在转换缓冲区末尾之外写入数据。
PostgreSQL 项目感谢 Francesco Verardi 报告此问题。(CVE-2026-14664)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
增强 ascii() 函数对无效输入的防护(Michael Paquier)§
通过提供编码无效的输入,可以诱使此函数读取并返回几个不应访问的数据字节。在启用断言的构建中,还可能触发其断言。
PostgreSQL 项目感谢 Hcamael 报告此问题。(CVE-2026-18024)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_restore_attribute_stats() 对多范围类型的处理(OpenAI Security Research Team)§ §
pg_restore_attribute_stats() 将多范围类型当作其底层范围类型处理。对于边界直方图,这是正确的,但对于其他所有统计信息类型都是错误的。
PostgreSQL 项目感谢 Amy Burnett(OpenAI Codex Security)报告此问题。(CVE-2026-16238)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 scalarineqsel() 检查预期为 tid 类型的常量是否确实属于该类型(Tom Lane)§
对于所有使用此估算器的内置操作符,这一预期都会成立,但恶意构造的操作符可能违反该预期,从而导致崩溃或服务器内存泄露。
PostgreSQL 项目感谢 Hcamael 报告此问题。(CVE-2026-14668)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
增强 tsvector 和 tsquery 代码对超长值的防护(包括单个词位以及向量/查询的总长度)(Tom Lane)§ §
文档所述限制并未在所有代码路径上强制执行。
PostgreSQL 项目感谢 Yuhang Wu、Zhenpeng Lin、Zheng Yu 和 Hcamael 报告这些问题。(CVE-2026-14662)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复多处错误地假定无需处理超过 FUNC_MAX_ARGS 个函数参数的问题(Tom Lane)§ §
特别是,服务器对聚合函数参数数量的实际限制是 FUNC_MAX_ARGS - 1,但解析器未强制执行这一限制,给后续处理带来隐患。
PostgreSQL 项目感谢 Zheng Yu、ylwangtju 和 Masahiko Sawada 报告这些问题。(CVE-2026-14679)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝从 SQL 调用接受或返回 internal 类型的函数(Tom Lane)§ §
现有防护已被证明不足,因此添加更明确的检查。
PostgreSQL 项目感谢 Amy Burnett(OpenAI Codex Security)报告此问题。(CVE-2026-14680)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 ALTER TABLE 重建扩展统计信息对象时保留其所有权(Masahiko Sawada)§
此前,执行 ALTER TABLE 的角色会取得这类对象的所有权,这并不合适。
PostgreSQL 项目感谢 Noah Misch 报告此问题。(CVE-2026-6469)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
逆解析 EXTRACT() 函数调用时,按需为字段名加引号(Nathan Bossart)§
解析器接受 EXTRACT() 中的任意字符串字面量作为字段名,并将验证推迟到执行阶段。如果该调用被存储后再逆解析(例如在 pg_dump 期间),字符串正文会被原样输出,从而造成 SQL 注入。
PostgreSQL 项目感谢 Ben Morris(与 Claude 和 Anthropic Research 协作)报告此问题。(CVE-2026-15741)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在此前漏检的场景中检查数据类型的 USAGE 权限(Nathan Bossart)§ § §
CREATE TYPE AS RANGE、ALTER TABLE OF 以及创建存储表达式的命令此前都没有执行这一检查。这些遗漏使没有 USAGE 权限的角色仍能创建依赖该类型的对象,并可能阻止类型所有者日后更改该类型。
PostgreSQL 项目感谢 Jingzhou Fu 报告此问题。(CVE-2026-6470)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
角色发生变更后使依赖角色的缓存计划失效(Ilya Staroverov、Shinya Kato、Nathan Bossart)§
角色成员关系、角色属性和数据库所有权的变更可能影响行级安全策略的预期行为,但此前系统仍会继续使用按旧状态生成的缓存计划。
PostgreSQL 项目感谢 Ilya Staroverov 和 Shinya Kato 报告此问题。(CVE-2026-14666)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在直接 SSL 连接之后拒绝 GSSEncRequest(Michael Paquier)§
建立 TLS 加密连接后,服务器仍会接受 GSSAPI 加密请求。如果请求成功,连接仍会使用 TLS 加密,但在 pg_hba 规则看来却像 GSS 连接。因此,意图禁止 TLS 的 pg_hba 策略无法得到正确执行。
PostgreSQL 项目感谢 p4p3r 报告此问题。(CVE-2026-14681)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让模拟的 SCRAM secret 更可信(Nathan Bossart)§
如果尝试以 SCRAM 登录不存在或没有 SCRAM secret 的角色,系统会生成一个模拟 secret 并照常执行认证握手,以免向攻击者泄露这些事实。但模拟 secret 使用固定的迭代次数,这本身可能形成可观察的响应差异。现改用配置设置 scram_iterations,使模拟 secret 更接近该安装中的真实 secret。
PostgreSQL 项目感谢 Radim Marek 报告此问题。(CVE-2026-14672)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 应用程序因接收服务器返回的无效 bytea 数据而发生的越界写入(Michael Paquier)§
ecpg 未经检查便假定任何 bytea 值都必须以 \x 开头。有缺陷或恶意的服务器可能发送短于 2 字节的字符串,从而破坏应用程序内存。
PostgreSQL 项目感谢 ylwangtju 报告此问题。(CVE-2026-16241)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
不要对 psql 的 \unrestrict 命令参数执行反引号扩展(Nathan Bossart)§
CVE-2025-8714 修复中的这一疏漏,使恶意服务器能够把 shell 命令注入纯文本转储输出,并在恢复时于运行 psql 的机器上执行;这正是 CVE-2025-8714 意图防止的场景。
PostgreSQL 项目感谢 Lucas Velgus、Filip Janus 和 Daniel Bakker 报告此问题。(CVE-2026-18408)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除 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)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
增强 PL/Perl 对 “tied” Perl 数组和 hash 的防护(Tom Lane)§
行为不符合常规的 tied 对象可能导致内存覆盖,或构造出损坏的结果数组(这很可能在之后引发问题)。
PostgreSQL 项目感谢 Hcamael 报告此问题。(CVE-2026-14670)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Perl 和 PL/Tcl 内存分配计算中的整数溢出(Heikki Linnakangas)§
该问题与 CVE-2026-6473 属于同一类型,只是出现在代码的不同部分,并采用相同方式修复。
PostgreSQL 项目感谢 Tulya Project(Team Dhiutsa、Bitecope Technologies Private Ltd)报告此问题。(CVE-2026-14677)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 contrib/amcheck 函数在执行索引表达式前限制 search_path(Noah Misch)§
由于 amcheck 会以相关表所有者的身份运行这些索引表达式,调用者可能劫持依赖 search_path 的函数,以表所有者身份运行任意代码。默认情况下这并非漏洞,因为只有超级用户可以调用 amcheck 函数;但如果将该权限授予其他用户,造成的风险会比文档所述更大。
PostgreSQL 项目感谢 Yuelin Wang 和 Jacob Brazeal 报告此问题。(CVE-2026-14673)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/fuzzystrmatch 的 levenshtein() 和 levenshtein_less_equal() 函数中的整数溢出(Nathan Bossart)§
向这些函数传入很大的代价值可能引发整数溢出,从而产生无意义的结果,甚至在某些情况下导致越界写入。
PostgreSQL 项目感谢 Ben Morris(与 Claude 和 Anthropic Research 协作)报告此问题。(CVE-2026-15742)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_stat_statements 中的缓冲区越界写入(Álvaro Herrera)§
查询规范化过程未准确计算规范化字符串所需的空间。
PostgreSQL 项目感谢 Sajeeb Lohani(与 TrendAI Zero Day Initiative 合作)和 Yuelin Wang 报告此问题。(CVE-2026-14676)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_trgm 的 GiST picksplit 函数中的数据类型错误(Heikki Linnakangas)§
此错误会导致缓冲区越界读取,通常造成不佳的页面分裂决策;在极少数情况下也可能导致崩溃。
PostgreSQL 项目感谢 Mehmet D. Ince 报告此问题。(CVE-2026-14678)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除 contrib/refint 中的计划缓存(Ayush Tiwari)§
这种缓存行为存在几个严重缺陷,尤其是 check_foreign_key() 会把新键值嵌入其级联 UPDATE 查询,因此缓存计划会重复使用最初所需的值,而不是当前应使用的键值。最简单的解决办法是移除该缓存。
PostgreSQL 项目感谢 Hcamael 报告此问题。(CVE-2026-14671)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保并行 GIN 索引构建正确更新表的 pg_class.reltuples 值(Jan Nidzwetzki、Tomas Vondra)§
并行工作进程可能会用未初始化的值报告其已处理行数,导致 reltuples 得到无效值,甚至 Infinity 或 NaN。此类值可能导致后续的自动清理和自动分析操作始终判定该表不需要处理。出现这种情况后不会自行恢复。需要手工执行 ANALYZE 命令或创建另一个索引,才能把 reltuples 重置为正确值。如果有任何带 GIN 索引的表,建议检查其 reltuples 条目是否合理。以下查询可能有助于此检查:
SELECT DISTINCT t.oid::regclass, t.reltuples FROM pg_class t JOIN pg_index i ON t.oid = i.indrelid JOIN pg_class ic ON i.indexrelid = ic.oid WHERE t.relhasindex AND ic.relam = 2742;
变更
修复重新扫描异步 Append 计划节点时异步读取处理不当的问题(Alexander Korotkov、Gleb Kashkin、Etsuro Fujita)§
当上层计划节点尚未读取完整的 Append 输出就重新扫描 Append 时,需要丢弃所有已发送到外部服务器且尚未完成的请求(例如由 postgres_fdw 发送的请求)。此前,当子计划的参数发生变化,或者在下一次扫描中被分区剪枝丢弃时,这项操作未能正确完成。这可能导致错误的查询结果、无限循环或断言失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 RANGE 分区表的分区剪枝错误(David Rowley)§
在某些情况下,本不应跳过的 DEFAULT 分区会被跳过,这可能导致查询结果中缺少行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 UPDATE 使用 RETURNING OLD 时,在带有 BEFORE UPDATE 触发器的表上漏掉并发更新的问题(Dean Rasheed)§
如果目标行被并发更新,那么在隔离级别 READ COMMITTED 下,任何 OLD 值在 RETURNING 中都应反映更新后的行。但如果存在触发器,返回的却是陈旧值(尽管触发器本身和最终输出行看到的是正确值)。
变更
修复存在多个连接键和大量 NULL 值时哈希连接的性能问题(David Rowley)§
NULL 键元组不应插入 hash 表,因为它们绝不会匹配任何其他元组。如果 NULL 位于非末尾连接列,代码就会错误处理;当大量输入包含 NULL 时,hash 表会因此严重膨胀。
变更
修复带圆括号的 OLD/NEW 在 RETURNING 表达式中的解析(Marko Grujic)§
诸如 (old).colname 和 (old).* 的表达式处理有误,实际上被转换成了 NEW 引用。
变更
修复规划器对 表达式所做的可空性和严格性检查(Ayush Tiwari)§value IN (array)
只有在已知数组操作数非空时,这些检查才应成功,但此前遗漏了这项考虑,因而可能应用本不该采用的优化。如果数组实际为空,这可能导致查询结果错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
补上对容器数据类型(数组、复合类型、范围类型)的等值比较是否支持 hash 运算的检查(Andrei Lepikhov、Tom Lane)§
规划器在决定可以使用基于 hash 的计划类型之前,必须验证容器组成类型是否可进行 hash 运算。此前有些地方遗漏了这一步,导致执行时出现 “could not identify a hash function” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免将 WHERE 子句下推越过使用不同等价规则的分组步骤(Richard Guo)§
对采用非确定性排序规则分组的分组列所作的测试,只有在使用同一排序规则进行比较时才能安全地下推。否则,它可能过滤掉一些本应被分组合并的行。
变更
修复 COUNT 窗口函数的错误优化:这些函数带有 EXCLUDE 子句或缺少 ORDER BY(Chengpeng Yan、David Rowley)§
这些窗口函数在不应被视为单调函数的情况下被当成单调函数处理,因而可能计算出错误答案。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 “cache lookup failed for collation 0” 错误;该错误发生在规划器为 "char" 类型的列查找统计信息时(Feng Wu)§
变更
修复 ALTER COLUMN ... DROP EXPRESSION 在存在多级分区时无法正常工作的问题(Alberto Piai)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复为排他约束索引附加分区的问题(Japin Li)§
值得注意的是,这一疏漏破坏了分区排他约束的导出/恢复。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止通过ALTER CONSTRAINT对分区的NOT NULL约束设置NO INHERIT。(Andreas Karlsson)§
分区表上的 NOT NULL 约束应由所有分区继承,因此不得标记为 NO INHERIT。创建约束时正确执行了此规则,但 ALTER TABLE ... ALTER CONSTRAINT 未执行此规则。
变更
禁止将规则重命名为 _RETURN(Tom Lane)§
该名称保留给视图的 ON SELECT 规则,但 ALTER RULE 允许将其他规则重命名为 _RETURN,从而引发后续问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 DROP OWNED BY 中角色成员资格授权未释放锁的问题(Jeff Davis)§
这一疏漏会产生警告消息,随后成员资格授权上的锁会一直保留到事务结束。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 EXPLAIN 在逆解析 SQL/JSON 聚合时失败的问题(Richard Guo)§
某些计划结构会导致 “invalid JsonConstructorExpr underlying node type” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 REINDEX CONCURRENTLY 与可延迟唯一约束一起使用时的问题(Nitin Motiani)§
在 REINDEX CONCURRENTLY 期间创建的临时索引副本被错误地标记为强制立即满足唯一性,导致虚假的约束违例报告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复精确匹配模式的 LIKE/正则表达式索引扫描优化(Jelte Fennema-Nio)§
非确定性排序规则下的 LIKE 重构意外破坏了以下优化:当索引排序规则与表达式排序规则不匹配时,把 LIKE 或正则表达式的精确匹配模式转换成等值索引条件。不仅如此,这还使 psql 的 \d 命令慢了很多。tablename
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更正希腊语词尾 sigma 的大小写折叠规则(Jeff Davis)§
如果字符串前面只有 Case Ignorable 字符,则不要将其视为词尾 sigma。这仅影响内置 pg_unicode_fast 区域设置。
变更
修复谚文 U+11A7 (TBASE) 的 NFC 重组错误(Diego Frias、Michael Paquier)§
该字符被当作有效的 T 音节,但实际上并非如此,因此在规范化过程中被悄然吞掉。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免不区分大小写的 synonym 词典可能截断输出词位(Jeff Davis)§
如果折叠为小写增加了词位的字节长度,输出时会错误地将其截断为原来的字节长度。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
增强大小写转换逻辑对截断 UTF-8 字符的防护(Jeff Davis)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 hash_record_extended() 中的拼写错误(Man Zeng)§
代码未初始化传给 FunctionCallInvoke() 的第二个 isnull 参数。对于现有的核心内置扩展 hash 支持函数,这不会造成影响,因为它们不会检查该值。不过,如果扩展提供的 hash 函数检查 PG_ARGISNULL(1),就可能受到影响。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_get_publication_tables() 在可发布表被并发删除时失败的问题(Bharath Rupireddy)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 satisfies_hash_partition() 在使用 VARIADIC NULL 时崩溃(Robert Haas)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 tsvector_filter() 及相关函数以更清晰且一致的方式报告无效权重错误(Ewan Young)§
特别是,以八进制形式(\)报告不是可打印 ASCII 字符的权重字符,就像 nnncharout() 对它们的呈现方式一样。这可以避免生成编码无效的错误消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝 uuidv7() 中超出范围的时间戳偏移值(Baji Shaik)§
偏移值不得大到使时间戳超出 v7 UUID 可表示的范围。此前会生成无效的 UUID 值。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 IS JSON 或类似构造的参数属于字符串类别但缺少到 text 类型的类型转换时发生的空指针崩溃(Ayush Tiwari)§
PostgreSQL 核心中没有这种数据类型,但某些扩展类型可以触发该问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 SQL/JSON 的 ON EMPTY / ON ERROR DEFAULT 值按正确的 typmod 进行强制转换(Ewan Young)§
例如,numeric 目标列所声明的精度和小数位数此前没有应用于默认值。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免将最小的 money 值除以 -1 时出现依赖机器的行为(Andrey Rachitskiy)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复为文本检索词典创建缓存条目的过程中发生内存不足后导致的崩溃(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复处理格式错误的 ispell/hunspell 词典文件时的内存安全缺陷(Andrey Rachitskiy)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止访问临时表期间出现 “no empty local buffer available” 错误(Melanie Plageman)§
限制读取流机制可使用的本地缓冲区数量。此前,较大的 effective_io_concurrency 值可能允许单个流用尽所有缓冲区,从而导致失败。
变更
修复自动清理处理数据库的顺序(Rustam Khamidullin)§
它无意中按评分从低到高处理数据库,而正确顺序应当相反。
变更
修复并行清理工作进程中的内存泄漏(Baji Shaik)§
并行工作进程每次生成进度报告时都会泄漏约 1kB 内存,浪费的内存在该工作进程的整个生命周期内不断累积。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在清理 GIN 索引倒排树期间响应查询取消并遵守清理延迟(Paul Kim、Alexander Korotkov)§
常见值的倒排树可能很大,因此遗漏这项检查可能导致清理运行很长时间后才注意到中断。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GiST 和 SP-GiST 仅索引扫描期间可能错误解码索引元组的问题(Peter Geoghegan)§
此错误可能导致仅索引扫描计划输出损坏的数据。唯一受影响的核心操作符类是 GiST 的 range_ops,并且只有当范围列不是第一个索引列时才可能出错。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保批量扩展的表中新出现的最后一个块被及时加入其空闲空间映射(Jingtang Zhang)§
一个差一错误导致多块表扩展的最后一个块未在映射中标记为空闲。清理最终会纠正此问题,但在此之前这部分空间无法使用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免事务中止期间资源清理中可能发生的双重释放或无限错误恢复循环(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
创建目录时,容忍同一目录被并发创建(Andrew Dunstan、Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 JIT 编译的元组解构代码,使其正确考虑虚拟生成列(David Rowley)§
变更
通过在任何被依赖对象上取得共享锁,防止创建悬空的对象依赖关系(Bertrand Drouvot)§ §
该共享锁会与任何删除被依赖对象的尝试冲突,从而消除之前存在的竞态条件。例如,如果一个会话删除一个在其看来为空的模式,同时另一个会话在该模式中创建函数,此前两个事务都可能提交,并留下无效的函数定义。现在,其中一个事务会失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SERIALIZABLE 隔离模式中冲突检测的竞态条件(Peter Geoghegan)§
检查最初为空的 B-树索引时可能漏掉冲突,因错误地允许冲突事务提交而破坏可串行性。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ProcSignalBarrier 代码中的竞态条件(Masahiko Sawada)§
此错误可能导致进程卡住,通常发生在报告 “still waiting for backend with PID nnnn to accept ProcSignalBarrier” 之后。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复属于同一锁组的一组进程同时退出时的竞态条件(Vlad Lesin)§ §
这些错误可能导致 PANIC 中止,并出现 “latch already owned” 等消息。普通并行查询通常不会出现此问题,因为领导者在看到其工作进程结束之前不会退出;但某些扩展会触发此问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在时间线跳转期间暴露 WAL 接收进程的完整连接字符串(Chao Li)§
pg_stat_wal_receiver 视图应显示不含敏感数据的脱敏连接字符串。但复用现有 WAL 接收进程时,它会短暂显示完整字符串。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使用运行时检查而不只是 Asserts,验证逻辑复制期间接收的元组具有正确的列数(Varik Matevosyan)§
恶意或有缺陷的发布者可能发送列数不一致的数据。虽然尚未找到会因此产生严重不良后果的场景,但额外谨慎似乎是必要的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进构造的复制命令中字符串参数的引用处理(Tom Lane)§
多处生成复制命令的代码在引用复制槽名称及其他需要插入命令的参数时不够谨慎。这可能导致命令出现意外的语法错误。原则上,精心构造的复制槽名称可能导致 SQL 注入;但这种场景在实践中似乎极不可能发生,因为只有高权限用户才能调用复制操作,而且他们没有理由使用来自不可信来源的槽名称。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对空预备事务的逻辑解码(Masahiko Sawada)§
未产生任何可解码更新的预备事务可能导致向输出插件发送 COMMIT/ROLLBACK PREPARED,而之前没有发送 PREPARE。对于内置订阅者,这会破坏复制,其他插件很可能也无法正确处理。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复备库提升后不记录 WAL 的序列损坏的问题(Fujii Masao)§
此前,如果在主库上创建了不记录 WAL 的序列并将其复制到备库,那么提升备库后访问该序列可能会失败,并出现 “bad magic number in sequence” 或相关错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复回退到归档后级联备库无法重新连接的问题(Marco Nenciarini)§
回退到归档恢复后,级联备库可能因 “requested starting point ... is ahead of the WAL flush position” 而无法重新连接到其上游备库。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止在 WAL 重放达到一致的数据库状态之前接受热备连接(Nikhil Sontakke)§
变更
不要尝试在备库本地清除 pg_database.dathasloginevt(Ayush Tiwari)§
事件触发器清理尝试在备库和主库上都执行该操作。它在备库上无法奏效,而且没有必要,因为重放主库的数据库变更很快就会修复该值。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免删除过时复制槽时的竞态条件(Xuneng Zhou)§
如果另一个会话立即复用了已删除复制槽的共享内存条目,可能会错误地执行解锁并输出不正确的日志消息。
变更
避免删除临时复制槽时的竞态条件(Zhijie Hou)§
释放槽的代码在释放复制槽后,还会对该槽的共享内存条目执行一些额外更新。这并不安全,因为另一个会话可能立即复用已删除槽的共享内存条目。对于临时槽,现跳过这些更新。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑复制表同步期间陈旧的进度报告(Shinya Kato)§
此前,即使数据复制已经完成,订阅者中的 pg_stat_progress_copy 视图仍会把最初的 COPY 操作显示为活动状态。在同步追上发布者之前,该陈旧条目会一直可见。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
此前,失败后 pg_stat_progress_basebackup 视图会继续显示过时的进度条目,直到复制客户端断开连接。 pg_basebackup 通常会立即断开连接,但其他客户端可能不会。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
未能为对应的共享 hash 表条目获取空间后,清理已损坏的本地 pgstats 条目(Niall Newman)§
如果不进行清理,下次使用该本地条目时会导致空指针解引用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免读取或写入失败后记录错误的 I/O 操作统计信息(Bertrand Drouvot)§
变更
在 PL/Perl 中,避免处理无效的 PostgreSQL::InServer::ARRAY 对象时因解引用 NULL 指针而崩溃(Xing Guo)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 PL/Python 中,正确检查处理序列和映射对象时发生的错误(Richard Guo)§
此前,损坏的对象或未处理的异常可能导致解引用 NULL 指针而崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 libpq 中,执行 pqReadData() 时始终排空 SSL 或 GSS 解密缓冲区中所有待处理的字节(Jacob Champion)§ § § §
这可以避免一种边界情况:libpq 或调用它的应用程序等待套接字上有更多数据到达,而实际上所有数据都已经到达。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 libpq 对内存不足情况的处理(Anthonin Bonnefoy)§
变更
修复 libpq 的跟踪功能,使其正确打印新式 BackendKeyData 和 CancelRequest 消息(Anthonin Bonnefoy)§
变更
允许 libpq 接受超过 30000 字节的 ParameterDescription 消息(Ning Sun)§
此前,libpq 的有效性启发规则并未把这种消息类型视为可能很长。此限制会导致参数超过 7498 个的预备查询失败;这种情况虽然不太可能出现,但系统确实支持。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 编译器中的空指针崩溃(Jehan-Guillaume de Rorthais)§
ecpg 无法处理这样的 DECLARE 段:其中含有嵌套在 struct 内的 union。
变更
拒绝 ecpg 的 GET/SET DESCRIPTOR 语句中存在多个描述符首部项(Masashi Kamura)§
此前语法允许这种形式,但会生成有缺陷的 C 代码。现调整语法和文档,只允许一个首部项。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 流水线模式下延迟错误的问题(Michael Paquier)§
在服务器响应 Sync 消息时报错的某些场景(例如延迟约束违例)中, psql 可能卡住或发生断言失败。
变更
使 psql 扩展对齐输出格式中的行宽保持一致(Pavel Stehule)§
当表的数据行比记录标题行窄时,将数据行加宽到与标题行一致,从而避免输出不美观。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
强制执行 psql 特殊变量 WATCH_INTERVAL 的原定上限(Sven Klemm、Daniel Gustafsson)§
如果给出的值过大,psql 会报告错误但仍应用该设置。
变更
修复 psql 在 \l+ 中显示数据库大小时的权限检查(Christoph Berg)§
底层服务器函数允许具有 pg_read_all_stats 权限的用户查看所有数据库的大小,即使他们没有 CONNECT 权限。但 psql 不知道这一规定,除非用户具有 CONNECT 权限,否则不会调用该函数。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 对 \df 的 TAB 补全,使其也涵盖过程(Erik Wienhold)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pgbench 中的线程安全性缺陷(Fujii Masao)§
当 pgbench 使用多个线程和 --verbose-errors 选项运行时,不同线程可能尝试使用同一个缓冲区构造错误消息,导致日志输出损坏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_combinebackup 中,防止源文件短于预期时出现无限循环(Peter Eisentraut)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_createsubscriber 出错后对发布端对象的清理(Nisha Moond)§
当 pg_createsubscriber 在创建逻辑复制对象后失败时,它应删除在发布端创建的发布和复制槽。某些错误情形未能这样做。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
对 pg_recvlogical 输出文件采用源集簇的文件组读权限(Fujii Masao)§
文档声称 pg_recvlogical 会这样做,但它从未实际启用组读权限。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 vacuumdb --missing-stats-only,使其忽略分区表达式索引(Baji Shaik)§
此前,vacuumdb 总是尝试对分区表执行 ANALYZE,但这毫无作用,因为分区索引本身从不创建统计信息,只有其叶子索引才创建。
变更
在 contrib/amcheck 中,修复未能报告 B-树元页的 allequalimage 标志损坏的问题(Chao Li)§
变更
在 contrib/amcheck 中,修复验证 GIN 索引时查询生命周期内的内存泄漏(Kirill Reshke)§
变更
在 contrib/amcheck 中,正确处理短头部 varlena Datum(Andrey Borodin)§
此错误可能导致验证 B-树索引时执行多余工作,但似乎没有造成更严重的后果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/btree_gist 中,修复 NaN 在 float4 和 float8 操作符类中的处理(Bill Kim、Tom Lane)§
比较以及 GiST penalty 和 distance 函数都没有考虑 NaN,因而在遇到该值时会给出错误结果。建议在安装此更新后对 float 列上的 btree_gist 索引重建索引,前提是这些列中可能存在 NaN 条目。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/btree_gist 中,修复构建 GiST 索引时对 bit/varbit 条目的排序(Tom Lane)§
bit 类型的值被当作 bytea 排序。由于类型的表示形式不同,虽然这不会导致明显失败,却会产生低效索引。安装此更新后,建议对 bit 列上的 btree_gist 索引重建索引。
变更
在 contrib/btree_gist 中,修复使用不等操作符的搜索(Ayush Tiwari)§
对于变长数据类型,扫描非叶索引页的代码使用了错误的比较函数,导致结果错误并可能引发崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝将 use_scram_passthrough 设置到 contrib/dblink 外部数据包装器上(Matheus Alcantara)§
此选项仅对外部服务器和用户映射有意义,但 dblink 错误地允许在 FDW 级别设置它(随后又忽略它)。
变更
修复以下模块中缺少防护的递归和循环:contrib/hstore_plperl、contrib/jsonb_plperl 和 contrib/jsonb_plpython(Aleksander Alekseev)§ §
防止处理深度嵌套的 jsonb 值时发生栈溢出,并允许中断尝试解引用 Perl 对象引用的环状链时造成的无限循环。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/intarray 中遗漏释放统计信息 catcache 条目的问题(Man Zeng)§
此疏漏会导致 “resource was not closed: cache pg_statistic” 之类的警告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/ltree 中,修复比较时的整数溢出(Ayush Tiwari)§
包含超过约 14,653 个标签的 ltree 值会因溢出而得到错误的比较结果。如果 B-树索引包含这类值,它很可能已经损坏,应在安装此更新后重建索引。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/pgcrypto 中,避免使用 OSSLCipher 对象期间遇到错误后因双重释放而崩溃(Yuelin Wang)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_prewarm 的 autoprewarm 工作进程中的越界访问(Matheus Alcantara)§
代码试图获取数组末尾之后一个位置的值,可能导致段错误。
变更
修复 contrib/pg_surgery 的 heap_force_kill 和 heap_force_freeze 函数中的数组越界写入(Michael Paquier)§
尝试更改偏移号等于 MaxHeapTuplesPerPage 的 TID 时,会在已分配数组的末尾之外写入一个字节,可能导致服务器崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/pg_surgery 中,避免包含超过 64K 个元素的 TID 数组导致无限循环(Andrey Rachitskiy)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 contrib/refint 的 check_foreign_key() 中解引用 NULL 指针(Ayush Tiwari)§
在更新时级联的情况下,被引用列的 null 值会导致崩溃。这是 CVE-2026-6637 修复中的一项疏漏,但修复之前的代码也并不真正正确。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/seg,使其正确打印带有 ~ 确定性指示符的线段(Ewan Young)§
由于拼写错误,seg_out() 不会打印附加在线段上界的 ~ 确定性指示符。更糟的是,如果下界带有 ~ 而上界没有指示符,上界会完全不被打印,从而错误地将该值转换为开区间。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/xml2 的 xpath_nodeset() 函数处理命名空间节点时的崩溃(Andrey Chernyy、Michael Paquier)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持使用 OpenSSL 4 构建 PostgreSQL(Daniel Gustafsson)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 2026c 发布版本(Tom Lane)§
Alberta(America/Edmonton)将从 2026 年 11 月开始全年采用 UTC-06(实际上就是永久 DST)。本次发布假定其 TZ 缩写从那时起为 CST。这看起来可能会改变,但尚不清楚会使用什么新缩写。
Morocco(Africa/Casablanca)将从 2026-09-20 起改为永久 UTC+00,不再进行夏令时转换。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。