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

PostgreSQL 12.1, 11.6, 10.11, 9.6.16, 9.5.20 和 9.4.25 发布!

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

PostgreSQL 全球开发组发布了我们数据库系统所有受支持版本的更新,包括 12.1、11.6、10.11、9.6.16、9.5.20 和 9.4.25。此次发布修复了过去三个月报告的 60 多个错误。

PostgreSQL 9.4 支持即将结束

PostgreSQL 9.4 将于 2020 年 2 月 13 日停止接收修复(这是下一个计划的累积更新发布日期)。更多信息请参阅我们的 版本策略

错误修复和改进

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

部分修复包括:

  • 修复了当 ALTER TABLE 在添加一个没有默认值的列的同时进行其他需要重写表的操作时发生的崩溃。
  • 修复了 REINDEX CONCURRENTLY 中的若干问题。
  • 修复了 VACUUM 在涉及仍在进行的事务的特定情况下可能导致其失败的问题。
  • 修复了在 GiST 索引上运行 VACUUM 时可能发生的内存泄漏问题。
  • 修复了在表达式索引上运行 CLUSTER 时发生的错误。
  • 修复了在分区表上执行 SET CONSTRAINTS ... DEFERRED 时发生的失败。
  • 修复了创建和删除分区表上的索引时发生的若干问题。
  • 修复了可能导致规划器失败的分区连接(partition-wise joins)。
  • 确保当查询的表达式被操作时,窗口子句中的偏移量表达式(offset expressions)得到处理。
  • 修复了 bitshiftright() 的错误行为,当位串长度不是 8 的倍数时,它未能清零最后一个字节的填充空间。有关如何纠正您的数据,请参阅“更新”部分。
  • 确保 position() 函数评估的空字符串返回 1,符合 SQL 标准。
  • 修复了并行查询在无法请求后台工作进程时发生的失败。
  • 修复了由涉及 BEFORE UPDATE 触发器的特定情况引起的崩溃。
  • 在查询尝试访问 TOAST 表时显示正确的错误信息。
  • 允许将最多 1GB 的字符串编码转换成功。之前对输入字符串有一个 0.25GB 的硬性限制。
  • 确保在归档恢复结束时移除临时 WAL 和历史文件。
  • 如果在启用 recovery_min_apply_delay 的情况下,避免在归档恢复中发生失败。
  • 在崩溃恢复期间忽略 restore_commandrecovery_end_commandrecovery_min_apply_delay 设置。
  • 修复了逻辑复制中的若干问题,包括发布者和订阅者设置了不同的 REPLICA IDENTITY 列时发生的失败。
  • 正确为逻辑解码的复制消息添加时间戳,在故障情况下,这将导致 pg_stat_subscription.last_msg_send_time 被设置为 NULL
  • 修复了 libpq 中的若干问题,包括一个提高了 PostgreSQL 12 兼容性的问题。
  • 修复了 pg_upgrade 中的若干问题。
  • 修复了并行恢复处理分区表上的外键约束的方式,以确保它们不会过早创建。
  • pg_dump 现在根据表名而不是 OID 来排序输出相似名称的触发器和 RLS 策略。
  • 修复了 pg_rewind 在使用 --dry-run 选项时不更新 pg_control 内容的问题。

此次更新还包含 tzdata 版本 2019c,用于斐济和诺福克岛的 DST 法规变更。以及对阿尔伯塔省、奥地利、比利时、不列颠哥伦比亚省、柬埔寨、香港、印第安纳州(佩里县)、加里宁格勒、肯塔基州、密歇根州、诺福克岛、韩国和土耳其的历史性更正。

有关所有可用更改的完整列表,请参阅 发行说明

更新

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

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

如果您将 bitshiftright() 的输出保存到表中导致数据不一致,可以通过类似以下的查询进行修复:

UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);

注意:PostgreSQL 9.4 将于 2020 年 2 月 13 日停止接收修复。更多信息请参阅我们的 版本策略

链接