Er is een correctieversie van de PostgreSQL 14.4-database aangemaakt, waarin een ernstig probleem is opgelost dat onder bepaalde omstandigheden leidt tot onopgemerkte beschadiging van gegevens in indexen bij het uitvoeren van de opdrachten "CREATE INDEX CONCURRENTLY" en "REINDEX CONCURRENTLY". In de met deze opdrachten gemaakte indexen kunnen sommige records niet worden meegenomen, wat leidt tot het overslaan van afzonderlijke regels bij het uitvoeren van SELECT-query's met de problematische indexen.
Om te bepalen of er sprake is van beschadiging van B-tree-indexen, kan de opdracht "pg_amcheck --heapallindexed naam_van_de_DB" worden gebruikt. Indien er fouten worden aangetroffen of de opdrachten "CREATE INDEX CONCURRENTLY" en "REINDEX CONCURRENTLY" in eerdere versies zijn toegepast met andere typen indexen (GiST, GIN, enz.), wordt na de update naar versie 14.4 aangeraden om opnieuw te indexeren met de tool "reindexdb --all" of met de opdracht "REINDEX CONCURRENTLY naam_van_de_index".
Het probleem doet zich alleen voor in de 14.x-tak, waarin optimalisaties zijn opgenomen die bepaalde transacties uitsluiten tijdens het uitvoeren van de VACUUM-operatie, gerelateerd aan het uitvoeren van "CREATE INDEX CONCURRENTLY" en "REINDEX CONCURRENTLY". Als gevolg van deze optimalisaties zijn sommige tuples die in heap-geheugen bevonden werden, die tijdens het maken van de index zijn bijgewerkt of verkort, niet in de met de modus "CONCURRENTLY" gemaakte indexen opgenomen.
Bron: opennet.ru
