Re: Changing the state of data checksums in a running cluster

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Daniel Gustafsson <daniel@yesql.se>
Cc: Tomas Vondra <tomas@vondra.me>, Andres Freund <andres@anarazel.de>, Bernd Helmle <mailings@oopsware.de>, Michael Paquier <michael@paquier.xyz>, Michael Banck <mbanck@gmx.net>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-03-18T08:06:23Z
Lists: pgsql-hackers
On 18/03/2026 00:01, Daniel Gustafsson wrote:
>> On 17 Mar 2026, at 12:45, Heikki Linnakangas <hlinnaka@iki.fi> wrote:>>> /*
>>> * Get a list of all databases to process. This may include databases that
>>> * were created during our runtime.  Since a database can be created as a
>>> * copy of any other database (which may not have existed in our last
>>> * run), we have to repeat this loop until no new databases show up in the
>>> * list.  Here the initial list for the loop processing is generated after
>>> * waiting for all existing transactions to finish to ensure that we can
>>> * see any database which was created even if the transaction in which it
>>> * was created started before checksums were being processed.
>>> */
>>> WaitForAllTransactionsToFinish();
>>> DatabaseList = BuildDatabaseList();
>>
>> What if a database is dropped and another one is created with the same database OID?
> 
> Good point.  We have the name of the database so we could compare Oid and name,
> and require both to match.  That would still be foiled by a new database using
> the same Oid and name though.  Any ideas on what could be done?
Well, if CREATE DATABASE computed the checksums, that would fix this 
too. Actually, at least in the default wal_log=true mode, doesn't it 
already do that? It goes through the buffer cache as usual, I presume 
the checksums will be computed too.

- Heikki




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Use correct datatype for PID

  2. Improve comments in online checksums code

  3. Fix checksum state transition during promotion

  4. Fix regex searching for page verification failures in tests

  5. Apply data-checksum worker throttling parameters

  6. Skip WAL for unlogged main fork during online checksum enable

  7. Fix data_checksum GUC show_hook

  8. Improve database detection logic in datachecksumsworker

  9. Improve handling of concurrent checksum requests

  10. Typo and spelling fixups for online checksums

  11. Fix invalid checksum state transition in checkpoints

  12. Handle data_checksum state changes during launcher_exit

  13. Test improvements for online checksums

  14. Prevent pg_enable/disable_data_checksums() on standby

  15. Test stabilization for online checksums

  16. Make data checksum tests more resilient for slow machines

  17. Formalize WAL record for XLOG_CHECKPOINT_REDO

  18. Revert "Get rid of WALBufMappingLock"

  19. Get rid of WALBufMappingLock

  20. Improve grammar of options for command arrays in TAP tests