Обновление PostgreSQL 14.4 с исправлением повреждения индексов
Сформирован корректирующий выпуск СУБД PostgreSQL 14.4, в котором устранена серьёзная проблема, при определённых обстоятельствах приводящая к незаметному повреждению данных в индексах при выполнении команд «CREATE INDEX CONCURRENTLY» и «REINDEX CONCURRENTLY». В созданных при помощи указанных команд индексах могут быть не учтены некоторые записи, что приведёт к пропуску отдельных строк при выполнении SELECT-запросов с привлечением проблемных индексов.
Для определения факта повреждения индексов B-tree можно использовать команду «pg_amcheck --heapallindexed имя_БД». В случае выявления ошибок или применения в прошлых выпусках команд «CREATE INDEX CONCURRENTLY» и «REINDEX CONCURRENTLY» с другими типами индексов (GiST, GIN и т.п.) после обновления до версии 14.4 рекомендуется выполнить переиндексацию утилитой «reindexdb --all» или командой «REINDEX CONCURRENTLY имя_индекса».
Проблеме подвержена только ветка 14.x, в которую были включены оптимизации, исключающие при выполнении операции VACUUM некоторые транзакции, связанные с выполнением «CREATE INDEX CONCURRENTLY» и «REINDEX CONCURRENTLY». В результате применения этих оптимизаций в созданные в режиме «CONCURRENTLY» индексы не попадали некоторые находящиеся в heap-памяти кортежи, которые были обновлены или урезаны во время создания индекса.
Источник: http://www.opennet.ru/opennews/art.shtml? num=57367
© OpenNet