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

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。本次发布修复了两个安全问题以及过去三个月报告的 bug。

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

请注意,PostgreSQL 在 10.0 版本发布后更改了其版本号方案,因此从任何 10.x 版本更新到 10.5 版本被视为小版本更新。

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

安全问题

本次发布解决了两个安全漏洞

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 多个 bug。其中一些问题仅影响版本 10,但许多问题影响所有支持的版本。

这些修复包括

  • 几项与 VACUUM 相关的修复,包括可能导致某些系统目录表数据损坏的问题
  • 几项用于重放预写日志的修复,包括一个场景,即刚刚提升为主服务器的备用服务器在第一次恢复后检查点之前崩溃时不会重新启动
  • 对重放预写日志的几项性能改进
  • 几项用于逻辑复制和逻辑解码的修复,包括确保逻辑 WAL 发送器正确报告流式状态
  • 允许在单用户模式下删除复制槽
  • 修复使 variance 和类似的聚合函数在并行查询执行时返回准确结果
  • 修复 SQL 标准的 FETCH FIRST 语法,允许使用参数 ($n),正如标准所期望的
  • 修复以确保进行并行索引扫描的进程会响应信号,例如中止查询的信号
  • 修复 EXPLAIN 对并行工作负载中资源使用情况(特别是缓冲区访问)的核算
  • 几项针对查询规划器的修复,包括改进哈希连接的成本估算,以及选择为复合类型列上的合并连接使用索引
  • 修复与 Linux 或 FreeBSD 多 CPU 系统上 POSIX 信号量相关的性能回归
  • 修复 GIN 索引,该修复可能导致从 PostgreSQL 9.4 之前的版本升级后出现断言失败
  • 修复 SHOW ALL 以向允许读取所有设置的角色显示超级用户配置设置
  • 修复 COPY FROM .. WITH HEADER 在处理 4,294,967,296 行后会丢弃一行的错误
  • 几项 XML 支持的修复,包括使用文档节点作为 XPath 查询的上下文,如 SQL 标准中所定义,这会影响 xpathxpath_exists 函数,以及 XMLTABLE
  • 修复 libpq 在某些使用 hostaddr 的情况下的问题
  • 几项 ecpg 在 Windows 上的修复
  • 修复 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 包含了累积发布中的适用 bug 修复以及其自身的 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 版本的第三个 beta 版本。PostgreSQL 项目将在需要时发布其他 beta 版本进行测试,然后发布一个或多个候选版本,直到 2018 年底最终发布。有关更多信息,请参阅 Beta 测试页面。

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

PostgreSQL wiki 上公开提供了一个 待处理项目列表。您可以使用 PostgreSQL 网站上的此表单 报告 bug

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

链接