Izdelan je bil popravek za različico PostgreSQL 14.4, ki rešuje resno težavo, ki lahko v določenih okoliščinah povzroči neopazno poškodbo podatkov v indeksih med izvajanjem ukazov „CREATE INDEX CONCURRENTLY“ in „REINDEX CONCURRENTLY“. V indeksih, ustvarjenih z omenjeno ukazi, morda ne bodo upoštevani nekateri zapisi, kar bo privedlo do preskakovanja posameznih vrstic pri izvrševanju SELECT poizvedb, ki vključujejo problematične indekse.
Za ugotovitev poškodbe indeksov B-tree lahko uporabite ukaz „pg_amcheck —heapallindexed ime_BD“. V primeru odkritih napak ali izvajanja ukazov „CREATE INDEX CONCURRENTLY“ in „REINDEX CONCURRENTLY“ v prejšnjih različicah z drugimi vrstami indeksov (GiST, GIN itd.) je po nadgradnji na različico 14.4 priporočljivo izvesti reindeksacijo z orodjem „reindexdb —all“ ali ukazom „REINDEX CONCURRENTLY ime_indeksa“.
Težava se pojavlja le v veji 14.x, kjer so bila vključena obsežna optimizacija, ki izključujejo določene transakcije, povezane z izvajanjem „CREATE INDEX CONCURRENTLY“ in „REINDEX CONCURRENTLY“, med izvajanjem operacije VACUUM. Zaradi teh optimizacij nekateri tupli, ki so bili posodobljeni ali skrajšani med ustvarjanjem indeksa, niso prišli v indekse, ustvarjene v načinu „CONCURRENTLY“.
Izvor: opennet.ru
