aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>2000-11-01 20:39:58 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>2000-11-01 20:39:58 +0000
commit855ffa0be0955399d40e3adb19eb0f7bc30d6cc4 (patch)
tree29b44444bc12c57c6ea234d6012d57d1dca11c4a
parent961eb5716b9e60c6f9c1d1fcde52c092aba05926 (diff)
downloadpostgresql-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.c12
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;
}