From: Vadim B. Mikheev Date: Wed, 1 Nov 2000 20:39:58 +0000 (+0000) Subject: Forgot to check page LSN and unlock buffer in btree_xlog_delete - fixed. X-Git-Tag: REL7_1_BETA~296 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=855ffa0be0955399d40e3adb19eb0f7bc30d6cc4;p=thirdparty%2Fpostgresql.git Forgot to check page LSN and unlock buffer in btree_xlog_delete - fixed. (Thanks to Tatsuo Ishii for finding bug) --- diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 3dbbc78b035..fb437ac99f4 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -12,7 +12,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.68 2000/10/29 18:33:40 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.69 2000/11/01 20:39:58 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -1018,8 +1018,18 @@ btree_xlog_delete(bool redo, XLogRecPtr lsn, XLogRecord *record) if (PageIsNew((PageHeader) page)) elog(STOP, "btree_delete_redo: uninitialized page"); + if (XLByteLE(lsn, PageGetLSN(page))) + { + UnlockAndReleaseBuffer(buffer); + return; + } + PageIndexTupleDelete(page, ItemPointerGetOffsetNumber(&(xlrec->target.tid))); + PageSetLSN(page, lsn); + PageSetSUI(page, ThisStartUpID); + UnlockAndWriteBuffer(buffer); + return; }