aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/access/nbtree/nbtree.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index dd6f1df6d2e..3533b3b5658 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.140 2006/02/12 00:18:17 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.141 2006/02/14 17:20:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -580,8 +580,6 @@ btbulkdelete(PG_FUNCTION_ARGS)
maxoff;
BlockNumber nextpage;
- vacuum_delay_point();
-
ndeletable = 0;
page = BufferGetPage(buf);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -638,6 +636,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;
@@ -732,6 +734,8 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
Page page;
BTPageOpaque opaque;
+ vacuum_delay_point();
+
/*
* We can't use _bt_getbuf() here because it always applies
* _bt_checkpage(), which will barf on an all-zero page. We want to