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

PostgreSQL 10.2、9.6.7、9.5.11、9.4.16 和 9.3.21 发布!

由 PostgreSQL 全球开发组于2018-02-08发布
PostgreSQL 项目 安全

PostgreSQL 全球开发组发布了对其所有受支持版本数据库系统的更新,包括 10.2、9.6.7、9.5.11、9.4.16、9.3.21。此版本修复了两个安全问题。此版本还修复了可能导致数据损坏的 VACUUM、GIN 索引和哈希索引问题,并修复了使用并行查询和逻辑复制的问题。

所有使用受影响版本的 PostgreSQL 用户都应尽快更新。请参阅下面的“更新”说明,了解可能需要的任何更新后步骤。

请注意,PostgreSQL 在发布 10.0 版本时更改了版本方案,因此从 10.0 或 10.1 更新到 10.2 版本被视为次要更新。

安全问题

此版本修复了两个安全漏洞

  • CVE-2018-1052:修复了包含多个表达式的分区键的处理
  • CVE-2018-1053:确保使用“pg_upgrade”创建的所有临时文件都是非全局可读的

错误修复和改进

此次更新修复了过去几个月报告的 60 多个错误。其中一些问题仅影响 10 版本,但许多问题影响所有受支持的版本。

  • 修复了在处理包含多个表达式的分区键时出现的崩溃和潜在的后端内存泄露
  • 通过不允许临时文件(包含 pg_upgrade 创建的数据库密码)全局可访问,修复了临时文件中可能泄露数据库密码的问题
  • 修复了 VACUUM 无法删除已更新的死行的问题,如果它们在“key-share”锁定期间被更新,这可能导致数据损坏。
  • 修复了 GIN 索引,通过确保 VACUUM 清理待处理插入列表来防止膨胀。
  • 修复了由于未能将元数据页标记为脏而可能导致哈希索引损坏的问题
  • 修复了并行查询的几个潜在崩溃场景,包括位图堆扫描无法分配内存时。
  • 修复了并行查询中几个潜在的挂起情况,包括并行工作进程启动失败时。
  • 修复了从并行工作进程收集 EXPLAIN 统计信息。
  • 当多个会话正在运行 CREATE INDEX CONCURRENTLY 时,防止虚假的死锁失败。
  • 修复了在逻辑复制中使用触发器时的行为。
  • 对“walsender”功能进行了多项修复,以提高稳定性和对复制过程的可见性。
  • 修复了逻辑解码,以正确清理已崩溃事务的磁盘文件。
  • 对标识列进行了多项修复,包括不允许在派生自复合类型和分区的表上使用标识列。
  • 修复了布尔类型和数组类型的分区键的列表分区约束的处理。
  • 当表包含继承的常规子表和外键子表的混合时,修复了 UPDATE 和 DELETE 查询不正确的计划生成。
  • 修复了在使用展平子查询时,涉及 GROUPING SETS 的情况产生的查询结果不正确。
  • 修复了零列上的 UNION/INTERSECT/EXCEPT,例如“SELECT UNION SELECT;”
  • 对 LATERAL 子查询中的子查询进行了多项修复。
  • 对查询计划估算进行了多项改进。
  • 允许支持 SCRAM 通道绑定的客户端(例如,未来版本的 PostgreSQL 或 libpq)连接到 PostgreSQL 10 服务器。
  • 修复了用于帮助从 Oracle(r) PL/SQL 迁移到 PostgreSQL PL/pgSQL 的示例 INSTR() 函数,以正确匹配 Oracle 的函数行为。
  • 修复了 pg_dump,以确保权限(ACL)、安全标签和注释条目在存档输出中可靠可识别。
  • 修改了 contrib/cube 的“cube ~> int”运算符的行为,使其与 KNN 搜索兼容。这是一个向后不兼容的更改,任何使用此运算符的表达式索引或物化视图都需要分别重新索引和刷新。
  • 对 contrib/postgres_fdw 进行了多项修复,以防止查询计划器错误。
  • 在 contrib/start-scripts/macos 目录中为 macOS 上的 PostgreSQL 添加了现代自动启动脚本示例。
  • 对 Windows 进行了多项修复,包括 postmaster 启动和与 libperl 的兼容性。
  • 修复了自旋锁并支持 Motorola 68K 和 88K 架构。

此次更新还包含了 tzdata 版本 2018c,更新了巴西、圣多美和普林西比的夏令时法律变更,以及对玻利维亚、日本和南苏丹的历史性更正。已移除 US/Pacific-New 时区(它只是“America/Los_Angeles”的别名)。

更新

所有 PostgreSQL 更新版本都是累积的。与往常一样,用户无需转储和重新加载数据库或使用 pg_upgrade 即可应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件。

如果您的安装受以下问题之一的影响,您可能需要执行额外的更新后步骤。

  • 受 GIN 和哈希索引问题影响的用户应考虑重建这些索引。
  • 从 PostgreSQL 文档中复制了“INSTR”示例的用户,应分析其代码以确定是否需要应用已更正的“INSTR”示例。
  • 在表达式索引或物化视图中使用“contrib/cube”中的“~>”运算符的用户,需要分别重新索引和刷新它们。此更改也向后不兼容,因此请在发布到生产环境之前测试使用此运算符的任何代码。

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

链接