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

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Postgres hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Cc: Magnus Hagander <magnus(at)hagander(dot)net>, Michael Banck <michael(dot)banck(at)credativ(dot)de>, Sergei Kornilov <sk(at)zsrv(dot)org>
Subject: Make pg_checksums complain if compiled BLCKSZ and data folder's block size differ
Date: 2019-03-16 01:21:47
Message-ID: 20190316012147.GC1434@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi all,
(related folks in CC)

Sergei Kornilov has reported here an issue with pg_checksums:
https://www.postgresql.org/message-id/5217311552474471@myt2-66bcb87429e6.qloud-c.yandex.net

If the block size the tool is compiled with does not match the data
folder block size, then users would get incorrect checksums failures,
which is confusing. As pg_checksum_block() uses directly the block
size, this cannot really be made dynamic yet, so we had better issue
an error on that. Michael Banck has sent a patch for that:
https://www.postgresql.org/message-id/1552476561.4947.67.camel@credativ.de

The error message proposed is like that:
+ if (ControlFile->blcksz != BLCKSZ)
+ {
+ fprintf(stderr, _("%s: data directory block size %d is different to compiled-in block size %d.\n"),
+ progname, ControlFile->blcksz, BLCKSZ);
+ exit(1);
+ }
Still I think that we could do better.

Here is a proposal of message which looks more natural to me, and more
consistent with what xlog.c complains about:
database files are incompatible with pg_checksums.
The database cluster was initialized with BLCKSZ %d, but pg_checksums
was compiled with BLCKSZ %d.

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

Attachment Content-Type Size
checksums-blcksz-error.patch text/x-diff 706 bytes

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2019-03-16 01:29:53 Re: WIP: Avoid creation of the free space map for small tables
Previous Message Tom Lane 2019-03-16 01:20:03 Re: Lifespan of a BeginInternalSubTransaction subxact ?