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

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Fabien COELHO <coelho@cri.ensmp.fr>
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-17T05:46:57Z
Lists: pgsql-hackers
On Sat, Mar 16, 2019 at 09:18:34AM +0100, Fabien COELHO wrote:
>> 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"?

Let's hope that we make that possible for v12.  We'll see.

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

Something like "%s: database folder is incompatible" for the first
line sounds kind of better per the feedback gathered.  And then on the
second line:
"The database cluster was initialized with block size %u, but
pg_checksums was compiled with block size %u."

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

That's actually the possibility I was pointing out upthread.  I am not
sure that the use cases are worth the effort though.
--
Michael

Commits

  1. Error out in pg_verify_checksums on incompatible block size

  2. Error out in pg_checksums on incompatible block size