• Tom Lane's avatar
    Fix some more bugs in GIN's WAL replay logic. · 1b630751
    Tom Lane authored
    In commit 4016bdef I fixed a bunch of
    ginxlog.c bugs having to do with not handling XLogReadBuffer failures
    correctly.  However, in ginRedoUpdateMetapage and ginRedoDeleteListPages,
    I unaccountably thought that failure to read the metapage would be
    impossible and just put in an elog(PANIC) call.  This is of course wrong:
    failure is exactly what will happen if the index got dropped (or rebuilt)
    between creation of the WAL record and the crash we're trying to recover
    from.  I believe this explains Nicholas Wilson's recent report of these
    errors getting reached.
    
    Also, fix memory leak in forgetIncompleteSplit.  This wasn't of much
    concern when the code was written, but in a long-running standby server
    page split records could be expected to accumulate indefinitely.
    
    Back-patch to 8.4 --- before that, GIN didn't have a metapage.
    1b630751
ginxlog.c 22.9 KB