Skip site navigation (1) Skip section navigation (2)

Re: Block-level CRC checks

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Block-level CRC checks
Date: 2008-10-29 18:32:48
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-hackers
Simon Riggs wrote:

> But perhaps writing a single WAL record if you scan whole page and set
> all bits at once. Then it makes sense in some cases.

So this is what I ended up doing; attached.

There are some gotchas in this patch:

1. it does not consider hint bits other than the ones defined in htup.h.
Some index AMs use hint bits to "kill" tuples (LP_DEAD mostly, I think).
This means that CRCs will be broken for such pages when pages are torn.

2. some parts of the code could be considered modularity violations.
For example, tqual.c is setting a bit in a Page structure; bufmgr.c is
later checking that bit to determine when to log.

3. the bgwriter is seen writing WAL entries at checkpoint.  At shutdown,
this might cause an error to be reported on how there was not supposed
to be activity on the log.  I didn't save the exact error report and I
can't find it in the source :-(

So it "mostly works" at this time.  I very much welcome opinions to
improve the weak points.

Alvaro Herrera                      
The PostgreSQL Company - Command Prompt, Inc.

Attachment: blkcrc-8.patch
Description: text/x-diff (21.2 KB)

In response to


pgsql-hackers by date

Next:From: Kevin GrittnerDate: 2008-10-29 18:34:54
Subject: recovery_target_time and last completed transaction log time
Previous:From: Dann CorbitDate: 2008-10-29 18:32:42
Subject: Re: Multi CPU Queries - Feedback and/or suggestions wanted!

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group