PostgreSQL 14.4 发布!

发布于 2022-06-16,作者:PostgreSQL 全球开发小组
PostgreSQL 项目

PostgreSQL 全球开发小组发布了 PostgreSQL 14.4,以修复一个在使用 CREATE INDEX CONCURRENTLYREINDEX CONCURRENTLY 命令时可能导致静默数据损坏的问题。请参阅以下部分,了解如何检测和纠正索引中静默数据损坏的信息。

此版本还修复了自 5 月份发布 PostgreSQL 14.3 以来的 15 多个错误。有关更改的完整列表,请查看发行说明

此版本仅适用于 PostgreSQL 14。PostgreSQL 全球开发小组将于 2022 年 8 月 11 日对所有受支持的 PostgreSQL 版本(10 - 14)进行计划的更新发布。

检测和修复 "CREATE INDEX CONCURRENTLY" / "REINDEX CONCURRENTLY" 损坏

PostgreSQL 14.4 修复了 CREATE INDEX CONCURRENTLYREINDEX CONCURRENTLY 中的一个问题,该问题可能导致索引的静默数据损坏。在修复之前,CREATE INDEX CONCURRENTLYREINDEX CONCURRENTLY 可能会构建具有缺失条目的索引,导致使用该索引的 SELECT 查询找不到某些行。此问题可能未损坏您的索引,但如果您不确定,我们建议您按照以下说明重新索引。

您可以使用带有 --heapallindexed 标志的 pg_amcheck 命令检测 B 树索引(默认索引类型)是否存在数据损坏。例如:

pg_amcheck --heapallindexed database

如果 pg_amcheck 检测到损坏,或者您在任何其他索引类型(例如 GiST、GIN 等)上运行了 CREATE INDEX CONCURRENTLYREINDEX CONCURRENTLY,请按照以下说明操作。

将您的系统升级到 PostgreSQL 14.4 后,您可以使用 REINDEX CONCURRENTLY 修复任何静默数据损坏。例如,如果您有一个名为 elephant_idx 的索引存在数据损坏,您可以在 PostgreSQL 14.4 上运行以下命令来修复它:

REINDEX CONCURRENTLY elephant_idx;

您可以使用 reindexdb 命令重新索引整个集群中的所有索引。reindexdb 还有一个 --jobs 标志,允许您并行运行重新索引操作。例如,要使用 <N> 个并行作业重新索引整个 PostgreSQL 集群,您可以运行以下命令:

reindexdb --all --concurrently --jobs <N>

错误修复和改进

此更新修复了过去几个月报告的 15 多个错误。以下列出的问题会影响 PostgreSQL 14。

此版本包含

  • 针对查询计划记忆的多个修复。
  • 修复了“整行变量”引用返回复合类型域的函数结果的查询。
  • 修复了使用 GROUPING 函数中引用的子 SELECT 时出现的“子计划目标列表中找不到变量”规划器错误。
  • 修复了当数据库编码为 SQL_ASCII 但客户端编码为多字节编码时,COPY FROM 中的错误检查。
  • 向事件触发器报告隐式创建的运算符族(由 CREATE OPERATOR CLASS 生成)。
  • 防止在大型事务的逻辑复制期间在备用服务器上触发 wal_receiver_timeout
  • 删除 libpq 中不正确的 TLS 私钥文件所有权检查。
  • 防止 pg_amcheck 中服务器连接丢失后崩溃。

有关可用更改的完整列表,请查看发行说明

更新

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

但是,如果您在 PostgreSQL 14 上运行了 CREATE INDEX CONCURRENTLYREINDEX CONCURRENTLY,您可能需要采取其他步骤。请查看“检测和修复 CREATE INDEX CONCURRENTLY / REINDEX CONCURRENTLY 损坏”部分以获取更多详细信息。

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

有关更多详细信息,请参阅发行说明

PostgreSQL 10 EOL 通知

PostgreSQL 10 将于 2022 年 11 月 10 日停止接收修复。如果您在生产环境中运行 PostgreSQL 10,我们建议您制定计划升级到更新、受支持的 PostgreSQL 版本。有关更多信息,请参阅我们的版本控制策略

链接