On Feb 17, 2017, at 10:31 AM, Magnus Hagander <mag...@hagander.net> wrote:
> 
> On Thu, Feb 16, 2017 at 9:58 PM, David Christensen <da...@endpoint.com> wrote:
> Extracted from a larger patch, this patch provides the basic infrastructure 
> for turning data
> checksums off in a cluster.  This also sets up the necessary pg_control 
> fields to support the
> necessary multiple states for handling the transitions.
> 
> We do a few things:
> 
> - Change "data_checksums" from a simple boolean to "data_checksum_state", an 
> enum type for all of
>   the potentially-required states for this feature (as well as enabling).
> 
> - Add pg_control support for parsing/displaying the new setting.
> 
> - Distinguish between the possible checksum states and be specific about 
> whether we care about
>   checksum read failures or write failures at all call sites, turning 
> DataChecksumsEnabled() into two
>   functions: DataChecksumsEnabledReads() and DataChecksumsEnabledWrites().
> 
> - Create a superuser function pg_disable_checksums() to perform the actual 
> disabling of this in the
>   cluster.
> 
> I have *not* changed the default in initdb to enable checksums, but this 
> would be trivial.
> 
> 
> Per the point made by somebody else (I think Simon?) on the other thread, I 
> think it also needs WAL support. Otherwise you turn it off on the master, but 
> it remains on on a replica which will cause failures once datablocks without 
> checksum starts replicating.

Enclosed is a version which supports WAL logging and proper application of the 
checksum state change.  I have verified it works with a replica as far as 
applying the updated data_checksum_state, though I had to manually call 
pg_switch_wal() on the master to get it to show up on the replica.  (I don’t 
know if this is a flaw in my patch or just a natural consequence of testing on 
a low-volume local cluster.)

--
David Christensen
End Point Corporation
da...@endpoint.com
785-727-1171


Attachment: disable-checksums.patch
Description: Binary data

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to