mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Forgot to check page LSN and unlock buffer in btree_xlog_delete - fixed.
(Thanks to Tatsuo Ishii for finding bug)
This commit is contained in:
parent
961eb5716b
commit
855ffa0be0
@ -12,7 +12,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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))
|
if (PageIsNew((PageHeader) page))
|
||||||
elog(STOP, "btree_delete_redo: uninitialized page");
|
elog(STOP, "btree_delete_redo: uninitialized page");
|
||||||
|
|
||||||
|
if (XLByteLE(lsn, PageGetLSN(page)))
|
||||||
|
{
|
||||||
|
UnlockAndReleaseBuffer(buffer);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PageIndexTupleDelete(page, ItemPointerGetOffsetNumber(&(xlrec->target.tid)));
|
PageIndexTupleDelete(page, ItemPointerGetOffsetNumber(&(xlrec->target.tid)));
|
||||||
|
|
||||||
|
PageSetLSN(page, lsn);
|
||||||
|
PageSetSUI(page, ThisStartUpID);
|
||||||
|
UnlockAndWriteBuffer(buffer);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user