@ -1183,12 +1183,6 @@ backtrack:
opaque - > btpo_next < scanblkno )
backtrack_to = opaque - > btpo_next ;
/*
* When each VACUUM begins , it determines an OldestXmin cutoff value .
* Tuples before the cutoff are removed by VACUUM . Scan over all
* items to see which ones need to be deleted according to cutoff
* point using callback .
*/
ndeletable = 0 ;
nupdatable = 0 ;
minoff = P_FIRSTDATAKEY ( opaque ) ;
@ -1197,6 +1191,7 @@ backtrack:
nhtidslive = 0 ;
if ( callback )
{
/* btbulkdelete callback tells us what to delete (or update) */
for ( offnum = minoff ;
offnum < = maxoff ;
offnum = OffsetNumberNext ( offnum ) )
@ -1206,26 +1201,6 @@ backtrack:
itup = ( IndexTuple ) PageGetItem ( page ,
PageGetItemId ( page , offnum ) ) ;
/*
* Hot Standby assumes that it ' s okay that XLOG_BTREE_VACUUM
* records do not produce their own conflicts . This is safe
* as long as the callback function only considers whether the
* index tuple refers to pre - cutoff heap tuples that were
* certainly already pruned away during VACUUM ' s initial heap
* scan by the time we get here . ( heapam ' s XLOG_HEAP2_PRUNE
* records produce conflicts using a latestRemovedXid value
* for the pointed - to heap tuples , so there is no need to
* produce our own conflict now . )
*
* Backends with snapshots acquired after a VACUUM starts but
* before it finishes could have visibility cutoff with a
* later xid than VACUUM ' s OldestXmin cutoff . These backends
* might happen to opportunistically mark some index tuples
* LP_DEAD before we reach them , even though they may be after
* our cutoff . We don ' t try to kill these " extra " index
* tuples in _bt_delitems_vacuum ( ) . This keep things simple ,
* and allows us to always avoid generating our own conflicts .
*/
Assert ( ! BTreeTupleIsPivot ( itup ) ) ;
if ( ! BTreeTupleIsPosting ( itup ) )
{