由 John Doe 八月 14, 2026
PostgreSQL 全球开发组发布了所有受支持版本的例行更新,包括 18.6、17.11、16.15、15.19、14.24 五个正式版本,同时推出了 PostgreSQL 19 的第三个测试版本(Beta 3)。本次更新累计修复了过去数月上报的 28 个安全漏洞,以及 110 余个功能缺陷。
目录

本次发布跳过了 PostgreSQL 18.4 到 18.5 版本,其中 18.5 因存在回归缺陷未正式对外发布。
更新完成后,有三类问题可能需要您执行额外的修复操作,下文将详细说明,分别涉及:
- 并行 GIN 索引构建
btree_gist扩展ltree扩展
完整的变更清单请查阅官方版本说明。
PostgreSQL 14 终止维护通知
PostgreSQL 14 将于 2026 年 11 月 12 日 停止接收所有修复更新。如果您的生产环境仍在运行 PostgreSQL 14,建议尽快制定升级计划,迁移至更新的受支持版本。更多信息可参考版本支持策略。
安全漏洞修复
本次更新覆盖了以下安全漏洞,各漏洞的详细影响范围与技术细节可通过官方链接查看:
- CVE-2026-6464:psql 的
COPY FROM STDIN提前失败时,会将数据行当作 psql 命令执行(CVSS v3.1: 8.1) - CVE-2026-6469:
ALTER TABLE ALTER TYPE会重置扩展统计信息的所有权(CVSS v3.1: 3.8) - CVE-2026-6470:未对类型的 USAGE 权限进行校验(CVSS v3.1: 4.3)
- CVE-2026-6471:逻辑解码可加载任意动态库文件(CVSS v3.1: 7.2)
- CVE-2026-14662:
tsvector与tsquery存在整数溢出导致的内存分配不足(CVSS v3.1: 8.8) - CVE-2026-14663:
pgcrypto对 OpenSSL 禁用的加密算法会静默以明文进行加解密(CVSS v3.1: 6.5) - CVE-2026-14664:正则表达式堆缓冲区溢出可导致任意代码执行(CVSS v3.1: 8.8)
- CVE-2026-14666:行级安全策略缓存未感知角色变更(CVSS v3.1: 4.2)
- CVE-2026-14668:选择性估算器中的
ctid类型混淆可泄露任意内存读取的推导信息(CVSS v3.1: 8.1) - CVE-2026-14669:
to_char堆缓冲区溢出可导致任意代码执行(CVSS v3.1: 8.8) - CVE-2026-14670:plperl 绑定对象堆缓冲区溢出可导致任意代码执行(CVSS v3.1: 8.8)
- CVE-2026-14671:
refint计划缓存类型混淆可导致任意代码执行(CVSS v3.1: 8.8) - CVE-2026-14672:非默认
scram_iterations配置下的响应时长差异可被用于探测用户是否存在(CVSS v3.1: 5.3) - CVE-2026-14673:
amcheck未清理不可信的搜索路径(CVSS v3.1: 3.8) - CVE-2026-14676:
pg_stat_statements堆缓冲区溢出可导致任意代码执行(CVSS v3.1: 8.8) - CVE-2026-14677:32 位平台下
pltcl与plperl存在整数溢出导致的内存分配不足(CVSS v3.1: 8.8) - CVE-2026-14678:
pg_trgm的picksplit函数存在缓冲区越界读取(CVSS v3.1: 4.3) - CVE-2026-14679:参数匹配中的栈缓冲区溢出会向服务器内存写入 0x0 和 0x1(CVSS v3.1: 8.2)
- CVE-2026-14680:通过
internal类型参数实现类型混淆(CVSS v3.1: 8.8) - CVE-2026-14681:GSSAPI 加密与 SSL 联用时加密强制逻辑失效(CVSS v3.1: 4.2)
- CVE-2026-15741:表达式反解析存在 SQL 注入风险,可通过
EXTRACT参数触发(CVSS v3.1: 8.8) - CVE-2026-15742:
fuzzystrmatch存在整数溢出可写入近乎任意地址(CVSS v3.1: 8.8) - CVE-2026-16238:
pg_restore_attribute_stats()中的类型混淆可导致任意代码执行(CVSS v3.1: 8.8) - CVE-2026-16239:游标
CLOSE+DECLARE中的类型混淆可导致任意代码执行(CVSS v3.1: 8.8) - CVE-2026-16241:ECPG 整数下溢可导致客户端崩溃(CVSS v3.1: 3.8)
- CVE-2026-18024:
ascii()函数存在缓冲区越界读取(CVSS v3.1: 4.3) - CVE-2026-18408:psql 的
\unrestrict命令允许 pg_dump 源端的超级用户在 psql 客户端执行任意代码(CVSS v3.1: 8.8) - CVE-2026-19385:pg_dump 堆缓冲区溢出可导致任意代码执行(CVSS v3.1: 8.8)
Bug 修复与功能优化
本次更新累计修复了过去数月上报的 110 余个缺陷。
以下问题仅影响 PostgreSQL 14、15、16 版本,因影响严重在此特别说明:
修复了重放旧次版本生成的 WAL(预写日志)时可能触发的自死锁问题。该回归缺陷由上一批次小版本更新引入,可能导致跟随旧次版本主库运行的备库陷入停滞。
以下问题主要针对 PostgreSQL 18 版本修复,其中多数问题也同时影响其他受支持版本:
- 修复并行 GIN 索引构建逻辑:解决了无法正确更新
pg_class中表的reltuples(行估计值)的问题。此前并行工作进程可能上报未初始化的行计数,导致reltuples被写入无效值(包括Infinity无穷大或NaN非数值)。该异常会导致自动清理(autovacuum)和自动分析(autoanalyze)永远跳过对应表,且问题无法自行恢复。如果您的业务表带有 GIN 索引,建议更新后校验reltuples取值是否合理,识别与修复方法见「更新说明」章节。 - 修复
btree_gist扩展的多项问题:包括修复float4/float8类型的NaN处理逻辑(含NaN的列可能返回错误查询结果),以及修正索引构建时bit/bit varying类型值的排序规则。更新后,您可能需要重建浮点型或位类型列上的btree_gist索引,详见「更新说明」。 - 修复
ltree比较中的整数溢出:包含约 14653 个以上标签的ltree值可能出现比较错误,表现为 B 树索引损坏。如果您使用ltree扩展,更新后可能需要重建受影响的索引,详见「更新说明」。 - 修复范围分区表的分区裁剪逻辑,避免在应当扫描默认分区时将其错误跳过 —— 此前该问题会导致查询结果缺失数据行。
- 修复带外表分区的分区表的多项缺陷:当运行时分区裁剪判定部分分区无需扫描时,对外服务器的进行中请求可能处理异常,引发执行失败。
- 修复了带
OLD/NEW关键字的RETURNING子句的多项问题。 - 优化了多连接键、且存在大量 NULL 值场景下的哈希连接性能。
- 修复优化器的多项结果错误问题:包括数组为空时的
value IN (array)判断、使用EXCLUDE子句或缺少ORDER BY的COUNT()窗口函数等场景。 - 补充了容器类型(数组、复合类型、范围类型)等值比较的哈希能力校验。缺少该校验时,优化器可能选择哈希执行计划,进而在运行时抛出「无法识别哈希函数」的错误。
- 修复排除约束索引的分区附加逻辑,同时解决了分区排除约束的转储与恢复异常。
- 修复了对延迟唯一性约束对应的索引执行
REINDEX CONCURRENTLY(并发重建索引)时,可能误报约束违反的问题。 - 恢复了一项索引扫描优化:当索引与表达式的排序规则不同时,可将
LIKE或正则表达式的精确匹配模式转换为等值索引条件。 - 修复
jsonpath的多项问题:其中@?和@@运算符现在会对路径表达式中未定义的变量正确抛出错误。此前由于这两个运算符无法传入变量值,未定义变量会被当作 JSONnull处理而非报错,还可能引发无限制的内存消耗。 - 强制阻断对其他会话临时表的访问,此前该漏洞可能导致静默的错误查询结果。
- 修复临时表访问时的「无可用本地缓冲区」错误:当
effective_io_concurrency(有效 IO 并发度)设置过高时,单条读取流可能耗尽所有本地缓冲区。 - 修正自动清理处理数据库的顺序:此前按优先级从低到高处理,现已修正为从高到低。
- 恢复
VACUUM事务回绕故障保护模式的设计行为,使其可以正常使用全部共享缓冲池;此前的缺陷会导致紧急清理速度大幅变慢。 - 修复 GiST 和 SP-GiST 索引仅扫描(index-only scan)时的索引元组解码错误,该问题可能输出损坏数据。
- 修复可串行化(
SERIALIZABLE)隔离级别下冲突检测的竞态条件:检查初始为空的 B 树索引时可能漏检冲突,导致冲突事务同时提交,破坏事务可串行性。 - 修复表可见性映射中位清除操作的 WAL 日志记录逻辑:该问题可能导致增量备份出错,或无法修正页撕裂(torn-page)写入。
- 修复空预备事务的逻辑解码问题:无可解码变更的预备事务,可能在未发送
PREPARE指令的情况下,直接向输出插件发送COMMIT PREPARED或ROLLBACK PREPARED,导致内置订阅端的复制中断。 - 修复
libpq的多项问题:包括确保读取数据时排空 SSL 或 GSS 解密缓冲区中的所有待处理字节,避免客户端等待已到达的数据。 - 修复
pg_createsubscriber执行失败后的清理逻辑,确保会清理发布端遗留的对象(包括复制槽)。 - 修复
pg_restore结合--statistics/--statistics-only与其他选择性恢复选项(如--schema)时的行为,使其恢复结果与pg_dump逻辑一致。
本次发布同时更新了时区数据库至 tzdata 2026c 版本:
- 加拿大阿尔伯塔省(时区
America/Edmonton)自 2026 年 11 月起全年采用 UTC-06(即永久夏令时),本次更新假定其时区缩写此后统一为 CST(后续可能调整)。 - 摩洛哥(时区
Africa/Casablanca)将于 2026 年 9 月 20 日起永久采用 UTC+00,不再执行夏令时切换。
更新说明
所有 PostgreSQL 小版本更新均为累积更新。和常规小版本升级一致,应用本次更新无需转储重载数据库,也不需要使用 pg_upgrade;只需停止 PostgreSQL 服务,替换二进制文件后重启即可。
GIN 索引表检查
如果您的业务表带有 GIN 索引,建议更新后校验 reltuples 取值。此前并行 GIN 索引构建的缺陷可能导致 reltuples 被写入无效值,进而导致自动清理和自动分析永远跳过该表。
可使用以下 SQL 查询所有带 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;
对于 reltuples 取值异常的表,对其执行一次 ANALYZE(或新建一个索引)即可重置该值。
btree_gist 索引重建
如果您使用 btree_gist 扩展,请重建以下两类索引:
- 可能包含
NaN值的float4/float8列上的btree_gist索引 bit/bit varying列上的btree_gist索引
示例命令:
REINDEX INDEX your_index_name;
ltree 索引重建
如果您使用 ltree 扩展,且 ltree 列上的 B 树索引包含极多标签(约 14653 个以上),请重建这些索引(可能已存在损坏),示例命令同上。
跳过了多个历史小版本的用户,可能需要执行额外的更新后操作,详情请查阅对应历史版本的发布说明。
更多细节请参考官方版本说明。
PostgreSQL 19 Beta 3 说明
本次发布是 PostgreSQL 19 的第三个公开测试版本。
秉承 PostgreSQL 开源社区的协作精神,我们强烈呼吁大家在测试环境中验证 PostgreSQL 19 的各项新功能,协助我们排查缺陷与兼容性问题。我们不建议在生产环境中运行 PostgreSQL 19 Beta 3,但鼓励您使用典型的业务工作负载对该测试版进行充分验证。
您的测试与反馈,是保障 PostgreSQL 19 延续稳定可靠标准、持续打造全球最先进开源关系型数据库的关键。您可以访问官方页面了解 Beta 测试流程与参与方式:
https://www.postgresql.org/developer/beta/
升级到 PostgreSQL 19 Beta 3
从旧版本 PostgreSQL 升级至 19 Beta 3,需要采用与主版本间升级一致的方案(如 pg_upgrade 或 pg_dump/pg_restore)。更多信息请参考官方升级文档。
Beta 2 以来的主要变更
PostgreSQL 19 Beta 3 的修复与调整包括:
- 回退了
GROUP BY ALL特性 - 修复了新增
FOR PORTION OF时态表语法的多项问题 - 修复了新增逻辑复制序列同步功能的多项问题,包括
REFRESH SEQUENCES相关的竞态条件 - 修复了并发激活逻辑解码时可能出现的「意外的逻辑解码状态变更」错误
- 修复了订阅对象所有权变更的相关问题
- 修复了
postgres_fdw下推带隐式类型转换的数组比较(如field = ANY($1))时返回错误结果的问题 - 修复了涉及可空唯一约束的外键检查时的崩溃问题
- 修复了
pg_plan_advice对数值字面量中下划线的解析错误 - 修复了解析
JSON_ARRAY(query)时缺失FORMAT子句的问题
完整的新增与变更特性清单请查阅官方版本说明:
https://www.postgresql.org/docs/19/release-19.html
Bug 与兼容性测试
PostgreSQL 每个版本的稳定性,都离不开社区用户的共同验证 —— 用您的真实工作负载和测试工具验证待发布版本,在正式版发布前发现缺陷与回归问题。当前仍处于 Beta 阶段,数据库行为、功能细节与 API 仍可能进行小幅调整。您的反馈与测试将决定新特性的最终打磨方向,也会影响正式版的发布时间,请尽早开展测试。
公开问题清单可在 PostgreSQL 维基页面查看。您可以通过官网表单提交 Bug:
https://www.postgresql.org/account/submitbug/
参考
PostgreSQL 新闻: PostgreSQL 18.6, 17.11, 16.15, 15.19, 14.24 and 19 Beta 3 Released!