diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 8612554ca57..7dd29502672 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 - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.132.2.1 2005/11/22 18:23:04 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.132.2.2 2006/02/14 17:20:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -619,8 +619,6 @@ btbulkdelete(PG_FUNCTION_ARGS) maxoff; BlockNumber nextpage; - vacuum_delay_point(); - ndeletable = 0; page = BufferGetPage(buf); opaque = (BTPageOpaque) PageGetSpecialPointer(page); @@ -679,6 +677,10 @@ btbulkdelete(PG_FUNCTION_ARGS) } else _bt_relbuf(rel, buf); + + /* call vacuum_delay_point while not holding any buffer lock */ + vacuum_delay_point(); + /* And advance to next page, if any */ if (nextpage == P_NONE) break; @@ -772,6 +774,8 @@ btvacuumcleanup(PG_FUNCTION_ARGS) Page page; BTPageOpaque opaque; + vacuum_delay_point(); + buf = _bt_getbuf(rel, blkno, BT_READ); page = BufferGetPage(buf); opaque = (BTPageOpaque) PageGetSpecialPointer(page);