pgsql: Initialize GIN metapage correctly when replaying metapage-update

From: Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Initialize GIN metapage correctly when replaying metapage-update
Date: 2015-06-29 21:07:09
Message-ID: E1Z9gGj-0002IB-Rs@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Initialize GIN metapage correctly when replaying metapage-update WAL record.

I broke this with my WAL format refactoring patch. Before that, the metapage
was read from disk, and modified in-place regardless of the LSN. That was
always a bit silly, as there's no need to read the old page version from
disk disk when we're overwriting it anyway. So that was changed in 9.5, but
I failed to add a GinInitPage call to initialize the page-headers correctly.
Usually you wouldn't notice, because the metapage is already in the page
cache and is not zeroed.

One way to reproduce this is to perform a VACUUM on an already vacuumed
table (so that the vacuum has no real work to do), immediately after a
checkpoint, and then perform an immediate shutdown. After recovery, the
page headers of the metapage will be incorrectly all-zeroes.

Reported by Jeff Janes

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/47fe4d25d57c81b9d7b2ac88783a12ee487db220

Modified Files
--------------
src/backend/access/gin/ginxlog.c | 1 +
1 file changed, 1 insertion(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2015-06-30 03:54:26 pgsql: In bttext_abbrev_convert, move pfree to the right place.
Previous Message Tom Lane 2015-06-29 19:44:09 pgsql: Stamp 9.5alpha1.