Re: better page-level checksums

Andrey Borodin <x4m@double.cloud>

From: Andrey Borodin <x4m@double.cloud>
To: Matthias van de Meent <boekewurm+postgres@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-06-10T08:21:43Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Rethink method for assigning OIDs to the template0 and postgres DBs.

  2. pg_upgrade: Preserve database OIDs.

  3. pg_upgrade: Preserve relfilenodes and tablespace OIDs.

  4. Fix for new Boolean node

  5. Improve error handling of HMAC computations

  6. Add macro RelationIsPermanent() to report relation permanence

  7. Enhance nbtree index tuple deletion.

On Fri, Jun 10, 2022 at 5:00 AM Matthias van de Meent <
boekewurm+postgres@gmail.com> wrote:

>
> Can't we add some extra fork that stores this extra per-page
> information, and contains this extra metadata
>

+1 for this approach. I had observed some painful corruption cases where
block storage simply returned stale version of a rage of blocks. This is
only possible because checksum is stored on the page itself.
A special fork for checksums would allow us to better detect failures in
SSD firmawares, MMU SEUs etc, OS page cache, backup software and storage.
It may seems that these kind of stuff never happen. But probability of such
failure is drastically bigger than probability of hardware failure being
undetected due to CRC16 collision.

Also I'm skeptical about correcting detected errors with the information
from checksum. This approach requires very very large checksum. It's much
easier to obtain fresh block copy from HA standby.

Best regards, Andrey Borodin.