checkdb выдает ошибку при работе с некоторыми видами индексов
Если в базе данных создать следующие таблицу и индекс
create table idxpart (a int) partition by range (a);
create index on idxpart (a);
и попытаться проверить базу с помощью checkdb,
pwd/pg_probackup checkdb --amcheck -D path/to/cluster/ -d postgres -p 5432; echo $?`
происходит ошибка. Лог, при этом, выглядит так:
WARNING: Current PostgreSQL role is superuser. It is not recommended to run backup or checkdb as superuser.
INFO: Start checking data files
INFO: Data files are valid
WARNING: Current PostgreSQL role is superuser. It is not recommended to run backup or checkdb as superuser.
INFO: Start amchecking PostgreSQL instance
INFO: Amchecking database 'postgres' using extension 'amcheck' version 1.3 from schema 'public'
WARNING: Thread [1]. Amcheck failed in database 'postgres' for index: 'public.idxpart_a_idx': ERROR: only B-Tree indexes are supported as targets for verification
DETAIL: Relation "idxpart_a_idx" is not a B-Tree index.
WARNING: Thread [1]. Amcheck failed in database 'postgres' for index: 'public.idxpart_a_idx1': ERROR: only B-Tree indexes are supported as targets for verification
DETAIL: Relation "idxpart_a_idx1" is not a B-Tree index.
WARNING: Amcheck failed for database 'postgres'
ERROR: checkdb --amcheck finished with failure. Not all checked indexes are valid. All databases were amchecked.
1
Это проблемы расширения amcheck Конечно было бы очень хорошо, если бы сообщество внесло исправления в код расширения.
Добрый день, Сергей! Утилита pg_amcheck так же как и pg_probackap использует это расширение. Однако в случае с pg_amcheck ошибок не возникает, она как то умеет обходить неугодные индексы. Выглядит это примерно так. Та же таблица с тем же индексом,
create table idxpart (a int) partition by range (a);
create index on idxpart (a);
И при просьбе проверить базу:
pwd`/pg_amcheck -p 5432 -h localhost -d postgres
никаких предупреждений и ошибок нет.
Добрый день! Большое спасибо за фидбэк! Исправим.