• Michael Paquier's avatar
    Use whitelist to choose files scanned with pg_verify_checksums · d55241af
    Michael Paquier authored
    The original implementation of pg_verify_checksums used a blacklist to
    decide which files should be skipped for scanning as they do not include
    data checksums, like pg_internal.init or pg_control.  However, this
    missed two things:
    - Some files are created within builds of EXEC_BACKEND and these were
    not listed, causing failures on Windows.
    - Extensions may create custom files in data folders, causing the tool
    to equally fail.
    
    This commit switches to a whitelist-like method instead by checking if
    the files to scan are authorized relation files.  This is close to a
    reverse-engineering of what is defined in relpath.c in charge of
    building the relation paths, and we could consider refactoring what this
    patch does so as all routines are in a single place.  This is left for
    later.
    
    This is based on a suggestion from Andres Freund.  TAP tests are updated
    so as multiple file patterns are tested.  The bug has been spotted by
    various buildfarm members as a result of b34e84f1 which has introduced
    the TAP tests of pg_verify_checksums.
    
    Author: Michael Paquier
    Reviewed-by: Andrew Dunstan, Michael Banck
    Discussion: https://postgr.es/m/20181012005614.GC26424@paquier.xyz
    Backpatch-through: 11
    d55241af
002_actions.pl 4.17 KB