diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 2000-11-01 20:39:58 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 2000-11-01 20:39:58 +0000 |
commit | 855ffa0be0955399d40e3adb19eb0f7bc30d6cc4 (patch) | |
tree | 29b44444bc12c57c6ea234d6012d57d1dca11c4a | |
parent | 961eb5716b9e60c6f9c1d1fcde52c092aba05926 (diff) | |
download | postgresql-855ffa0be0955399d40e3adb19eb0f7bc30d6cc4.tar.gz postgresql-855ffa0be0955399d40e3adb19eb0f7bc30d6cc4.zip |
Forgot to check page LSN and unlock buffer in btree_xlog_delete - fixed.
(Thanks to Tatsuo Ishii for finding bug)
-rw-r--r-- | src/backend/access/nbtree/nbtree.c | 12 |
1 files changed, 11 insertions, 1 deletions
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; } |