2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 17.5, 16.9, 15.13, 14.18, and 13.21 发布!

发布于 2025-05-08,作者:PostgreSQL 全球开发组
PostgreSQL 项目 安全

PostgreSQL 全球开发组已发布所有受支持版本的 PostgreSQL 的更新,包括 17.5、16.9、15.13、14.18 和 13.21。此次发布修复了 1 个安全漏洞和过去几个月报告的 60 多个错误。

有关更改的完整列表,请参阅 发行说明

PostgreSQL 13 结束生命周期 (EOL) 通知

PostgreSQL 13 将于 2025 年 11 月 13 日停止接收修复。如果您正在生产环境中使用 PostgreSQL 13,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。有关更多信息,请参阅我们的版本策略

安全问题

CVE-2025-4207:PostgreSQL GB18030 编码验证可能在文本验证失败时读取超出分配区域的一个字节

CVSS v3.1 基本分:5.9

受支持的、有漏洞的版本:13 - 17。

PostgreSQL GB18030 编码验证中的缓冲区溢出读取允许数据库输入提供者在 1 字节溢出读取可能导致进程终止的平台上实现临时拒绝服务。这会影响数据库服务器以及 libpq。PostgreSQL 17.5、16.9、15.13、14.18 和 13.21 之前的版本受到影响。

错误修复和改进

此次更新修复了过去几个月报告的 60 多个错误。以下列出的问题会影响 PostgreSQL 17。其中一些问题也可能影响 PostgreSQL 的其他受支持版本。

  • 正确处理分区表上的自引用外键。创建或附加分区时,如果约束引用的表是同一个分区表,则创建或附加分区未能为外键约束生成所需的目录条目。这导致约束未能完全强制执行。要解决此问题,请参阅“更新”部分中的说明。
  • 修复了在使用 BRIN bloom 索引(例如使用 date_bloom_ops 运算符类)时可能导致数据丢失的问题。
  • 修复了在分区表上使用 DO NOTHING 操作的 MERGE
  • 当表具有GENERATED且该列为域类型,并且该域的约束不允许 NULL 值时,防止 INSERT 命令失败。
  • 修复了 ALTER TABLE .. ADD COLUMN 以正确处理具有自身默认值的域类型且未设置列的 DEFAULT 的情况。
  • 修复了在 JSON 构造函数表达式的键中执行转换时出现的问题。
  • 修复了 XMLSERIALIZE(),以便在视图或规则中存在 INDENT 选项时,它能被正确转储。这在恢复时很明显。
  • 多项查询规划器修复,包括避免在具有 FILTER 子句以及 ORDER BYDISTINCT 子句的聚合函数中过早评估参数,这可能导致不必要的失败。
  • 修复了在对同一表执行没有输出列的位图扫描时,如果同时进行 vacuum 操作,可能返回不正确结果的问题。
  • 修复了当存在大量搜索键时,GIN 索引搜索启动的性能问题,例如 jsonbcol ?| array[...](其中数组元素有数万个)。
  • 确保在最多一秒内报告活动 WAL 发送器的 I/O 统计信息。
  • 修复了启动后立即处理 synchronous_standby_names 时出现的竞争条件,在该条件下,后端可能未能等待同步提交。
  • 避免在 scram_iterations 设置为 INT_MAX 时出现无限循环。
  • 多项逻辑复制修复,包括处理删除行周围的 vacuum(这些行仍然是逻辑解码所必需的)。
  • 防止在不获取强锁的模式修改操作(DDL)影响正在逻辑复制的表时可能发生的数据丢失。
  • 防止在逻辑复制中出现可能由于应用工作进程错误处理而导致重复数据应用的问题。
  • 改进了 reindexdb 处理并行 reindex 操作调度的能力,以实现预期的并行度。

此次发布还更新了时区数据文件至 tzdata release 2025b,以处理智利的 DST 法规变更,以及伊朗的历史修正。此外,新增了时区 America/Coyhaique,用于智利的 Aysén 地区,该地区全年采用 UTC-03,与 America/Santiago 不同。

更新

所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。

如果您在分区表上创建了自引用外键,更新后,如果自引用外键的创建以来已有分区被创建或附加,您应该删除并重新创建这些外键。分区中可能存在违反此约束的行,在这种情况下,重新创建约束将失败,您需要先更正这些行,然后再重试。

跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;请参阅早期版本的发行说明以获取详细信息。

有关更多详细信息,请参阅 发行说明

链接

如果您对此版本公告有任何更正或建议,请将其发送至 pgsql-www@lists.postgresql.org 公共 邮件列表