• Heikki Linnakangas's avatar
    Initialize GIN metapage correctly when replaying metapage-update WAL record. · 47fe4d25
    Heikki Linnakangas authored
    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
    47fe4d25
ginxlog.c 19.1 KB