PostgreSQL DBMS 14.4 的修正版本已经创建,它消除了一个严重问题,在某些情况下,执行“CREATE INDEX CONCURRENTLY”和“REINDEX CONCURRENTLY”命令时会导致索引中不可见的数据损坏。 在使用指定命令创建的索引中,某些记录可能没有被考虑在内,这将导致在执行涉及有问题索引的 SELECT 查询时丢失行。
要确定B树索引是否已损坏,可以使用命令“pg_amcheck –heapallindexed db_name”。 如果发现错误或在以前的版本中使用了命令“CREATE INDEX CONCURRENTLY”和“REINDEX CONCURRENTLY”与其他类型的索引(GiST、GIN 等),则更新到版本 14.4 后,建议使用以下命令执行重新索引“reindexdb —all”实用程序或命令“REINDEX CONCURRENTLY index_name”。
该问题仅影响 14.x 分支,其中包括排除与执行 VACUUM 操作时执行“CREATE INDEX CONCURRENTLY”和“REINDEX CONCURRENTLY”相关的某些事务的优化。 由于这些优化,在 CONCURRENTLY 模式下创建的索引不包括堆内存中在索引创建期间更新或截断的一些元组。
来源: opennet.ru