aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Geoghegan <pg@bowt.ie>2020-01-01 11:32:07 -0800
committerPeter Geoghegan <pg@bowt.ie>2020-01-01 11:32:07 -0800
commitc5f3b53b0ef2e8ae78e7488148c12bfe5939ca17 (patch)
tree18d3beec95e9163b8571abcccfdec56cbdffa6e6
parent7559d8ebfa11d98728e816f6b655582ce41150f3 (diff)
downloadpostgresql-c5f3b53b0ef2e8ae78e7488148c12bfe5939ca17.tar.gz
postgresql-c5f3b53b0ef2e8ae78e7488148c12bfe5939ca17.zip
Update btree_xlog_delete() comments.
Commit fe97c61c updated LP_DEAD item deletion comments, but missed a minor discrepancy on the REDO side. Fix it now. In passing, don't talk about the btree_xlog_vacuum() behavior within btree_xlog_delete(). The reliance on XLOG_HEAP2_CLEANUP_INFO records for recovery conflicts is already discussed within btvacuumpage() and mentioned again in passing above btree_xlog_vacuum(), which seems sufficient.
-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;