aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/nbtree/nbtree.c7
-rw-r--r--src/backend/access/nbtree/nbtxlog.c14
2 files changed, 6 insertions, 15 deletions
diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index f9e94c28c5b..8376a5e6b75 100644
--- a/src/backend/access/nbtree/nbtree.c
+++ b/src/backend/access/nbtree/nbtree.c
@@ -1208,9 +1208,10 @@ restart:
* 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. (We can rely on conflicts
- * produced by heap pruning, rather than producing our own
- * now.)
+ * scan by the time we get here. (XLOG_HEAP2_CLEANUP_INFO
+ * records produce conflicts using a latestRemovedXid value
+ * for the entire VACUUM, 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 a RecentGlobalXmin with a
diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c
index 72d8432d3c2..5eca4ab2727 100644
--- a/src/backend/access/nbtree/nbtxlog.c
+++ b/src/backend/access/nbtree/nbtxlog.c
@@ -428,14 +428,7 @@ btree_xlog_delete(XLogReaderState *record)
/*
* If we have any conflict processing to do, it must happen before we
- * update the page.
- *
- * Btree delete records can conflict with standby queries. You might
- * think that vacuum records would conflict as well, but we've handled
- * that already. XLOG_HEAP2_CLEANUP_INFO records provide the highest xid
- * cleaned by the vacuum of the heap and so we can resolve any conflicts
- * just once when that arrives. After that we know that no conflicts
- * exist from individual btree vacuum records on that index.
+ * update the page
*/
if (InHotStandby)
{
@@ -463,10 +456,7 @@ btree_xlog_delete(XLogReaderState *record)
PageIndexMultiDelete(page, unused, xlrec->nitems);
}
- /*
- * Mark the page as not containing any LP_DEAD items --- see comments
- * in _bt_delitems_delete().
- */
+ /* Mark the page as not containing any LP_DEAD items */
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
opaque->btpo_flags &= ~BTP_HAS_GARBAGE;