diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c
new file mode 100644
index c5732c3..8770eb9
*** a/src/backend/access/gin/ginfast.c
--- b/src/backend/access/gin/ginfast.c
*************** ginInsertCleanup(GinState *ginstate,
*** 801,808 ****
  		 */
  		processPendingPage(&accum, &datums, page, FirstOffsetNumber);
  
! 		if (vac_delay)
! 			vacuum_delay_point();
  
  		/*
  		 * Is it time to flush memory to disk?	Flush if we are at the end of
--- 801,807 ----
  		 */
  		processPendingPage(&accum, &datums, page, FirstOffsetNumber);
  
! 		vacuum_delay_point();
  
  		/*
  		 * Is it time to flush memory to disk?	Flush if we are at the end of
*************** ginInsertCleanup(GinState *ginstate,
*** 842,849 ****
  			{
  				ginEntryInsert(ginstate, attnum, key, category,
  							   list, nlist, NULL);
! 				if (vac_delay)
! 					vacuum_delay_point();
  			}
  
  			/*
--- 841,847 ----
  			{
  				ginEntryInsert(ginstate, attnum, key, category,
  							   list, nlist, NULL);
! 				vacuum_delay_point();
  			}
  
  			/*
*************** ginInsertCleanup(GinState *ginstate,
*** 923,929 ****
  		/*
  		 * Read next page in pending list
  		 */
! 		CHECK_FOR_INTERRUPTS();
  		buffer = ReadBuffer(index, blkno);
  		LockBuffer(buffer, GIN_SHARE);
  		page = BufferGetPage(buffer);
--- 921,927 ----
  		/*
  		 * Read next page in pending list
  		 */
! 		vacuum_delay_point();
  		buffer = ReadBuffer(index, blkno);
  		LockBuffer(buffer, GIN_SHARE);
  		page = BufferGetPage(buffer);
