BUG #17212: pg_amcheck fails on checking temporary relations

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: exclusion@gmail.com
Date: 2021-10-02T11:00:02Z
Lists: pgsql-bugs, pgsql-hackers
The following bug has been logged on the website:

Bug reference:      17212
Logged by:          Alexander Lakhin
Email address:      exclusion@gmail.com
PostgreSQL version: 14.0
Operating system:   Ubuntu 20.04
Description:        

When pg_amcheck runs against a database containing temporary tables:
echo "
CREATE TEMP TABLE t(i int);
CREATE INDEX t_idx ON t(i);
INSERT INTO t VALUES (1);

SELECT pg_sleep(5);
" | psql &
pg_amcheck --install-missing -a --heapallindexed --parent-check
--rootdescend --progress || echo "FAIL"

it fails with the following errors:
btree index "regression.pg_temp_4.t_idx":0%)
    ERROR:  cannot access temporary tables of other sessions
    DETAIL:  Index "t_idx" is associated with temporary relation.
heap table "regression.pg_temp_4.t":
    ERROR:  cannot access temporary tables of other sessions
779/779 relations (100%), 2806/2806 pages (100%)
FAIL

Although you can add --exclude-relation=*.pg_temp*.*, this behaviour differs
from the behaviour of pg_dump and friends, which skip such relations
silently.

Commits

  1. Remove unstable pg_amcheck tests.

  2. pg_amcheck: avoid unhelpful verification attempts.

  3. amcheck: Skip unlogged relations in Hot Standby.

  4. amcheck: Skip unlogged relations during recovery.