mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-15 08:20:16 +08:00
Repair error with not adjusting active scans properly after gistSplit.
Patch from Teodor Sigaev.
This commit is contained in:
parent
63448825fb
commit
5b792153fc
@ -8,7 +8,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/gist/gist.c,v 1.88 2002/02/11 22:41:59 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.88.2.1 2002/05/28 15:22:44 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -496,6 +496,14 @@ gistlayerinsert(Relation r, BlockNumber blkno,
|
|||||||
/* key is modified, so old version must be deleted */
|
/* key is modified, so old version must be deleted */
|
||||||
ItemPointerSet(&oldtid, blkno, child);
|
ItemPointerSet(&oldtid, blkno, child);
|
||||||
gistdelete(r, &oldtid);
|
gistdelete(r, &oldtid);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* if child was splitted, new key for child will be inserted
|
||||||
|
* in the end list of child, so we must say to any scans
|
||||||
|
* that page is changed beginning from 'child' offset
|
||||||
|
*/
|
||||||
|
if ( ret & SPLITED )
|
||||||
|
gistadjscans(r, GISTOP_SPLIT, blkno, child);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = INSERTED;
|
ret = INSERTED;
|
||||||
@ -1413,10 +1421,6 @@ gistSplit(Relation r,
|
|||||||
ItemPointerSet(&(newtup[nlen - 1]->t_tid), lbknum, 1);
|
ItemPointerSet(&(newtup[nlen - 1]->t_tid), lbknum, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* adjust active scans */
|
|
||||||
gistadjscans(r, GISTOP_SPLIT, BufferGetBlockNumber(buffer), FirstOffsetNumber);
|
|
||||||
|
|
||||||
/* !!! pfree */
|
/* !!! pfree */
|
||||||
pfree(rvectup);
|
pfree(rvectup);
|
||||||
pfree(lvectup);
|
pfree(lvectup);
|
||||||
|
Loading…
Reference in New Issue
Block a user