pg_amcheck: avoid unhelpful verification attempts

Enterprise / PostgreSQL - Peter Geoghegan [bowt.ie] - 13 October 2021 21:08 UTC

Avoid calling contrib/amcheck functions with relations that are unsuitable for checking. Specifically, don't attempt verification of temporary relations, or indexes whose pg_index entry indicates that the index is invalid, or not ready.

These relations are not supported by any of the contrib/amcheck functions, for reasons that are pretty fundamental. For example, the implementation of REINDEX CONCURRENTLY can add its own "transient" pg_index entries, which has rather unclear implications for the B-Tree
verification functions, at least in the general case -- so they just treat it as an error. It falls to the amcheck caller (in this case pg_amcheck) to deal with the situation at a higher level.

pg_amcheck now simply treats these conditions as additional "visibility concerns" when it queries system catalogs. This is a little arbitrary. It seems to have the least problems among any of the available alternatives.

Author: Mark Dilger

d2bf06db37 pg_amcheck: avoid unhelpful verification attempts.
doc/src/sgml/ref/pg_amcheck.sgml | 12 ++
src/bin/pg_amcheck/pg_amcheck.c | 83 ++++++++----
src/bin/pg_amcheck/t/006_bad_targets.pl | 233 ++++++++++++++++++++++++++++++++
3 files changed, 299 insertions(+), 29 deletions(-)

Upstream: git.postgresql.org


  • Share