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 版本被认为是次要更新。
安全问题
此版本修复了两个安全漏洞
错误修复和改进
此更新修复了过去几个月报告的 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,其中包含巴西、圣多美和普林西比的 DST 法律变更更新,以及玻利维亚、日本和南苏丹的历史更正。US/Pacific-New 区域已删除(无论如何它只是“America/Los_Angeles”的别名)。
更新
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件。
如果您的安装受到以下问题之一的影响,则可能需要执行其他更新后步骤
- 受 GIN 和哈希索引问题影响的用户应考虑重建这些索引
- 从 PostgreSQL 文档复制“INSTR”示例的用户应分析他们的代码,以确定是否需要应用更正后的“INSTR”示例
- 在表达式索引或物化视图中使用“contrib/cube”中的“~>”运算符的用户将需要分别重新索引和刷新它们。此更改也不向后兼容,因此在发布到生产环境之前,请测试任何使用此运算符的代码。
跳过一个或多个更新版本的用户可能需要运行其他更新后步骤;请参阅早期版本的发行说明以了解详细信息。
链接