On Tue, Mar 06, 2012 at 01:52:31PM -0500, Bruce Momjian wrote:
> On Tue, Mar 06, 2012 at 06:00:13PM +0000, Simon Riggs wrote:
> > On Tue, Mar 6, 2012 at 5:50 PM, Bruce Momjian <bruce@momjian.us> wrote:
> >
> > > One crazy idea would be to have a checksum _version_ number somewhere on
> > > the page and in pg_controldata. When you turn on checksums, you
> > > increment that value, and all new checksum pages get that checksum
> > > version; if you turn off checksums, we just don't check them anymore,
> > > but they might get incorrect due to a hint bit write and a crash. When
> > > you turn on checksums again, you increment the checksum version again,
> > > and only check pages having the _new_ checksum version.
> > >
> > > Yes, this does add additional storage requirements for the checksum, but
> > > I don't see another clean option. If you can spare one byte, that gives
> > > you 255 times to turn on checksums; after that, you have to
> > > dump/reload to use the checksum feature.
> >
> > I like the idea very much actually. But I'll let you argue the case
> > for using pd_pagesize_version for that with your esteemed colleagues.
> >
> > It would be pretty safe to just let it wrap.
>
> How would we know there are not old unwritten pages sitting around?
Perhaps a full xid wrap-around would allow us to re-use checksum
counters.
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ It's impossible for everything to be true. +