Une version corrective du SGBD PostgreSQL 14.4 a été publiée, corrigeant un problème sérieux qui, dans certaines circonstances, pourrait entraîner une corruption invisible des données dans les index lors de l'exécution des commandes « CREATE INDEX CONCURRENTLY » et « REINDEX CONCURRENTLY ». Dans les index créés par ces commandes, certaines entrées peuvent ne pas être prises en compte, ce qui entraînera l'omission de lignes lors de l'exécution de requêtes SELECT utilisant ces index problématiques.
Pour déterminer si des index B-tree sont corrompus, vous pouvez utiliser la commande « pg_amcheck —heapallindexed nom_DB ». En cas d'erreurs détectées ou si des commandes « CREATE INDEX CONCURRENTLY » et « REINDEX CONCURRENTLY » ont été exécutées dans des versions antérieures avec d'autres types d'index (GiST, GIN, etc.), il est recommandé d'effectuer une réindexation avec l'utilitaire « reindexdb —all » ou avec la commande « REINDEX CONCURRENTLY nom_index ».
Le problème concerne uniquement la branche 14.x, dans laquelle des optimisations ont été intégrées, excluant certaines transactions associées à l'exécution de « CREATE INDEX CONCURRENTLY » et « REINDEX CONCURRENTLY » lors de l'opération VACUUM. En conséquence de ces optimisations, certains tuples présents dans la mémoire heap créés en mode « CONCURRENTLY » n'étaient pas inclus, s'ils avaient été mis à jour ou supprimés pendant la création de l'index.
Source : opennet.ru
