Byl vydán opravený build databázového systému PostgreSQL 14.4, který řeší vážný problém, který za určitých okolností může vést k nepozorovanému poškození dat v indexech při provádění příkazů „CREATE INDEX CONCURRENTLY“ a „REINDEX CONCURRENTLY“. V indexech vytvořených pomocí uvedených příkazů nemusí být zohledněny některé záznamy, což způsobí opomenutí jednotlivých řádků při provádění SELECT dotazů s problematickými indexy.
K určení faktu poškození indexů B-tree lze použít příkaz „pg_amcheck —heapallindexed název_DB“. V případě zjištění chyb nebo použití dřívějších verzí příkazů „CREATE INDEX CONCURRENTLY“ a „REINDEX CONCURRENTLY“ s jinými typy indexů (GiST, GIN atd.) se po aktualizaci na verzi 14.4 doporučuje provést přeoindexaci pomocí utilit „reindexdb —all“ nebo příkazem „REINDEX CONCURRENTLY název_indexu“.
Problém se týká pouze větve 14.x, která obsahuje optimalizace, které vylučují při provádění operace VACUUM některé transakce spojené s prováděním „CREATE INDEX CONCURRENTLY“ a „REINDEX CONCURRENTLY“. V důsledku těchto optimalizací se do indexů vytvořených v režimu „CONCURRENTLY“ nedostaly některé tuple v paměti heap, které byly aktualizovány nebo odstraněny během vytváření indexu.
Zdroj: opennet.ru
