mirror of
https://github.com/postgres/postgres.git
synced 2025-06-01 00:01:20 -04:00
Add some missing vacuum_delay_point calls in GIST vacuuming.
This commit is contained in:
parent
d8882a2c66
commit
efaac136bf
@ -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
|
||||||
* $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.9 2005/09/22 20:44:36 momjian Exp $
|
* $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.9.2.1 2006/02/14 16:39:36 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -64,6 +64,8 @@ gistVacuumUpdate(GistVacuum *gv, BlockNumber blkno, bool needunion)
|
|||||||
int ncompleted = 0,
|
int ncompleted = 0,
|
||||||
lencompleted = 16;
|
lencompleted = 16;
|
||||||
|
|
||||||
|
vacuum_delay_point();
|
||||||
|
|
||||||
buffer = ReadBuffer(gv->index, blkno);
|
buffer = ReadBuffer(gv->index, blkno);
|
||||||
page = (Page) BufferGetPage(buffer);
|
page = (Page) BufferGetPage(buffer);
|
||||||
maxoff = PageGetMaxOffsetNumber(page);
|
maxoff = PageGetMaxOffsetNumber(page);
|
||||||
@ -397,9 +399,12 @@ gistvacuumcleanup(PG_FUNCTION_ARGS)
|
|||||||
freePages = (BlockNumber *) palloc(sizeof(BlockNumber) * maxFreePages);
|
freePages = (BlockNumber *) palloc(sizeof(BlockNumber) * maxFreePages);
|
||||||
for (blkno = GIST_ROOT_BLKNO + 1; blkno < npages; blkno++)
|
for (blkno = GIST_ROOT_BLKNO + 1; blkno < npages; blkno++)
|
||||||
{
|
{
|
||||||
Buffer buffer = ReadBuffer(rel, blkno);
|
Buffer buffer;
|
||||||
Page page;
|
Page page;
|
||||||
|
|
||||||
|
vacuum_delay_point();
|
||||||
|
|
||||||
|
buffer = ReadBuffer(rel, blkno);
|
||||||
LockBuffer(buffer, GIST_SHARE);
|
LockBuffer(buffer, GIST_SHARE);
|
||||||
page = (Page) BufferGetPage(buffer);
|
page = (Page) BufferGetPage(buffer);
|
||||||
|
|
||||||
@ -526,7 +531,7 @@ gistbulkdelete(PG_FUNCTION_ARGS)
|
|||||||
page = (Page) BufferGetPage(buffer);
|
page = (Page) BufferGetPage(buffer);
|
||||||
if (stack->blkno == GIST_ROOT_BLKNO && !GistPageIsLeaf(page))
|
if (stack->blkno == GIST_ROOT_BLKNO && !GistPageIsLeaf(page))
|
||||||
{
|
{
|
||||||
/* the only root can become non-leaf during relock */
|
/* only the root can become non-leaf during relock */
|
||||||
LockBuffer(buffer, GIST_UNLOCK);
|
LockBuffer(buffer, GIST_UNLOCK);
|
||||||
ReleaseBuffer(buffer);
|
ReleaseBuffer(buffer);
|
||||||
/* one more check */
|
/* one more check */
|
||||||
@ -614,7 +619,6 @@ gistbulkdelete(PG_FUNCTION_ARGS)
|
|||||||
LockBuffer(buffer, GIST_UNLOCK);
|
LockBuffer(buffer, GIST_UNLOCK);
|
||||||
ReleaseBuffer(buffer);
|
ReleaseBuffer(buffer);
|
||||||
|
|
||||||
|
|
||||||
ptr = stack->next;
|
ptr = stack->next;
|
||||||
pfree(stack);
|
pfree(stack);
|
||||||
stack = ptr;
|
stack = ptr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user