PostgreSQL 10.5、9.6.10、9.5.14、9.4.19、9.3.24 和 11 Beta 3 发布!

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

PostgreSQL 全球开发组已发布我们数据库系统所有受支持版本的更新,包括 10.5、9.6.10、9.5.14、9.4.19、9.3.24。此版本修复了两个安全问题以及过去三个月报告的错误。

如果您的系统有不受信任的用户访问,并且您正在运行 PostgreSQL 9.5 或更高版本,或者安装了 dblinkpostgres_fdw 扩展,您必须尽快应用此更新。所有其他用户可以在下次方便的停机时间进行升级。

请注意,PostgreSQL 在版本 10.0 发布时更改了其版本控制方案,因此从任何 10.x 版本更新到版本 10.5 都被认为是小版本更新。

PostgreSQL 全球开发组还宣布,PostgreSQL 11 的第三个测试版现已可供下载。此版本包含 PostgreSQL 11 最终版本中将提供的所有功能的预览(尽管发布的一些细节可能会在此之前发生更改),以及在第二个测试版期间报告的错误修复。

安全问题

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

CVE-2018-10915:某些主机连接参数会破坏客户端安全防御

libpq(PostgreSQL 的客户端连接 API,也被其他连接库使用)存在一个内部问题,即在尝试重新连接时不会重置其所有连接状态变量。特别是,确定连接是否需要密码的状态变量不会被重置,这可能允许需要 libpq 的功能的用户(例如 dblinkpostgres_fdw 扩展)登录到他们不应该访问的服务器。

您可以通过在 PostgreSQL shell 中运行以下命令来检查您的数据库是否安装了任何扩展

\dx dblink|postgres_fdw

建议用户尽快升级其 libpq 安装。

PostgreSQL 全球开发组感谢 Andrew Krasichkov 报告此问题。

CVE-2018-10925INSERT ... ON CONFLICT DO UPDATE 中存在内存泄漏和缺少授权

能够执行 CREATE TABLE 的攻击者可以使用 upsert (INSERT ... ON CONFLICT DO UPDATE) 查询读取服务器内存的任意字节。默认情况下,任何用户都可以利用这一点。具有特定 INSERT 权限和给定表中至少一列 UPDATE 权限的用户还可以使用视图和 upsert 查询更新其他列。

错误修复和改进

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

这些修复包括

  • VACUUM 相关的多个修复,包括可能导致某些系统目录表数据损坏的问题
  • 用于重放预写日志的多个修复,包括刚刚提升的备用服务器如果在第一次恢复后检查点之前崩溃将无法重新启动的情况
  • 重放预写日志的几个性能改进
  • 逻辑复制和逻辑解码的几个修复,包括确保逻辑 WAL 发送者正确报告流式传输状态
  • 允许在单用户模式下删除复制槽
  • 修复在并行查询中使用时,使 variance 和类似的聚合函数返回准确结果
  • 修复 SQL 标准 FETCH FIRST 语法以允许参数 ($n),正如标准所期望的那样
  • 修复以确保执行并行索引扫描的进程将响应信号,例如中止查询的信号
  • 修复 EXPLAIN 对资源使用情况的计算,特别是并行工作线程中的缓冲区访问
  • 查询计划器的几个修复,包括改进哈希连接的成本估算以及选择对复合类型列上的合并连接使用索引
  • 修复了在运行 Linux 或 FreeBSD 的多 CPU 系统上与 POSIX 信号量相关的性能回归问题
  • 修复了从 PostgreSQL 9.4 之前的版本进行 pg_upgrade 后可能导致 GIN 索引断言失败的问题
  • 修复了 SHOW ALL 以向允许读取所有设置的角色显示超级用户配置设置
  • 修复了 COPY FROM .. WITH HEADER 在处理完每 4,294,967,296 行后会丢弃一行的问题
  • XML 支持的几个修复,包括使用文档节点作为 XPath 查询的上下文(如 SQL 标准中定义的那样),这会影响 xpathxpath_exists 函数,以及 XMLTABLE
  • 修复了在某些情况下使用 hostaddr 的 libpq
  • Windows 的几个 ecpg 修复
  • 修复了 Windows 客户端程序中的密码提示,以便正确禁用回显
  • 几个 pg_dump 修复,包括正确输出约束索引的 REPLICA IDENTITY 属性
  • 使 pg_upgrade 检查旧服务器是否已干净关闭

此更新还包含 tzdata 版本 2018e,其中包含朝鲜的更新。2018e 还重新引入了最初在 2018a 中引入的负 DST 更改,这会影响爱尔兰 (1971-) 的历史和当前时间戳,以及纳米比亚 (1994-2017) 和前捷克斯洛伐克 (1946-1947) 的历史时间戳。如果您的应用程序在受影响的日期范围内存储带有这些时区的时间戳,我们请您进行测试以确保您的应用程序按预期运行。

PostgreSQL 11 Beta 3 修复和改进

PostgreSQL 11 Beta 3 包含累积版本中的适用错误修复以及 20 多个自身的修复。有关 PostgreSQL 11 Beta 3 的完整修复列表,请访问未解决的问题页面。

PostgreSQL 9.3 的 EOL 警告

PostgreSQL 9.3 将在 11 月的下一次计划发布后停止生命周期。我们敦促用户尽快开始规划升级到更高版本的 PostgreSQL。有关更多信息,请参阅我们的版本控制策略

更新

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

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

升级到 PostgreSQL 11 Beta 3

要从 Beta 1 或 2 或早期版本的 PostgreSQL 升级到 PostgreSQL 11 Beta 3,您需要使用类似于在 PostgreSQL 的主要版本之间升级的策略(例如 pg_upgradepg_dump / pg_restore)。有关更多信息,请访问有关升级的文档部分。

PostgreSQL 11 Beta 时间表和测试

这是版本 11 的第三个测试版。PostgreSQL 项目将根据需要发布其他测试版以进行测试,然后发布一个或多个候选版本,直到 2018 年末最终发布。有关更多信息,请参阅Beta 测试页面。

每个 PostgreSQL 版本的稳定性在很大程度上取决于您(社区)使用您的工作负载和测试工具测试即将发布的版本,以便在 PostgreSQL 11 发布之前找到错误和回归。随着我们越来越接近最终版本,我们非常感谢迄今为止进行的所有测试。您的反馈和测试将有助于确定新功能的最终调整,因此请继续测试。用户测试的质量有助于确定我们何时可以发布最终版本。

PostgreSQL wiki 中公开提供了未解决的问题列表。您可以使用 PostgreSQL 网站上的此表格报告错误

https://postgresql.ac.cn/account/submitbug/

链接