Re: Enabling Checksums - Mailing list pgsql-hackers

From Markus Wanner
Subject Re: Enabling Checksums
Date
Msg-id 509D13D0.8030605@bluegap.ch
Whole thread Raw
In response to Enabling Checksums  (Jeff Davis <pgsql@j-davis.com>)
List pgsql-hackers
Jeff,

On 11/09/2012 02:01 AM, Jeff Davis wrote:
> For the sake of simplicity (implementation as well as usability), it
> seems like there is agreement that checksums should be enabled or
> disabled for the entire instance, not per-table.

Agreed. I've quickly thought about making it a per-database setting, but
how about shared system catalogs... Let's keep it simple and have a
single per-cluster instance switch for now.

> I don't think a GUC entirely makes sense (in its current form, anyway).
> We basically care about 3 states:
>   1. Off: checksums are not written, nor are they verified. Pages that
> are newly dirtied have the checksum information in the header cleared.
>   2. Enabling: checksums are written for every dirty page, but only
> verified for pages where the checksum is present (as determined by
> information in the page header).
>   3. On: checksums are written for every dirty page, and verified for
> every page that's read. If a page does not have a checksum, it's
> corrupt.

Sounds sane, yes.

> And the next question is what commands to add to change state. Ideas:
> 
>    CHECKSUMS ENABLE; -- set state to "Enabling"
>    CHECKSUMS DISABLE; -- set state to "Off"

Yet another SQL command doesn't feel like the right thing for such a
switch. Quick googling revealed that CHECKSUM is a system function in MS
SQL and MySQL knows a CHECKSUM TABLE command. And you never know what
the committee is coming up with next.

Apart from that, I'd like something more descriptive that just
"checksums". Block checksums? Heap checksums? Data checksums?

Regards

Markus Wanner



pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: TRUNCATE SERIALIZABLE and frozen COPY
Next
From: Simon Riggs
Date:
Subject: Re: AutoVacuum starvation from sinval messages