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

PostgreSQL 9.4.2、9.3.7、9.2.11、9.1.16 和 9.0.20 发布!

发布于 2015-05-22,作者 PostgreSQL 全球开发组

PostgreSQL 全球开发组发布了一个更新,为 PostgreSQL 数据库系统的所有支持版本提供了多项功能和安全修复,其中包括小版本 9.4.2、9.3.7、9.2.11、9.1.16 和 9.0.20。本次更新包含了一个对 PostgreSQL 9.3 和 9.4 中潜在数据损坏问题的关键修复;使用这些版本的用户应尽快更新其服务器。

在应用此更新之前,请参阅 关于此更新可能对部分用户造成问题的常见问题解答

数据损坏修复

对于 PostgreSQL 9.3 或 9.4 版本的用户,本次发布修复了一个数据库未能防止“多事务回绕”(multixact wraparound)的问题,该问题可能导致数据损坏或丢失。交易量高(每小时 100 万次或以上)且数据库中有许多外键的用户尤其容易受到影响。我们强烈建议所有使用 9.4 和 9.3 版本的用户在接下来的几天内更新其安装。

9.2 及更早版本的用户不受此问题影响。

安全修复

本次更新修复了过去几个月在 PostgreSQL 中报告的三个安全漏洞。这些问题中没有被认为特别紧急的。但是,用户应进行检查,以防其安装存在漏洞。

  • CVE-2015-3165 身份验证超时后的重复“释放”(free)。
  • CVE-2015-3166 标准库中出现意外错误。
  • CVE-2015-3167 pgcrypto 在使用错误密钥进行解密时出现多个错误消息。

此外,我们建议所有使用 Kerberos、GSSAPI 或 SSPI 身份验证的用户在 pg_hba.conf 中设置 include_realm 为 1,这将在未来版本中成为默认设置。

有关这些问题以及之前已修复问题的更多信息,请访问 PostgreSQL 安全页面。

其他修复和改进

citext 扩展的新版本(非默认)修复了其先前未记录的 regexp_matches() 函数,使其与普通文本版本中的这些函数保持一致。已修复版本与旧版本具有不同的返回类型,因此 CIText 的用户应在运行“ALTER EXTENSION citext UPDATE”更新函数之前测试其应用程序。

除上述内容外,本次累积更新版本还修复了 50 多个报告的问题。命名的大部分问题会影响所有支持的版本。这些修复包括:

  • 将 JSON 转换时将无限日期和时间戳渲染为 infinity
  • 修复 json/jsonb 的 populate_record() 和 to_record()
  • 修复了延迟排除约束的错误检查
  • 改进了星型模式查询的规划
  • 修复了 JOIN 规划中的三个问题
  • 确保了安全屏障视图(security barrier views)的正确锁定
  • 修复了当 max_prepared_transactions 过小时启动时发生的死锁
  • 崩溃后递归 fsync() 数据目录
  • 修复了 autovacuum 启动器可能未能关闭的问题
  • 在 LockBufferForCleanup() 中处理意外信号
  • 修复了在对带检查约束的表执行 COPY IN 时发生的崩溃
  • 避免了等待只读事务的同步复制
  • 修复了哈希索引(hash indexes)的两个问题
  • 防止 GIN 索引 vacuum 中的内存泄漏
  • 修复了后台工作进程(background workers)的两个问题
  • 对逻辑解码复制进行了多项修复
  • 修复了 pg_dump 和 pg_upgrade 的几个小问题

本次发布包含了 tzdata release 2015d 的更新,包括埃及、蒙古和巴勒斯坦的更新,以及加拿大和智利的历史性变更。

9.0 即将结束生命周期

9.0 版本将于 2015 年 9 月结束生命周期。这意味着本次更新很可能是该版本的倒数第二次更新。PostgreSQL 9.0 的用户应在此之前开始计划升级到更现代化的版本。有关生命周期结束日期的更多信息,请参阅我们的 版本策略

更新

与以往的小版本发布一样,用户无需转储和重新加载数据库或使用 pg_upgrade 即可应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件即可。跳过多个更新版本的用户可能需要执行额外的后续步骤;详情请参阅发行说明。

链接