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 EOL 即将到来

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

错误修复和改进

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

其中一些修复包括

  • 修复了当 ALTER TABLE 添加没有默认值的列以及其他需要重写表的更改时发生的崩溃
  • 修复了 REINDEX CONCURRENTLY 的多个问题。
  • 修复了 VACUUM 在涉及仍在运行的事务的特定情况下会导致其失败的问题。
  • 修复了当 VACUUM 在 GiST 索引上运行时可能发生的内存泄漏。
  • 修复了在表达式索引上运行 CLUSTER 时发生的错误。
  • 修复了在分区表上 SET CONSTRAINTS ... DEFERRED 的失败。
  • 修复了在分区表上创建和删除索引的多个问题。
  • 修复了可能导致规划器失败的分区式连接。
  • 确保在操作查询的表达式时处理 WINDOW 子句中的偏移量表达式。
  • 修复了 bitshiftright() 的错误行为,如果位字符串的长度不是 8 的倍数,则该函数未能将最后一个字节中的填充空间归零。有关如何更正数据的信息,请参阅“更新”部分。
  • 确保 position() 函数评估的空字符串按 SQL 标准返回 1。
  • 修复了当无法请求后台工作进程时发生的并行查询失败。
  • 修复了由涉及 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 日停止接收修复。请参阅我们的 版本控制策略 以获取更多信息。

链接