diff options
author | Peter Geoghegan <pg@bowt.ie> | 2020-01-01 11:32:07 -0800 |
---|---|---|
committer | Peter Geoghegan <pg@bowt.ie> | 2020-01-01 11:32:07 -0800 |
commit | c5f3b53b0ef2e8ae78e7488148c12bfe5939ca17 (patch) | |
tree | 18d3beec95e9163b8571abcccfdec56cbdffa6e6 | |
parent | 7559d8ebfa11d98728e816f6b655582ce41150f3 (diff) | |
download | postgresql-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.c | 7 | ||||
-rw-r--r-- | src/backend/access/nbtree/nbtxlog.c | 14 |
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; |