pgsql: Use whitelist to choose files scanned with pg_verify_checksums

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема pgsql: Use whitelist to choose files scanned with pg_verify_checksums
Дата
Msg-id E1gDVA5-0007N3-GE@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Use whitelist to choose files scanned with pg_verify_checksums

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 b34e84f 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

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/cc7f27eae888234d2fda9e0eaadbeb33a48cd274

Modified Files
--------------
src/bin/pg_verify_checksums/pg_verify_checksums.c | 79 +++++++++++++++++------
1 file changed, 61 insertions(+), 18 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Add missing quote_identifier calls for CREATE TRIGGER ...REFERE
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Silence perlcritic warning about missing return.