Re: Make pg_checksums complain if compiled BLCKSZ and data folder's block size differ

Fabien COELHO <coelho@cri.ensmp.fr>

From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Michael Paquier <michael@paquier.xyz>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>, Magnus Hagander <magnus@hagander.net>, Michael Banck <michael.banck@credativ.de>, Sergei Kornilov <sk@zsrv.org>
Date: 2019-03-16T08:18:34Z
Lists: pgsql-hackers
Bonjour Michaël,

> If the block size the tool is compiled with does not match the data
> folder block size, then users would get incorrect checksums failures,

Or worse, incorrect checksump writing under "enabling"?

Initial proposal:

  "%s: data directory block size %d is different to compiled-in block size %d.\n"

> Has somebody a better wording for that?  Attached is a proposal of
> patch.

  "%s: database files are incompatible with pg_checksums.\n"
  "%s: The database cluster was initialized with BLCKSZ %u, but pg_checksums was compiled with BLCKSZ %u."

Second line is missing a "\n". "pg_checksums" does not need to appear, it 
is already the progname, and if it differs there is no point in giving a 
wrong name. I think it could be shorter. What about:

  "%s: cannot compute checksums, command compiled with BLCKSZ %u but cluster initialized with BLCKSZ %u.\n"

I think it would be better to adapt the checksum computation, but this is 
indeed non trivial because of the way the BLCKSZ constant is hardwired 
into type declarations.

-- 
Fabien.

Commits

  1. Error out in pg_verify_checksums on incompatible block size

  2. Error out in pg_checksums on incompatible block size