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

PostgreSQL 12.3、11.8、10.13、9.6.18 和 9.5.22 发布!

发布于 2020-05-14,作者:PostgreSQL Global Development Group
PostgreSQL 项目 安全

PostgreSQL Global Development Group 发布了所有支持版本数据库系统的更新,包括 12.3、11.8、10.13、9.6.18 和 9.5.22。本次发布修复了一个 PostgreSQL 服务器中的安全漏洞,以及过去三个月报告的 75 个以上的 bug。

请尽快安排更新。

安全问题

  • CVE-2020-10733:Windows 安装程序从不受控制的目录运行可执行文件。

受影响版本:9.5 - 12。安全团队不测试不受支持的版本,但此问题存在于 PostgreSQL 9.5 之前。

PostgreSQL 的 Windows 安装程序会调用系统提供的、未完全限定路径的可执行文件。安装程序加载目录中的可执行文件或当前工作目录中的可执行文件会优先于预期的可执行文件。有权限将文件添加到其中一个目录中的攻击者可以利用此漏洞,以安装程序的管理员权限执行任意代码。

PostgreSQL 项目感谢 Hou JingYi (@hjy79425575) 报告此问题。

错误修复和改进

本次更新还修复了过去几个月报告的 75 个以上的 bug。其中一些问题仅影响 12 版本,但也可能影响所有支持的版本。

部分修复包括:

  • 对 GENERATED 列的几项修复,包括一个问题:当生成列的输出与表中的物理列完全相同时,可能导致表崩溃或数据损坏,例如,如果表达式调用了一个可能返回其自身的函数。
  • ALTER TABLE 的几项修复,包括确保 SET STORAGE 指令传播到表的索引。
  • 修复在使用 DROP OWNED BY 时,另一个会话正在删除相同对象的潜在竞态条件。
  • 允许在分区具有继承的 ROW 触发器时对其进行分离。
  • REINDEX CONCURRENTLY 的几项修复,特别是当 REINDEX CONCURRENTLY 操作失败时的问题。
  • 修复当 COLLATE 应用于分区约束表达式中不可排序的类型时发生的崩溃。
  • 修复浮点溢出/欠载检测中的性能回归。
  • 对全文搜索的几项修复,特别是短语搜索。
  • 修复在查询的 FROM 子句中使用集合返回函数时发生的查询生命周期内存泄漏。
  • VACUUM VERBOSE 输出的几项报告修复。
  • 允许 circle 类型输入接受文档中指定的 (x,y),r 格式。
  • 允许 get_bit()set_bit() 函数在长度超过 256MB 的 bytea 字符串上不失败。
  • 在崩溃恢复期间避免 WAL 段过早回收,这可能导致 WAL 段在存档之前被回收。
  • 通过跳过不相关的 timeline,避免在恢复期间尝试从归档存储中获取不存在的 WAL 文件。
  • 对逻辑复制和复制槽的几项修复。
  • 修复同步备机管理中的多项竞态条件,包括在更改 synchronous_standby_names 设置时发生的一个。
  • 对 GSSAPI 支持的几项修复,包括在使用 GSSAPI 加密时发生的内存泄漏的修复。
  • 确保 pg_read_all_stats 角色的成员可以读取所有统计信息视图。
  • 修复 information_schema.triggers 视图中的性能回归。
  • 修复在使用 sslmode=verify-full 时 libpq 中的内存泄漏。
  • 修复 psql 在尝试重新建立失败连接时发生的崩溃。
  • 允许在 psql 中对 \gx 命令的文件名参数进行制表符补全。
  • ALTER ... DEPENDS ON EXTENSION 添加 pg_dump 支持。
  • pg_dump 的几项其他修复,包括转储 RLS 策略的注释以及将事件触发器的恢复推迟到最后。
  • 确保 pg_basebackup 生成有效的 tar 文件。
  • pg_checksums 跳过属于不同 PostgreSQL 主版本的表空间子目录。
  • 多项 Windows 兼容性修复。

本次更新还包含了 tzdata 2020a 版本,用于摩洛哥和加拿大育空地区的 DST 法规变更,以及上海的历史修正。America/Godthab 时区已重命名为 America/Nuuk,以反映当前英语用法;但是,旧名称仍作为兼容性链接可用。此次更新还更新了 initdb 已知的 Windows 时区名称列表,以包含最近添加的名称。

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

更新

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

跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。

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

链接