]> granicus.if.org Git - postgresql/commit
Sanity-check that a page zeroed by redo routine is marked with WILL_INIT.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 20 Jul 2015 13:02:28 +0000 (16:02 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 20 Jul 2015 19:34:18 +0000 (22:34 +0300)
commite015c3e51f76a05cc026c8323c51a373172adaa3
treef911b21b86634480e7b815c53f5e6ce92ef09aa7
parent869eb8416255da99fe5ba1f6d98e52a41999d30e
Sanity-check that a page zeroed by redo routine is marked with WILL_INIT.

There was already a sanity-check in the other direction: if a page was
marked with WILL_INIT, it had to be initialized by the redo routine. It's
not strictly necessary for correctness that a page is marked with WILL_INIT
if it's going to be initialized at redo, but it's a missed optimization if
nothing else.

Fix a few instances of this issue in SP-GiST, where a block in WAL record
was not marked with WILL_INIT, but was in fact always initialized at redo.
We were creating a full-page image of the page unnecessarily in those
cases.

Backpatch to 9.5, where the new WILL_INIT flag was added.
src/backend/access/spgist/spgdoinsert.c
src/backend/access/transam/xlogutils.c