]> granicus.if.org Git - postgresql/commit
Fix some more bugs in GIN's WAL replay logic.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 26 Feb 2012 20:12:28 +0000 (15:12 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 26 Feb 2012 20:12:28 +0000 (15:12 -0500)
commit268ca4f57ea2dc3bf0dfb0f5c17fbda269b5d462
tree42c77623cfbe24cf386d561bbc98c2ca31f1a3c1
parentf054f631a087fed80e7d570e89bed395859f2dc3
Fix some more bugs in GIN's WAL replay logic.

In commit 4016bdef8aded77b4903c457050622a5a1815c16 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.
src/backend/access/gin/ginxlog.c