PostgreSQL 11.1、10.6、9.6.11、9.5.15、9.4.20 和 9.3.25 已发布!

发布于 2018-11-08,作者:PostgreSQL 全球开发组
PostgreSQL 项目

PostgreSQL 全球开发组已发布对我们数据库系统所有受支持版本的更新,包括 11.1、10.6、9.6.11、9.5.15、9.4.20 和 9.3.25。此版本修复了一个安全问题以及过去三个月报告的错误。

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

此更新也是 PostgreSQL 9.3 的最终版本,该版本现已停止维护,将不再收到任何错误或安全修复。如果您的环境仍在使用 PostgreSQL 9.3,请尽快计划更新到社区支持的版本。有关更多信息,请参阅我们的版本策略

安全问题

此版本已修复一个安全漏洞

  • CVE-2018-16850pg_upgradepg_dump 中的 SQL 注入,通过 CREATE TRIGGER ... REFERENCING

受影响版本:10、11

通过使用精心设计的触发器定义,当超级用户在数据库上运行 pg_upgrade 或在 pg_dump 转储/恢复周期期间,攻击者可以使用超级用户权限运行任意 SQL 语句。此攻击需要对某些非临时模式具有 CREATE 权限或对表具有 TRIGGER 权限。这在默认的 PostgreSQL 配置中是可利用的,其中所有用户都对 public 模式具有 CREATE 权限。

错误修复和改进

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

这些版本包括以下修复:

  • 确保自动创建的子索引与父分区索引在相同的表空间中创建
  • 修复了触发器的几个崩溃问题
  • 修复了将 ON COMMIT DELETE ROWS 应用于分区临时表的问题
  • 修复了在使用并行哈希连接的 LEFT JOIN 时如何处理 NULL
  • 修复了在 CALL 语句中使用命名或默认参数的几个问题
  • 修复了带有 ORDER BY 列的严格聚合函数(即不能接受 NULL 输入的聚合)强制执行严格性检查的问题
  • 修复了将表达式强制转换为数组类型的 CASE 语句
  • 禁用更新表达式索引的优化,以防止崩溃
  • 修复了在使用 SP-GiST 索引的特定情况下发生的内存泄漏
  • 修复了 pg_verify_checksums 错误地报告不应该有校验和的文件的错误
  • 防止在 wal_level 设置为不支持现有复制槽的值时启动 PostgreSQL 服务器
  • 确保服务器在等待客户端输入之前处理已收到的 NOTIFY 和 SIGTERM 中断
  • 允许 PL/Ruby 与较新版本的 PostgreSQL 一起工作
  • 修复了 Windows 上 U+FFFF 以上的 Unicode 字符的字符类检查,这会影响全文搜索以及 contrib/ltreecontrib/pg_trgm
  • 修复了 psql 在下个命令之前不会报告收到来自 NOTIFY 调用的消息的情况
  • 修复了 macOS 10.14 (Mojave) 上的构建问题
  • 修复了 Windows 平台的几个构建问题

此更新还包含 tzdata 2018g 版本,用于智利、斐济、摩洛哥和俄罗斯(伏尔加格勒)的 DST 法律变更,以及对中国、夏威夷、日本、澳门和朝鲜的历史更正。

PostgreSQL 9.3 已停止维护 (EOL)

PostgreSQL 9.3 现已停止维护,将不再收到任何错误或安全修复。我们敦促用户尽快开始计划升级到更高版本的 PostgreSQL。有关更多信息,请参阅我们的版本策略

更新

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

如果您的系统正在使用 pg_stat_statements 并且您正在运行 PostgreSQL 10 或 PostgreSQL 11 的版本,我们建议您在升级后执行以下命令

ALTER EXTENSION pg_stat_statements UPDATE;

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

链接