From dd58194cf563c9d69821162861506d5d9acceddd Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Wed, 13 Oct 2021 14:08:11 -0700 Subject: pg_amcheck: avoid unhelpful verification attempts. 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 Reported-By: Alexander Lakhin Reviewed-By: Peter Geoghegan Reviewed-By: Robert Haas Bug: #17212 Discussion: https://postgr.es/m/17212-34dd4a1d6bba98bf@postgresql.org Backpatch: 14-, where pg_amcheck was introduced. --- doc/src/sgml/ref/pg_amcheck.sgml | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'doc/src') diff --git a/doc/src/sgml/ref/pg_amcheck.sgml b/doc/src/sgml/ref/pg_amcheck.sgml index d00c48d0e79..43ee73ab93c 100644 --- a/doc/src/sgml/ref/pg_amcheck.sgml +++ b/doc/src/sgml/ref/pg_amcheck.sgml @@ -432,6 +432,18 @@ PostgreSQL documentation + + + The extra checks performed against B-tree indexes when the + option or the + option is specified require + relatively strong relation-level locks. These checks are the only + checks that will block concurrent data modification from + INSERT, UPDATE, and + DELETE commands. + + + The following command-line options control the connection to the server: -- cgit v1.2.3