pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
对比两个 PostgreSQL 大版本或小版本,查看沿途新增的功能、修复的问题与 CVE 安全记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
小版本更新
2025-09-25 2026-08-13
18.0 受支持版本维护截止 2030-11-14
18.6 受支持版本维护截止 2030-11-14
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2026-6637 防止 contrib/spi 中的 SQL 注入和缓冲区越界写 目标版本已修复 | 8.8高危 | 18.4 |
| CVE-2026-6477 将 PQfn() 标记为不安全,并避免在 libpq 内部使用它 目标版本已修复 | 8.8高危 | 18.4 |
| CVE-2026-6475 防止 pg_basebackup 和 pg_rewind 中的路径遍历 目标版本已修复 | 8.8高危 | 18.4 |
| CVE-2026-6473 修复内存分配计算中的多处整数溢出问题 目标版本已修复 | 8.8高危 | 18.4 |
| CVE-2026-2006 修复多字节字符长度验证不充分的问题 目标版本已修复 | 8.8高危 | 18.2 |
| CVE-2026-2005 修复 contrib/pgcrypto PGP 解密函数中的缓冲区溢出问题 目标版本已修复 | 8.8高危 | 18.2 |
| CVE-2026-2004 增强选择率估算器在被附加到接受非预期数据类型的操作符时的防护 目标版本已修复 | 8.8高危 | 18.2 |
| 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-2026-2007 加固 contrib/pg_trgm,以应对字符串转小写行为的变化 目标版本已修复 | 8.2高危 | 18.2 |
| 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-6479 防止处理启动包时发生无界递归 目标版本已修复 | 7.5高危 | 18.4 |
| CVE-2026-6476 在 pg_createsubscriber 中正确为订阅名称加引号 目标版本已修复 | 7.2高危 | 18.4 |
| CVE-2026-6471 将逻辑解码输出插件限制为新服务器参数 output_plugin_libraries 指定的集合 目标版本已修复 | 7.2高危 | 18.6 |
| CVE-2026-6478 在认证代码中使用时序安全的字符串比较 目标版本已修复 | 6.5中危 | 18.4 |
| CVE-2026-14663 修复 contrib/pgcrypto 的 PGP 加密,使其能够检测不受支持的密码算法 目标版本已修复 | 6.5中危 | 18.6 |
| CVE-2025-12818 避免 libpq 中分配大小计算的整数溢出 目标版本已修复 | 5.9中危 | 18.1 |
| CVE-2026-6472 创建多范围类型时,确保用户在为该多范围类型指定的模式上拥有 CREATE 权限 目标版本已修复 | 5.4中危 | 18.4 |
| CVE-2026-14672 让模拟的 SCRAM secret 更可信 目标版本已修复 | 5.3中危 | 18.6 |
| CVE-2026-6575 在恢复属性 MCV 统计信息时检测错误输入 目标版本已修复 | 4.3中危 | 18.4 |
| CVE-2026-6474 防范 timeofday() 和 pg_strftime() 中的恶意时区名 目标版本已修复 | 4.3中危 | 18.4 |
| CVE-2026-6470 在此前漏检的场景中检查数据类型的 USAGE 权限 目标版本已修复 | 4.3中危 | 18.6 |
| CVE-2026-2003 防止 oidvector/int2vector 出现意外的维度 目标版本已修复 | 4.3中危 | 18.2 |
| 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 |
| CVE-2026-6638 在逻辑复制源检查中正确引用对象名称 目标版本已修复 | 3.7低危 | 18.4 |
| CVE-2025-12817 检查 CREATE STATISTICS 中模式的 CREATE 权限 目标版本已修复 | 3.1低危 | 18.1 |
对于运行 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,不再进行夏令时转换。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 18.X 的用户,不需要执行导出/恢复。
但是,如果你从早于 18.2 的版本升级,请参见第 E.4 节。
变更
防止处理启动包时发生无界递归(Michael Paquier)§
恶意客户端可以通过无限交替发送被拒绝的 SSL 和 GSS 加密请求,使已连接的后端崩溃。
PostgreSQL 项目感谢 Calif.io(与 Claude 和 Anthropic Research 协作)报告此问题。(CVE-2026-6479)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复内存分配计算中的多处整数溢出问题(Tom Lane,Nathan Bossart,Heikki Linnakangas)§ § § § § § § § §
多处代码在计算需要分配多少内存时,未充分注意整数溢出的可能性。溢出会导致分配过小的缓冲区,调用者随后会写过该缓冲区的末尾。这至少会触发服务器崩溃,并且很可能可被利用来执行任意代码。在许多但绝非所有情况下,这种风险只存在于 32 位构建中。
PostgreSQL 项目感谢 Xint Code、Bruce Dang、Sven Klemm 和 Pavel Kohout 报告这些问题。(CVE-2026-6473)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_createsubscriber 中正确为订阅名称加引号(Nathan Bossart)§
给定的订阅名称未经加引号就被插入到 SQL 命令中,因此在订阅名称来自不可信来源的(也许不太可能的)情况下,可能实现 SQL 注入。
PostgreSQL 项目感谢 Yu Kunpeng 报告此问题。(CVE-2026-6476)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在逻辑复制源检查中正确引用对象名称(Pavel Kohout)§
ALTER SUBSCRIPTION ... REFRESH PUBLICATION 将模式名和关系名未经引用就插入到 SQL 命令中,从而允许在发布者上执行任意 SQL。
PostgreSQL 项目感谢 Pavel Kohout 报告此问题。(CVE-2026-6638)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
拒绝 ts_headline() 中过长的选项(Michael Paquier)§
StartSel、StopSel 和 FragmentDelimiter 字符串的长度不得超过 32Kb,但此前没有对此进行检查。过长的值通常会使服务器崩溃。
PostgreSQL 项目感谢 Xint Code 报告此问题。(CVE-2026-6473)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在恢复属性 MCV 统计信息时检测错误输入(Michael Paquier)§
统计信息恢复函数在验证高频值统计信息时不够谨慎,会接受稍后可能导致规划器崩溃的值。
PostgreSQL 项目感谢 Jeroen Gui 报告此问题。(CVE-2026-6575)
变更
防范 timeofday() 和 pg_strftime() 中的恶意时区名(Tom Lane)§ §
精心构造的时区设置可能将 % 序列传递给 snprintf(),从而可能造成崩溃或泄露服务器内存。另一条导致类似结果的路径,是让 pg_strftime() 使用的固定大小输出缓冲区溢出。
PostgreSQL 项目感谢 Xint Code 报告此问题。(CVE-2026-6474)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
创建多范围类型时,确保用户在为该多范围类型指定的模式上拥有 CREATE 权限(Jelte Fennema-Nio)§
多范围类型可以放入不同于其父范围类型的模式中,但此前在这样做时遗漏了必需的权限检查。
PostgreSQL 项目感谢 Jelte Fennema-Nio 报告此问题。(CVE-2026-6472)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在认证代码中使用时序安全的字符串比较(Michael Paquier)§
在检查口令、hash 等值时,使用 timingsafe_bcmp() 而不是 memcmp() 或 strcmp()。尚不清楚这些函数的数据依赖性在这些位置是否真的可被有效利用,但为安全起见,将其替换。
PostgreSQL 项目感谢 Joe Conway 报告此问题。(CVE-2026-6478)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将 PQfn() 标记为不安全,并避免在 libpq 内部使用它(Nathan Bossart)§
对于非整数结果类型,PQfn() 不会获得输出缓冲区的大小,因此它无法检查服务器返回的数据能否放入缓冲区。恶意服务器因而可能覆盖客户端内存。若不改变 API 就无法修复这一点,所以将该函数标记为已废弃。在 libpq 内部,改用一个能够执行缺失检查的变体版本。
PostgreSQL 项目感谢 Yu Kunpeng 和 Martin Heistermann 报告此问题。(CVE-2026-6477)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 pg_basebackup 和 pg_rewind 中的路径遍历(Michael Paquier)§
这些应用未能验证从其输入中读取的输出文件路径,因而恶意来源可以覆盖这些应用可写的任意文件。通过拒绝绝对路径或包含父目录引用的路径,约束数据可以写入的位置。
PostgreSQL 项目感谢 Tencent Xuanwu Lab 的 XlabAI Team 和 Valery Gubanov 报告此问题。(CVE-2026-6475)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防范 contrib/intarray 的 query_int 类型以及 contrib/ltree 的 ltxtquery 类型中的字段溢出(Tom Lane)§ §
这些查询结构的解析没有检查 16 位字段溢出,因而可能构造出无效的查询树。执行该查询时,这可能使服务器崩溃。
PostgreSQL 项目感谢 Xint Code 报告此问题。(CVE-2026-6473)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防范 contrib/ltree 的 lquery 类型中过长的值(Michael Paquier)§
包含超过 64K 个项的值会导致内部溢出,可能造成栈破坏或错误结果。
PostgreSQL 项目感谢 Vergissmeinnicht、A1ex 和 Jihe Wang 报告此问题。(CVE-2026-6473)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 contrib/spi 中的 SQL 注入和缓冲区越界写(Nathan Bossart)§
check_foreign_key() 在为键值加引号时不够谨慎,并且还使用固定长度缓冲区构造查询。虽然该模块只是作为示例代码,但仍然不应包含此类危险错误。
PostgreSQL 项目感谢 Nikolay Samokhvalov 报告此问题。(CVE-2026-6637)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在假定支持排序规则的类型上的等值条件意味着唯一性之前,检查是否存在非确定性排序规则(Richard Guo)§ § § § §
许多规划器优化都会假定,例如,如果 x 上存在唯一索引,则最多只有一个表行能满足 WHERE x = 'abc'。不过,如果该索引和 WHERE 子句附加了不同的排序规则,一般来说这个结论是不安全的。当两个排序规则都是确定性排序规则时这是安全的,因为该属性本质上要求两个字符串相等就意味着逐位相等。但非确定性排序规则并不如此,因此如果 WHERE 子句或索引任一方具有非确定性排序规则,基于唯一匹配假设进行优化就可能给出错误的查询结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复连接移除期间 RestrictInfo 结构体中关系引用移除不完整的问题(Tom Lane)§
已经证明这个疏忽会导致规划器失败,例如意外出现 “FULL JOIN is only supported with merge-joinable or hash-joinable join conditions” 错误。它还可能在其他情况下导致未能考虑有效的计划。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进规划器将分区键列匹配到子查询输出的逻辑(Richard Guo)§
在将操作数与分区键比较之前,去除其中的无操作 PlaceHolderVar。此变更使分区剪枝在某些此前未能识别出无需扫描某个分区的情况下能够成功。
变更
修复自连接移除,使其能够处理裸布尔列形式的连接子句,例如 ON t1.boolcol(Andrei Lepikhov, Tender Wang, Alexander Korotkov)§
以前这种情况会导致 “no relation entry for relid N” 错误。
变更
修复 UPDATE/DELETE ... WHERE CURRENT OF,使其可用于带有虚拟生成列的表(Satyanarayana Narlapuram, Dean Rasheed)§
变更
修复 INSERT ... ON CONFLICT 中 EXCLUDED 列引用里的虚拟生成列展开问题(Satyanarayana Narlapuram, Dean Rasheed)§
变更
修正规则动作和规则限定条件中对 NEW 生成列的错误处理(Richard Guo,Dean Rasheed)§
此前,在 INSERT 情况下,此类列引用会生成 NULL;在 UPDATE 情况下,则等同于 OLD 值。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复虚假的 “indexes on virtual generated columns are not supported” 错误(Robert Haas)§
创建表达式索引时有时会错误地报告此错误。
变更
修复虚假的 “generated columns are not supported in COPY FROM WHERE conditions” 错误(Tom Lane)§
在 COPY FROM WHERE 条件中使用系统列时,有时会错误报告此错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 MERGE 在可重复读或可串行化模式下遇到被并发更新的元组时,正确报告串行化失败(Tender Wang)§
此前,这类场景的行为与较低隔离级别中的行为相同。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复源表包含已删除列时的 CREATE TABLE ... LIKE ... INCLUDING STATISTICS(Julien Tachoires)§
在这类情况下,扩展统计信息对象可能会被错误复制,或该命令可能给出错误的报错。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 ALTER INDEX ... ATTACH PARTITION 在适当时将父索引标记为有效(Sami Imseih)§
存在一些边界情况:即使分区索引的所有叶子索引均有效,该分区索引仍可能保持被标记为无效。此变更提供了一种机制,使用户可以在不借助手工更新系统目录的情况下纠正这种情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER TABLE ... SET NOT NULL,使其只在完成目录更改后才调用对象访问钩子函数(Artur Zakirov)§
变更
修复 ALTER FOREIGN DATA WRAPPER,使其不要删除包装器对象对其处理器函数的依赖(Jeff Davis)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复外键触发器的可延迟性丢失问题(Yasuo Honda)§
以前,定义为 DEFERRABLE INITIALLY DEFERRED 的外键,在被设置为 NOT ENFORCED 状态再改回 ENFORCED 后,会表现得像 NOT DEFERRABLE。
如果你有受此问题影响的外键,可以在安装本次更新后,再次将其设置为 NOT ENFORCED,然后改回 ENFORCED 来修复。
变更
修复 WITHOUT OVERLAPS 以允许域(Jian He)§
UNIQUE/PRIMARY KEY ... WITHOUT OVERLAPS 要求无重叠列是范围或多范围,但它也应允许基于这类类型的域。
变更
不允许复合类型通过多范围成为自身的成员(Heikki Linnakangas)§
当中间类型是域、数组、复合类型或范围时,我们已经禁止此类情况;但此前遗漏了多范围。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Datum 镜像比较,使其不受符号扩展差异影响(David Rowley)§
这修复了一些此前会导致 “could not find memoization table entry” 错误或错误查询结果的情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复带非严格等值操作符的 hash IN/NOT IN 的错误逻辑(Chengpeng Yan)§
此前的代码可能崩溃或给出错误结果。所有内置数据类型都有严格的等值操作符,因此此问题只可能出现在扩展数据类型上。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 to_char() 中截断过长的区域设置相关数字符号(Tom Lane)§
如果某个区域设置指定了长度超过 8 字节的货币符号、千位分隔符、小数符号或正负号符号,就可能出现缓冲区越界写。现实世界中不存在这样的区域设置,而且非特权攻击者也不太可能在 Postgres 服务器下安装恶意区域设置定义;但为安全起见,检查过长符号并在需要时截断。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防范窗口聚合的帧起始和结束位置计算中的整数溢出(Richard Guo)§
用户指定的极大偏移量(接近 INT64_MAX)可能导致错误或错误的查询结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 array_agg_array_combine(),使其正确组合数组的空值位图(Dmytro Astapov)§
此错误导致并行化的 array_agg(anyarray) 计算有时产生不正确输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
如果 sync_file_range() 返回错误码 EINTR,则进行重试(DaeMyung Kang)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_stat_reset_single_table_counters() 在共享系统目录上的错误行为(Chao Li)§
这类场景会产生重置当前数据库的 stat_reset_timestamp 的副作用,而这不是有意的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当并行应用工作进程空闲时更新活动统计信息(Zhijie Hou)§
以前,刚完成事务的统计信息可能长时间不被报告,尤其在工作负载较轻时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复集合操作中估算数组长度时出现的 “no relation entry for relid 0” 失败(Tender Wang)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pglz_decompress() 接收损坏输入时的缓冲区越界读问题(Andrew Dunstan)§
此前可能读取输入末尾之后的几个字节,在极其不走运的情况下可能导致崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复增量 JSON 解析器对跨输入缓冲区边界的数字词元的处理(Andrew Dunstan)§
过去可能接受格式不正确的数字,导致后续失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止恢复增量备份时关系可见性映射膨胀(Robert Haas)§
由于错误计算预期文件长度,恢复可能向可见性映射追加许多零块。这不会导致数据损坏,但可能浪费大量磁盘空间。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在文本列上的系统目录缓存查找中使用 C 排序规则,而不是数据库的默认排序规则(Jeff Davis)§
这避免了某些边缘场景中的失败,例如物理复制启动时没有已确定的数据库,因而无法确定默认排序规则。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复空闲 slotsync 工作进程产生过多日志输出的问题(Zhijie Hou)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保即使发生错误后,tuplestore 数据结构在内部也保持一致(Tom Lane)§
此前代码对此不够谨慎,这在大多数时候没有问题,但对于支撑 WITH HOLD 游标的 tuplestore 则有问题。在 v15 及更早版本中,这会导致容易重现的崩溃;目前尚不知道较新分支是否易受影响,但最好在所有分支中保持一致性。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 pg_aios 系统视图的 pid 列在条目没有所属进程时显示 NULL 而不是 0(ChangAo Chen)§
变更
修复 pg_stat_replication 中过早报告 NULL 延迟的问题(Shinya Kato)§
即使复制活动正在发生,延迟列也经常读作 NULL。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复并行 B-树索引扫描所用共享内存分配不足的问题(Siddharth Kothari)§
在边界情况下,这可能导致服务器崩溃。
变更
避免处理不记录 WAL 的 GiST 索引时罕见的刷盘失败(Tomas Vondra)§
不记录 WAL 的 GiST 索引有时仍可能产生 “xlog flush request n/nnnn is not satisfied” 错误,原因是错误地选择了一个“假 LSN” 来表示插入点。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对非常规大小的段所需 DSA 页面映射大小的低估问题(Paul Bunn)§
此误算导致越界访问,并进而造成服务器崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复安装过多 EXPLAIN 扩展选项时的数组越界写(Joel Jacobson)§
变更
修复处理扩展数据类型表达式上的扩展统计信息时可能发生的服务器崩溃(Michael Paquier)§
如果该数据类型的 typanalyze 函数没有计算任何有用的统计信息,就可能发生 NULL 指针解引用。核心内置的 typanalyze 函数都不会这样表现,但扩展可能会如此。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确显示在 GROUP BY 中使用的连接别名 Vars(Tom Lane)§
在包含类似 SELECT ... t1 LEFT JOIN t2 USING (x) GROUP BY x 查询的视图中,GROUP BY 子句可能被逆解析错误显示,从而导致导出/恢复失败。只有当 t1.x 和 t2.x 数据类型并不相同,并且 t1.x 是需要隐式强制转换的一侧时,才会发生该失败。
变更
如果启动进程失败,在 postmaster 退出前正确关闭其他子进程(Ayush Tiwari)§
对此情况的处理依赖于一个早已过时的假定:启动进程运行时不存在其他 postmaster 子进程,因此可以立即退出 postmaster。孤立的子进程最终会注意到 postmaster 已死亡并自行退出,但更干净的关闭过程仍然是可取的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复检查点 WAL 重放与多事务 ID 创建之间的竞态条件(Heikki Linnakangas)§
跟随来自较旧小版本主库的 WAL 的备库,可能陷入反复崩溃和重启的循环,并抱怨 “could not access status of transaction”。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 WAL 发送进程关闭时无限期等待(Anthonin Bonnefoy)§ §
在发布逻辑复制数据的集簇关闭时,WAL 发送进程会等待所有待处理 WAL 被写出。但它没有正确请求执行此操作,因此在某些情况下这可能变成无限期等待。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保恢复期间对表空闲空间映射的更改会被持久化(Alexey Makhmutov)§
此前,在重放应当改变空闲空间映射的操作时,WAL 重放确实会更新该映射;但如果启用了校验和,映射页缓冲区不会被标记为脏,因此这些更改可能永远不会被写出。在备库上,随着时间推移,这会导致映射与表的实际内容严重不符。虽然该映射只作为提示使用,但在备库被提升为活跃服务器后,直到大部分映射被更新修复之前,这种情况可能在一段时间内造成显著性能下降。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复某些 ecpg 函数在没有已建立连接的情况下被调用时的崩溃(Shruthi Gowda)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
加固 tar 文件解析逻辑,使其能够防范无法处理的归档(Tom Lane)§
pg_basebackup 和 pg_verifybackup 中使用的 tar 文件读取代码,根本没有验证输入是否为 tar 文件,更不用说验证它是否属于我们能够处理的有效 tar 文件子集。对于输入文件由 PostgreSQL 代码生成的常见场景,这不是问题;但如果输入由其他 tar 程序生成,就可能成为问题。
变更
修复备份解压和 tar 解析代码中的多项错误(Andrew Dunstan, Tom Lane, Chao Li)§ § §
pg_basebackup 和 pg_verifybackup 中使用的解压和 tar 文件读取代码,会错误处理 tar 文件填充数据,在边界情况下可能损坏 LZ4 压缩数据,未检查一些异常错误条件,压缩/解压错误后未退出(导致级联错误报告),并且会泄漏内存。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_dump 中,保留 NOT NULL 约束的 NO INHERIT 属性(Jian He)§
有些情况遗漏了打印 NO INHERIT 子句。
变更
在 pg_dumpall 中,不要跳过具有悬挂授权者 OID 的角色 GRANT(Tom Lane)§
作为替代,像 v16 之前那样,通过发出不带任何 GRANTED BY 子句的 GRANT 来处理此类情况。这可以避免在可预见的情况下丢失授权,因为 v16 之前的服务器不会阻止删除授权者角色。继续针对缺失的授权者发出警告,但仅当源服务器为 v16 或更高版本时才这样做。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_upgrade 中,连接到较旧源服务器时注意使用正确的协议版本(Jacob Champion)§
在尝试从 2018 年以前的服务器升级时,这可能会造成问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/basic_archive 中,允许启动时归档目录不存在(Nathan Bossart)§
此前,如果 basic_archive.archive_directory 的设置没有指向一个已存在的目录,就会被拒绝。这并不理想,因为即使该目录稍后出现,归档也会无限期卡住。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_overexplain 的 RANGE_TABLE 选项输出结构错误的问题(Satyanarayana Narlapuram)§
某些字段在 JSON、YAML 和 XML 格式中位置错误,导致输出在结构上无效。
变更
在 contrib/pg_stat_statements 中,如果解析 pgss_query_texts.stat 文件时发生错误,不要泄漏内存(Heikki Linnakangas)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/postgres_fdw 中,避免因过早清理失败连接而崩溃(Etsuro Fujita)§
如果远程连接的中止清理失败,我们就不能再使用它。但要将关闭连接对象延迟到事务结束时执行,因为打开的游标等数据结构中可能仍有对它的引用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 2026b 发布版本(Tom Lane)§
British Columbia(America/Vancouver)将从 2026 年 11 月开始全年采用 UTC-07(实际上就是永久 DST)。本次发布假定其 TZ 缩写从那时起为 MST。这看起来可能会改变,但尚不清楚会使用什么新缩写。另外还有一项针对 Moldova 的历史修正:自 2022 年以来,他们一直遵循 EU 的 DST 转换时间。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 18.X 的用户,不需要执行导出/恢复。
但是,如果你从早于 18.2 的版本升级,请参见第 E.4 节。
变更
修复在重放由较旧小版本生成的 WAL 多事务 ID 截断记录后发生失败的问题(Heikki Linnakangas)§
为兼容旧版本处理多事务 ID 回卷方式而编写的错误逻辑,会导致重放失败,并出现诸如 “could not access status of transaction” 之类的消息。一种典型场景是:最新小版本的备库正在消费来自较旧版本主库的 WAL。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在对“经过 TOAST 处理”的数据应用 substring() 时误报无效编码(Noah Misch)§ § §
针对 CVE-2026-2006 的修复过于激进,在原本合法的情况下也可能报出字符不完整错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复针对 CVE-2026-2007 的修复中遗漏的问题(Zsolt Parragi)§
如果因为输入包含的三字符组比初始估计更多而需要扩展 “bounds” 数组,generate_trgm_only 没有把修改后的数组指针返回给调用者。这会导致 strict_word_similarity() 及相关函数输出错误,极少数情况下还会崩溃。如果输入字符串在转换为小写后变长,就会触发这段错误代码。目前已知仅会在某些单字节编码配合 ICU 区域设置时发生这种情况。
变更
修复 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 子查询输出可能将其置空的外连接集合的计算(Richard Guo)§
这一错误可能导致系统误以为某些 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(),使其能够为辅助进程返回值(Heikki Linnakangas)§
此前,这些函数对辅助进程返回 NULL,但这与 pg_stat_activity 视图的行为不一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在从 PL/pgSQL 函数返回其值时,将复合类型变量转换为域类型的问题(Tom Lane)§
如果该变量的值为 NULL,则会出现 “cache lookup failed for type 0” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/hstore 二进制输入函数中潜在的空指针解引用问题(Michael Paquier)§
hstore 的接收函数在输入包含重复键时会崩溃。由 PostgreSQL 生成的 hstore 值永远不会包含重复键,因此这一错误一直未被发现。恶意构造或损坏的数据都可能触发该崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 18.X 的用户,不需要执行导出/恢复。
但是,如果你在 ltree 列上建有索引,则更新后可能需要对其重新索引。请参见下方第六条变更记录。
变更
防止 oidvector/int2vector 出现意外的维度(Tom Lane)§
这些数据类型预期为不含空值的一维数组,但某些类型转换路径允许违背这些预期。现已为一些原本依赖这些预期却未加验证的函数补充检查,因为它们可能因此产生错误行为。
PostgreSQL 项目感谢 Altan Birler 报告此问题。(CVE-2026-2003)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
增强选择率估算器在被附加到接受非预期数据类型的操作符时的防护(Tom Lane)§ §
contrib/intarray 包含一个选择率估算函数;由于它未检查输入是否为预期的数据类型,该函数可被滥用来执行任意代码。第三方扩展也应检查是否存在类似风险,并采用 intarray 现在使用的技术来增加防护。由于此类扩展的修复需要时间,我们现在要求具有超级用户权限,才能将非内置的选择率估算器附加到操作符上。
PostgreSQL 项目感谢 Daniel Firer(zeroday.cloud 成员)报告此问题。(CVE-2026-2004)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pgcrypto PGP 解密函数中的缓冲区溢出问题(Michael Paquier)§
解密带有超长会话密钥的精心构造消息会导致缓冲区溢出,严重时甚至可能执行任意代码。
PostgreSQL 项目感谢 Team Xint Code(zeroday.cloud 成员)报告此问题。(CVE-2026-2005)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复多字节字符长度验证不充分的问题(Thomas Munro,Noah Misch)§ § § § § §
多处漏洞使攻击者只要能够发出精心构造的 SQL,就可能溢出字符串缓冲区,严重时甚至可以执行任意代码。应用这些修复后,当字符串函数处理数据库中存储的无效文本时,应用程序可能会看到 “invalid byte sequence for encoding” 错误。
PostgreSQL 项目感谢 Paul Gerste 和 Moritz Sanft(zeroday.cloud 成员)报告此问题。(CVE-2026-2006)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使用 ALTER TABLE ... ADD CONSTRAINT 为列添加显式命名的非空约束时,如果该列已经标记为 NOT NULL,则要求所提供的名称与现有约束名称一致(Álvaro Herrera、Srinath Reddy Sadipiralla)。§
变更
不允许由子查询中的 CTE 引用决定聚合函数的语义层级(Tom Lane)§
此变更撤销了两个小版本之前引入的一项更改;现在,如果某个子查询引用的 CTE 所处层级低于按标准 SQL 规则依据其中的列引用和聚合所判定的聚合语义层级,将抛出错误。先前的修复方案本身也带来了问题,而且目前尚不清楚应如何处理。由于 SQL 标准本就完全不允许在聚合中包含子查询,将此类情况视为错误似乎已经足够。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 CTE 查询中 MERGE 的触发器过渡表捕获问题(Dean Rasheed)§
当执行包含 MERGE 和另一个对具有语句级 AFTER 触发器的表的 DML 操作的数据修改 CTE 查询时,传递给触发器的过渡表将不包含 MERGE 影响的行,而只包含其他操作影响的行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对非关系范围表条目(例如子查询)所对应行标记的错误剪枝(Dean Rasheed)§
如果拟执行的行更新需要由 EvalPlanQual 复查修改,例如该行被并发更新时,此问题会导致不正确的结果。
变更
修复当分区目标表的所有子表在 UPDATE 或 DELETE 操作中都被剪枝时的失败问题(Amit Langote)§
在这种情况下,执行器可能报告 “could not find junk ctid column” 错误,即使实际上无需执行任何操作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复数组下标内子查询的表达式求值错误(Andres Freund)§
变更
修复非确定性排序规则下的文本子串搜索(Laurenz Albe)§
使用非确定性排序规则时,未能检测到恰好位于被搜索字符串末尾的匹配。
变更
避免当查询包含重复的窗口函数调用时规划器可能出现的失败(Meng Zhang,David Rowley)§
对此类调用去重时的混淆可能导致诸如 “WindowFunc with winref 2 assigned to WindowAgg with winref 1” 之类的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复涉及返回集合的函数和分组集的规划器错误(Richard Guo)§
构造 ProjectSet 计划节点时,规划器未能识别出涉及分组表达式的子表达式已由输入计划计算。这会导致低效计划,或出现 “variable not found in subplan target list” 等错误。
变更
避免在子查询的分组子句包含易变函数或返回集合的函数时进行不正确的优化(Richard Guo)§
规划器会尝试下推引用此类分组列的外层查询限制,这会因为对易变函数进行多次求值而导致错误行为,或者因将返回集合的函数引入子查询的 WHERE/HAVING 子句而报错。
变更
在搜索表达式的统计信息时穿透 PlaceHolderVar 节点(Richard Guo)§
此更改允许规划器找到从子查询上拉出来的表达式,或用于 GROUP BY 的表达式的相关统计信息,从而避免退回到默认估算值。(严格来说,我们也许应该调整找到的统计信息,以反映该值为 NULL 的概率增加,但对于普通 Var 我们也从未做过同等处理。)这一限制虽由来已久,但 PostgreSQL 18 让 PlaceHolderVar 的出现比以前更常见,因此做出此修改以避免受影响场景中的计划退化。
变更
在将表达式匹配到索引时穿透无操作的 PlaceHolderVar 节点(Richard Guo)§
由于 PostgreSQL 18 在更多场景下使用 PlaceHolderVar,一些原本可以使用索引的查询反而不能使用索引了。新增相应逻辑以防止这种退化。
变更
修复规划器将 OR 子句转换为 ScalarArrayOp 索引条件时的问题(Tender Wang、Tom Lane)§
该代码未能正确处理 RelabelType 节点,可能生成无效表达式,或者无法完成本应有效的转换。
变更
允许在部分 hash 索引上进行索引扫描,即使索引的谓词蕴含 WHERE 子句的真值(Tom Lane)§
通常我们会删除被谓词蕴含的 WHERE 子句,因为测试它没有意义——对于每个索引条目,该条件必然成立。然而,如果索引是需要在前导索引键上有 WHERE 子句的类型(如 hash 索引),这样做可能阻止创建索引扫描计划。在考虑此类索引时,不要删除被蕴含的子句。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
不要为不记录 WAL 的 BRIN 索引生成 WAL(Kirill Reshke)§
一条很少执行到的代码路径错误地为 BRIN 索引生成了 WAL 记录,即使该索引被标记为不记录 WAL。崩溃恢复时将无法重放该记录,并报告文件已存在的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在并行 GIN 索引构建中使用正确的排序函数(Tomas Vondra)§
并行代码使用了默认排序操作符(由列数据类型的 B-树操作符类决定),而它本应在存在时使用 GIN 操作符类指定的排序函数。如果该数据类型没有 B-树操作符类,就会失败;如果操作符类指定的排序函数与 B-树操作符类不一致,则会生成无效索引。
变更
防止截断未读 NOTIFY 消息仍然需要的 CLOG(Joel Jacobson,Heikki Linnakangas)§ § §
此修复防止了当后端进程吸收 NOTIFY 消息较慢时出现的 “could not access status of transaction” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将 NOTIFY 消息处理期间发生的错误升级为 FATAL,即关闭连接(Heikki Linnakangas)§
以前,如果后端在吸收 NOTIFY 消息时遇到错误,它会跳过该消息,向客户端报告错误,然后继续运行。但这种行为存在很多问题。一个主要问题是,客户端没有好的方法来知道通知丢失了,更无法知道通知的内容是什么。根据应用逻辑的不同,错过一条通知可能导致应用程序卡在等待状态。此外,剩余的消息在有人发送新的 NOTIFY 之前不会被处理。
另外,如果连接在接收到 NOTIFY 信号时处于空闲状态,由于无关的原因,任何 ERROR 都会被升级为 FATAL。因此,我们选择在所有情况下都这样做,以保持一致性,并向应用程序提供一个明确的信号,表明它可能错过了一些通知。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在计算查询 ID hash 时纳入分组表达式(Jian He)§
以前,两个除了 GROUP BY 表达式不同之外其余都相同的查询,会被 contrib/pg_stat_statements 以及其他使用查询 ID 的模块合并在一起。
变更
修复在发生并发更新时 EXPLAIN ANALYZE MERGE 对更新计数错误的问题(Dean Rasheed)§
这种情况会导致 EXPLAIN 输出中的 “skipped” 元组计数错误,或者在启用断言的构建中引发断言失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在锁定元组时跟踪更新链的错误(Jasper Smit)§
此代码路径忽略了检查更新链中第一个新元组的 xmin,使得在原始更新者中止且空间被 VACUUM 立即回收并重新使用的情况下,可能会锁定一个不相关的元组。这可能导致意外的事务延迟或死锁。与识别到错误元组相关的错误也已被观察到。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对大表增量备份处理不正确的问题(Robert Haas、Oleg Tkachenko)§
如果一个超过 1GB 的表(更一般地说,超过安装的段大小的表)在基础备份和增量备份之间被 VACUUM 截断,pg_combinebackup 可能会因 “truncation block length in excess of segment size” 错误而失败,从而无法恢复该增量备份。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复后端进程在退出时由于尝试在已取消映射的共享内存段中释放锁而可能崩溃的问题(Rahila Syed)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复异步 I/O 代码中的竞争条件(Andres Freund)§
异步 I/O 操作的结果码有可能在被读取之前就被覆盖。
变更
防止崩溃后多事务日志被错误截断(Heikki Linnakangas)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_stat_get_backend_activity() 可能返回编码错误的结果的问题(Chao Li)§
保存会话活动字符串的共享内存缓冲区末尾可能包含不完整的多字节字符。读取者应该截断掉任何此类不完整字符,但此函数未能做到这一点。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止递归的内存上下文日志记录(Fujii Masao)§
持续不断的请求内存上下文日志记录的信号流可能导致日志记录代码的递归执行,理论上可能导致栈溢出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复重新初始化并行执行上下文时的内存上下文使用问题(Jakub Wartak,Jeevan Chalke)§
此错误可能由于附属数据结构的生命周期比并行上下文更短而导致崩溃。目前尚未发现仅使用 PostgreSQL 核心就能触发该问题的情况,但我们收到了扩展中出现问题的报告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免多次重写数据修改 CTE(Bernice Southey,Dean Rasheed)§
以前,在更新自动可更新视图或带规则的关系时,如果原始查询含有数据修改 CTE,重写器会由于递归而多次重写这些 CTE。这不仅低效,而且当 CTE 包含对GENERATED ALWAYS 列的更新时可能产生虚假错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许重试 DSM 注册表条目的初始化(Nathan Bossart)§
如果动态共享内存条目的初始化进行到一半失败,允许下一次尝试使用该条目时重新初始化。此前,该条目会永久处于失败状态。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在页面被换出时 NUMA 状态视图失败(Tomas Vondra)§
变更
避免在使用较旧 libnuma 版本查询 NUMA 页面状态时出现 “operation not permitted” 错误(Tomas Vondra)§
变更
如果 WAL 未涵盖检查点记录指示的重做点,则使恢复失败(Nitin Jadhav)§
在开始恢复之前添加一个显式检查,以确保不会造成损害并提供有用的错误消息。以前,在这种情况下恢复可能会崩溃或损坏数据库。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 ALTER PUBLICATION 期间修改源查询树(Sunil S)§
此错误的可见效果是,为该查询触发的事件触发器只能看到第一个 publish 选项,即使指定了多个选项。如果此类查询被设置为预备语句,重新执行时也会出现错误行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将 CREATE SUBSCRIPTION ... CONNECTION 中指定的连接选项传递给发布端的 walsender 进程(Fujii Masao)§
在此修复之前,options 连接选项(如果有的话)会被忽略,因此,例如无法在 walsender 会话中设置自定义服务器参数值。该功能本应正常工作;在 PostgreSQL 15 中的重构破坏它之前,它也确实一直是正常工作的,因此这里恢复了先前的行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复计算复制槽所需 xmin 时的竞争条件(Zhijie Hou)§
这可能导致错误 “cannot build an initial slot snapshot as oldest safe xid follows snapshot's xmin”。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在逻辑复制订阅的初始同步期间,在开始复制数据之前提交 pg_replication_origin 条目的添加(Zhijie Hou)§
以前,如果复制步骤失败,新的 pg_replication_origin 条目会因事务回滚而丢失,从而导致共享内存中的状态不一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在并行工作进程应用失败后不推进逻辑复制进度(Zhijie Hou)§
之前的行为允许订阅者丢失事务。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑复制 slotsync 工作进程对 LOCK_TIMEOUT 信号的处理(Zhijie Hou)§
以前,这类超时信号实际上会被忽略。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复流复制副本服务器重启期间可能出现的 “unexpected data beyond EOF” 失败问题(Anthonin Bonnefoy)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SQL/JSON 路径类型不匹配时的错误报告(Jian He)§
该代码原本应报告路径表达式类型不正确,却可能产生 “cache lookup failed for type 0” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复解析分区范围边界时对列位置的错误跟踪(myzhen)§
这可能导致在关于将分区边界值转换为列的数据类型的错误消息中引用错误的列名。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在使用 LLVM 17 或更高版本进行 JIT 编译时无法执行函数内联的问题(Anthonin Bonnefoy)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
调整我们的 JIT 代码以兼容 LLVM 21(Holger Hoffstätte)§
之前的代码在 aarch64 机器上编译失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对 io_uring_queue_init_mem() 的错误 configure 检测(Masahiko Sawada)§
该错误导致在基于 autotools 的构建中无法优化异步 I/O 缓冲区分配,尽管使用 meson 构建时这段代码是可用的。这个遗漏的主要影响是后端进程退出速度比应有的更慢。
变更
增加新的服务器参数file_extend_method来控制 posix_fallocate() 的使用(Thomas Munro)§
PostgreSQL 版本 16 及更高版本会使用 posix_fallocate()(如果平台提供的话)来扩展关系文件。然而,据报告这与某些文件系统交互不良:BTRFS 压缩会因使用 posix_fallocate() 而被禁用,而在较旧的 Linux 内核版本中 XFS 可能会产生虚假的 ENOSPC 错误。为提供一种解决方案,引入了这个新的服务器参数。将 file_extend_method 设置为 write_zeros 将使服务器回退到通过写入全零数据块来扩展文件的旧方法。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上遵守 open() 的 O_CLOEXEC 标志(Bryan Green,Thomas Munro)§ § §
使此标志像在 POSIX 平台上一样工作,以避免将文件句柄泄漏到子进程(如 COPY TO/FROM PROGRAM)中。虽然该泄漏没有造成太多问题,但它似乎是不可取的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在使用 meson 构建的 Solaris 可执行文件中无法解析服务器命令行长选项的问题(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持在 GNU/Hurd 上更改进程标题(Michael Banck)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 对 VACUUM 选项值的 Tab 补全(Yugo Nagata)§
变更
在 psql 命令提示符中,如果没有服务器连接,则不要显示 %P(管道状态)的值(Chao Li)§
这使 %P 的行为与其他依赖当前活动连接的提示符转义序列保持一致。
变更
修复 pg_dump 对 oauth_validator_libraries 取值的引号处理可能不正确的问题(ChangAo Chen)§
如果 pg_dump 需要转储该设置的值,它此前会应用错误的引用规则。
变更
避免 pg_dump 在 binary-upgrade 模式下触发断言失败(Vignesh C)§
对象排序代码未能处理订阅关系对象,从而触发断言,不过在生产构建中并未发现严重的实际影响。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pipeline 模式下 pgbench 在有多个 \syncpipeline 命令时的错误处理问题(Yugo Nagata)§
如果在查询错误之后又遇到多个 \syncpipeline 命令,pgbench 会报告 “failed to exit pipeline mode”,或者在启用断言的构建中触发断言失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_resetwal 在更改 OldestXID 时打印更新后的值(Heikki Linnakangas)§
它对可以更改的其他每个变量都已经这样做了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_resetwal 允许将下一个多事务 xid 设置为 0 或将下一个多事务偏移量设置为 UINT32_MAX(Maxim Orlov)§
这些是有效的值,因此拒绝它们是不正确的。在最坏的情况下,如果恰好在多事务回卷点尝试 pg_upgrade,升级将失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/amcheck 中,为 B-树索引父节点检查使用正确的快照(Mihail Nikalayeu)§ §
之前的代码在检查使用 CREATE INDEX CONCURRENTLY 创建的索引时会产生虚假错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/amcheck 以正确处理“半死亡” B-树索引页面(Heikki Linnakangas)§
amcheck 期望此类页面有一个父级下行链接,但实际上没有,导致关于 “mismatch between parent key and child high key” 的虚假错误报告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/amcheck 以正确处理不完整的 B-树根页面分裂(Heikki Linnakangas)§
amcheck 可能会报告关于 “block is not true root” 的虚假错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_buffercache 中过度分配内存的问题(David Geier)§
代码分配的内存是NUMA页面状态需要的两倍。
变更
修复 contrib/intarray 中 @@ 选择率估算器的边界情况整数溢出问题(Chao Li)§
这可能导致在涉及最大整数值的情况下产生不准确的选择率估算。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/ltree 中的多字节编码问题(Jeff Davis)§
之前的代码可能将不完整的多字节字符传递给 lower(),可能导致不正确的行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免当 contrib/pg_stat_statements 处理包含常量和非常量表达式的 IN 列表时发生崩溃(Sami Imseih)§
变更
将时区数据文件更新到 tzdata 2025c 版本(Tom Lane)§
唯一的变更是下加利福尼亚 1976 年之前时间戳的历史数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 18.X 的用户,不需要执行导出/恢复。
变更
检查 CREATE STATISTICS 中模式的 CREATE 权限(Jelte Fennema-Nio)§
此遗漏允许表的所有者在任何模式中创建统计对象,可能导致意外的命名冲突。
PostgreSQL 项目感谢 Jelte Fennema-Nio 报告此问题。(CVE-2025-12817)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 libpq 中分配大小计算的整数溢出(Jacob Champion)§
libpq 中有多处对内存分配所需大小的计算不够谨慎。足够大的输入可能导致整数溢出,从而分配一个不够大的缓冲区,进而导致写入超出缓冲区的末尾。
PostgreSQL 项目感谢 Positive Technologies 的 Aleksey Solovev 报告此问题。(CVE-2025-12818)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
不要在哈希右半连接中使用并行(Richard Guo)§
由于在更新连接的共享 hash 表时存在竞态条件,该情况无法可靠工作。
变更
避免创建有序追加计划时可能发生的除零错误(Richard Guo)§
这种错误可能导致错误选择最便宜的路径,或导致调试构建中的断言失败。
变更
修复使用支持有序访问但不支持仅索引扫描的索引类型时发生的规划器失败(Maxime Schoemans)§
这一疏漏会导致 “no data returned for index-only scan” 等错误。任何核心内置索引类型都不会出现这种情况,但一些扩展遇到了此问题。
变更
移除 B-树索引清理中的错误断言(Peter Geoghegan)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免并行 GIN 索引构建期间可能发生的内存不足或 “invalid memory alloc request size” 失败(Tomas Vondra)§
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复当表接近 232 页时 BRIN 索引扫描中的整数溢出风险(Sunil S)§
此疏忽可能导致无限循环或扫描不需要的表页面。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 JIT 生成的元组解构代码中存储值的错误零扩展问题(David Rowley)§
不使用 JIT 时,等效代码执行的是符号扩展而非零扩展,导致小整数数据类型的 Datum 表示不同。这种不一致在大多数情况下被掩盖了,但已知在使用 Memoize 计划节点时会导致 “could not find memoization table entry” 错误,还可能存在其他症状。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复处理带 hash 的 GROUPING SETS 查询时罕见的崩溃(David Rowley)§
变更
修复哈希连接中有误的 hash 表大小选择逻辑(Tomas Vondra)§
哈希连接有时会使用比预期更多的内存,或者未能以高效的方式划分这些内存。
变更
修复触发器结果关系信息缓存的错误逻辑(David Rowley,Amit Langote)§
在分区的列集与其父分区表的列集在物理上不完全相同的情况下,此疏忽可能导致崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在分区表上执行 EvalPlanQual 重新检查期间发生的崩溃(David Rowley、Amit Langote)§
变更
修复没有准备替代本地连接计划用于 EPQ 的外部或自定义连接的 EvalPlanQual 处理(Masahiko Sawada,Etsuro Fujita)§
在这种情况下,应该正常调用外部或自定义访问方法,但之前并未发生,通常会导致崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 DETACH CONCURRENTLY 期间重复 hash 分区约束(Haiyang Li)§
ALTER TABLE DETACH PARTITION CONCURRENTLY 被编写为向现已分离的分区添加分区约束的副本。这是不恰当的,部分原因是非并发 DETACH 不会这样做,但主要原因是在 hash 分区的情况下,约束表达式包含对父表 OID 的引用。这在导出/恢复期间,或在 DETACH 之后父表被删除时会导致问题。在 v19 及更高版本中,我们将不再创建任何此类约束副本。在已发布的分支中,为了最大限度地降低不可预见后果的风险,仅在 hash 分区的情况下跳过添加复制约束。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止在分区键中使用生成列(Jian He,Ashutosh Bapat)§
这本来已经不被允许,但检查遗漏了一些情况,例如列引用隐含在整行引用中的情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止在 COPY ... FROM ... WHERE 子句中使用生成列(Peter Eisentraut,Jian He)§
以前,尝试引用此类列会导致不正确的行为或晦涩的错误消息,因为在执行 WHERE 过滤时生成列尚未计算。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
如果某列带有标记为无效的非空约束,则禁止将其设置为 identity 列(Jian He)§
identity 列必须是非空的,但先前的检查漏掉了这一边界情况。
变更
避免并行清理中潜在的释放后使用问题(Kevin Oommen Anish)§
该缺陷在标准构建中似乎没有实际后果,但理论上仍存在风险。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_temp 中统计对象的可见性检查(Noah Misch)§
位于临时模式中的统计对象如果不加模式限定就无法命名,但 pg_statistics_obj_is_visible() 遗漏了这一点,可能无论如何都返回 “true”。反过来,像 pg_describe_object() 这样的函数可能无法按预期对对象名称进行模式限定。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 WAL 重放数据库创建过程中的轻微内存泄漏(Nathan Bossart)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_stat_replication 视图中复制延迟的错误报告(Fujii Masao)§
如果任何备库的重放 LSN 停止前进,write_lag 和 flush_lag 列最终将停止更新。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免关于无效 primary_slot_name 设置的重复日志消息(Fujii Masao)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 synchronized_standby_slots 引用了不存在的复制槽时,避免发生故障(Shlok Kyal)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在写入复制槽状态到磁盘失败后删除未完成的槽状态文件(Michael Paquier)§
以前,磁盘空间不足等失败会留下一个临时 state.tmp 文件。这是有问题的,因为它会阻止所有后续写入状态的尝试,需要手动干预来清理。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑复制并行应用工作进程中锁超时信号的错误处理(Hayato Kuroda)§
同一个信号编号被同时用于工作进程关闭和锁超时,导致混淆。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免从流式传输切换到归档 WAL 源时不必要的 WAL 接收进程关闭(Xuneng Zhou)§
在时间线切换期间,备库的 WAL 接收进程应保持活动状态,等待新的 WAL 流式传输起始点。相反,它反复关闭并立即重新启动,这可能会混淆状态监控代码。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pgoutput 逻辑解码插件维护的关系同步缓存中的释放后使用问题(Vignesh C,Masahiko Sawada)§
逻辑解码期间的错误可能导致同一会话中后续逻辑解码尝试崩溃。此情况仅在通过 SQL 函数调用 pgoutput 时可以触发。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在区域设置中恢复对 C 排序规则的特殊处理(Jeff Davis)§
这修复了后端启动早期、尚未选择数据库之前访问共享系统目录时的一个回归问题。目前尚未发现这会影响 PostgreSQL 核心代码,但某些扩展已因此失效。
变更
修复关于检查用户是否具有 Windows 管理员权限时失败消息的错误打印(Bryan Green)§
此代码本来会崩溃或至少打印乱码。但没有此类情况被报告过,这表明这些系统调用的失败极为罕见。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在使用某些 libsanitizer 选项测试 PostgreSQL 时崩溃(Emmanuel Sibi,Jacob Champion)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 64 位 Windows 调试构建中虚假的内存上下文检查警告(David Rowley)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确处理 PL/pgSQL 赋值语句中的 GROUP BY DISTINCT(Tom Lane)§
解析器在此上下文中未能记录 DISTINCT 选项,导致命令的行为就像是普通的 GROUP BY。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 PL/Python 中处理 SQL 错误时泄漏内存(Tom Lane)§
这修复了在我们之前的小版本中引入的会话生命周期内存泄漏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 libpq 在 Windows 上 GSSAPI 逻辑中处理套接字相关错误的问题(Ning Wu,Tom Lane)§
使用 GSSAPI 加密/解密传输数据的代码未能正确识别连接套接字上的错误条件,因为 Windows 报告这些错误的方式与其他平台不同。这导致在 Windows 上无法建立此类连接。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复继承表列上非继承而来的非空约束的转储问题(Dilip Kumar)§
从早于 v18 的服务器转储时,pg_dump 未能保留这类约束。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 对外键约束的排序(Álvaro Herrera)§
确保这些数据库对象的顺序一致,如对其他对象类型所做的那样。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 和 pg_restore 中数据压缩逻辑的各种错误(Daniel Gustafsson,Tom Lane)§ § §
多处缺少或不正确的错误检查,还存在会在大端硬件上出现的可移植性问题。这些问题一直未被发现,因为此代码仅用于读取目录格式导出中压缩的 TOC 文件。 pg_dump 不会生成这样的导出;该情况只有在事后手动压缩 TOC 文件时才会出现,这是一种受支持但非常罕见的操作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pgbench 以在启动 COPY 操作时妥善报告错误并退出(Anthonin Bonnefoy)§
pgbench 不打算支持这种情况,但之前会进入无限循环。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pgbench 的多错误报告(Yugo Nagata)§
在连续两次 PQgetResult 调用都失败的情况下, pgbench 可能报告错误的错误消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pgbench 中,修复流水线模式下关于错误的错误断言(Yugo Nagata)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_combinebackup 中每个文件的内存泄漏(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_prewarm 对索引的权限检查(Ayush Vatsa,Nathan Bossart)§ §
pg_prewarm() 要求对要预热的关系具有 SELECT 权限。但由于索引没有自己的 SQL 权限,这导致非超级用户无法预热索引。改为检查索引所属表的 SELECT 权限。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/pg_stat_statements 中,避免当 SQL 语句文本中的两个或多个常量被标记为同一位置时发生崩溃(Sami Imseih、Dmitry Dolgov)§
变更
使 contrib/pgstattuple 更健壮地处理空页面或无效索引页面(Nitin Motiani)§
将全零页面计为空闲空间,并忽略根据页面特殊空间大小检查判定为无效的页面。B-树索引的代码已经将全零页面计为空闲空间,但 hash 和 gist 的代码会报告错误并退出,这被发现对用户不太友好。同样,使这三种情况在忽略损坏页面而非抛出错误方面保持一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
加固我们的读写屏障宏以满足 Clang 的要求(Thomas Munro)§
我们假设 __atomic_thread_fence() 是防止 C 编译器在其周围重排内存访问的充分屏障,但似乎对于 Clang 来说并非如此,导致它至少为 RISC-V、MIPS 和 LoongArch 机器生成不正确的代码。添加显式编译器屏障来修复此问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PGXS 构建基础设施以支持为扩展构建 NLS po 文件(Ryo Matsumura)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。