Se ha lanzado una versión corregida de la base de datos PostgreSQL 14.4, en la que se ha solucionado un grave problema que, en determinadas circunstancias, podría llevar a un daño inadvertido de los datos en los índices al ejecutar los comandos «CREATE INDEX CONCURRENTLY» y «REINDEX CONCURRENTLY». En los índices creados mediante estos comandos, podrían no tenerse en cuenta ciertos registros, lo que llevaría a omitir filas individuales al realizar consultas SELECT utilizando los índices problemáticos.
Para determinar si hay daño en los índices B-tree, se puede utilizar el comando «pg_amcheck —heapallindexed nombre_DB». En caso de detectar errores o si se aplicaron en versiones anteriores los comandos «CREATE INDEX CONCURRENTLY» y «REINDEX CONCURRENTLY» con otros tipos de índices (GiST, GIN, etc.), se recomienda realizar una reindexación utilizando la herramienta «reindexdb —all» o el comando «REINDEX CONCURRENTLY nombre_índice» después de actualizar a la versión 14.4.
El problema afecta únicamente a la rama 14.x, que incluyó optimizaciones que excluyen algunas transacciones relacionadas con la ejecución de «CREATE INDEX CONCURRENTLY» y «REINDEX CONCURRENTLY» durante la operación VACUUM. Como resultado de estas optimizaciones, algunos tuplas en memoria heap que fueron actualizadas o truncadas durante la creación del índice no fueron incluidas en los índices creados en modo «CONCURRENTLY».
Fuente: opennet.ru
