• Peter Geoghegan's avatar
    pg_amcheck: avoid unhelpful verification attempts. · dd58194c
    Peter Geoghegan authored
    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 <mark.dilger@enterprisedb.com>
    Reported-By: default avatarAlexander Lakhin <exclusion@gmail.com>
    Reviewed-By: default avatarPeter Geoghegan <pg@bowt.ie>
    Reviewed-By: default avatarRobert Haas <robertmhaas@gmail.com>
    Bug: #17212
    Discussion: https://postgr.es/m/17212-34dd4a1d6bba98bf@postgresql.org
    Backpatch: 14-, where pg_amcheck was introduced.
    dd58194c
pg_amcheck.c 65.9 KB