From d95e36dc384e3068ae2db909c228b1800737b18d Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Wed, 8 May 2019 12:47:20 -0700 Subject: [PATCH] Remove obsolete nbtree split REDO routine comment. Commit dd299df8189, which added suffix truncation to nbtree, simplified the WAL record format used by page splits. It became necessary to explicitly WAL-log the new high key for the left half of a split in all cases, which relieved the REDO routine from having to reconstruct a new high key for the left page by copying the first item from the right page. Remove a comment that referred to the previous practice. --- src/backend/access/nbtree/nbtxlog.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c index 0a85d8b535..6532a25d3d 100644 --- a/src/backend/access/nbtree/nbtxlog.c +++ b/src/backend/access/nbtree/nbtxlog.c @@ -248,8 +248,6 @@ btree_xlog_split(bool onleft, XLogReaderState *record) PageSetLSN(rpage, lsn); MarkBufferDirty(rbuf); - /* don't release the buffer yet; we touch right page's first item below */ - /* Now reconstruct left (original) sibling page */ if (XLogReadBufferForRedo(record, 0, &lbuf) == BLK_NEEDS_REDO) { @@ -257,10 +255,9 @@ btree_xlog_split(bool onleft, XLogReaderState *record) * To retain the same physical order of the tuples that they had, we * initialize a temporary empty page for the left page and add all the * items to that in item number order. This mirrors how _bt_split() - * works. It's not strictly required to retain the same physical - * order, as long as the items are in the correct item number order, - * but it helps debugging. See also _bt_restore_page(), which does - * the same for the right page. + * works. Retaining the same physical order makes WAL consistency + * checking possible. See also _bt_restore_page(), which does the + * same for the right page. */ Page lpage = (Page) BufferGetPage(lbuf); BTPageOpaque lopaque = (BTPageOpaque) PageGetSpecialPointer(lpage); @@ -345,7 +342,10 @@ btree_xlog_split(bool onleft, XLogReaderState *record) MarkBufferDirty(lbuf); } - /* We no longer need the buffers */ + /* + * We no longer need the buffers. They must be released together, so that + * readers cannot observe two inconsistent halves. + */ if (BufferIsValid(lbuf)) UnlockReleaseBuffer(lbuf); UnlockReleaseBuffer(rbuf); -- 2.40.0