Re: Changing the state of data checksums in a running cluster - Mailing list pgsql-hackers

From SATYANARAYANA NARLAPURAM
Subject Re: Changing the state of data checksums in a running cluster
Date
Msg-id CAHg+QDeGrpZbNZdLjd_T4b43xKEEXZN0HGhkFm-1bkBdyzK7AQ@mail.gmail.com
Whole thread
In response to Re: Changing the state of data checksums in a running cluster  (Daniel Gustafsson <daniel@yesql.se>)
Responses Re: Changing the state of data checksums in a running cluster
List pgsql-hackers
Hi Daniel,

On Thu, Apr 30, 2026 at 8:20 AM Daniel Gustafsson <daniel@yesql.se> wrote:
> On 29 Apr 2026, at 15:42, Ayush Tiwari <ayushtiwari.slg01@gmail.com> wrote:

> The patchset looks good.

Thanks for review, I've applied the patchset after some editorializing.

While further testing this feature, I realized that ProcessSingleRelationFork() 
unconditionally called log_newpage_buffer() for every page of every relation 
during pg_enable_data_checksums(). This included unlogged relations, 
which by definition never generate WAL for data changes and are reset to their
init fork on any recovery. 

Guard the log_newpage_buffer() call with RelationNeedsWAL() so that
unlogged relations still get their pages dirtied (ensuring the checksum
is flushed to disk at the next checkpoint) but do not emit WAL.

Attached a patch to address this and added a test for the same. My current
test checks if standby has main fork, I could just checked WAL to verify this
using pg_waldump. Any other test ideas are welcome.

Thanks,
Satya

Attachment

pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Why clearing the VM doesn't require registering vm buffer in wal record
Next
From: Andres Freund
Date:
Subject: Re: Why clearing the VM doesn't require registering vm buffer in wal record