Bol sa vydaný opravený release databázového systému PostgreSQL 14.4, v ktorom bola odstránená závažná chyba, ktorá za určitých okolností mohla viesť k neviditeľnému poškodeniu údajov v indexoch pri vykonávaní príkazov „CREATE INDEX CONCURRENTLY“ a „REINDEX CONCURRENTLY“. V indexoch vytvorených pomocou týchto príkazov nemusia byť zahrnuté niektoré záznamy, čo spôsobí preskočenie jednotlivých riadkov pri vykonávaní SELECT dopytov s problémovými indexmi.
Na zistenie poškodenia indexov B-tree môžete použiť príkaz „pg_amcheck —heapallindexed názov_DB“. V prípade zistenia chýb alebo ak boli v predchádzajúcich verziách použité príkazy „CREATE INDEX CONCURRENTLY“ a „REINDEX CONCURRENTLY“ s inými typmi indexov (GiST, GIN a pod.) sa po aktualizácii na verziu 14.4 odporúča vykonať preindexáciu utilitou „reindexdb —all“ alebo príkazom „REINDEX CONCURRENTLY názov_indexu“.
Problém sa týka len vetvy 14.x, do ktorej boli zahrnuté optimalizácie, ktoré pri vykonávaní operácie VACUUM vylučovali niektoré transakcie súvisiace s vykonávaním „CREATE INDEX CONCURRENTLY“ a „REINDEX CONCURRENTLY“. V dôsledku týchto optimalizácií sa do indexov vytvorených v režime „CONCURRENTLY“ nedostali niektoré k tuples v heap pamäti, ktoré boli aktualizované alebo odstránené počas vytvárania indexu.
Zdroj: opennet.ru
