diff options
author | Peter Geoghegan <pg@bowt.ie> | 2019-05-08 12:47:20 -0700 |
---|---|---|
committer | Peter Geoghegan <pg@bowt.ie> | 2019-05-08 12:47:20 -0700 |
commit | d95e36dc384e3068ae2db909c228b1800737b18d (patch) | |
tree | 4b93701e5e4881e8ce12b143b0ddae4dfaa99a5e /src | |
parent | 61639816b870347677e6e6945604e0d9da1837ca (diff) | |
download | postgresql-d95e36dc384e3068ae2db909c228b1800737b18d.tar.gz postgresql-d95e36dc384e3068ae2db909c228b1800737b18d.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/access/nbtree/nbtxlog.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c index 0a85d8b535a..6532a25d3d4 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); |