From 8b0fe44806ecc1f080990f38349e20e388b5b209 Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@paquier.xyz>
Date: Thu, 31 Jan 2019 14:27:39 +0900
Subject: [PATCH 2/6] Simplify _bt_relbuf

---
 src/backend/access/nbtree/nbtinsert.c | 48 ++++++++++----------
 src/backend/access/nbtree/nbtpage.c   | 64 +++++++++++++--------------
 src/backend/access/nbtree/nbtree.c    |  8 ++--
 src/backend/access/nbtree/nbtsearch.c | 14 +++---
 src/backend/access/nbtree/nbtutils.c  |  2 +-
 src/include/access/nbtree.h           |  2 +-
 6 files changed, 69 insertions(+), 69 deletions(-)

diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index 5c2b8034f5..71249a24ec 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -191,7 +191,7 @@ top:
 			}
 			else
 			{
-				_bt_relbuf(rel, buf);
+				_bt_relbuf(buf);
 
 				/*
 				 * Something did not work out. Just forget about the cached
@@ -256,7 +256,7 @@ top:
 		if (TransactionIdIsValid(xwait))
 		{
 			/* Have to wait for the other guy ... */
-			_bt_relbuf(rel, buf);
+			_bt_relbuf(buf);
 
 			/*
 			 * If it's a speculative insertion, wait for it to finish (ie. to
@@ -295,7 +295,7 @@ top:
 	else
 	{
 		/* just release the buffer */
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(buf);
 	}
 
 	/* be tidy */
@@ -429,7 +429,7 @@ _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel,
 					if (checkUnique == UNIQUE_CHECK_PARTIAL)
 					{
 						if (nbuf != InvalidBuffer)
-							_bt_relbuf(rel, nbuf);
+							_bt_relbuf(nbuf);
 						*is_unique = false;
 						return InvalidTransactionId;
 					}
@@ -444,7 +444,7 @@ _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel,
 					if (TransactionIdIsValid(xwait))
 					{
 						if (nbuf != InvalidBuffer)
-							_bt_relbuf(rel, nbuf);
+							_bt_relbuf(nbuf);
 						/* Tell _bt_doinsert to wait... */
 						*speculativeToken = SnapshotDirty.speculativeToken;
 						return xwait;
@@ -499,8 +499,8 @@ _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel,
 					 * cause deadlocks.
 					 */
 					if (nbuf != InvalidBuffer)
-						_bt_relbuf(rel, nbuf);
-					_bt_relbuf(rel, buf);
+						_bt_relbuf(nbuf);
+					_bt_relbuf(buf);
 
 					{
 						Datum		values[INDEX_MAX_KEYS];
@@ -591,7 +591,7 @@ _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel,
 									RelationGetRelationName(rel))));
 
 	if (nbuf != InvalidBuffer)
-		_bt_relbuf(rel, nbuf);
+		_bt_relbuf(nbuf);
 
 	return InvalidTransactionId;
 }
@@ -761,7 +761,7 @@ _bt_findinsertloc(Relation rel,
 
 			rblkno = lpageop->btpo_next;
 		}
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(buf);
 		buf = rbuf;
 		movedright = true;
 		vacuumed = false;
@@ -944,7 +944,7 @@ _bt_insertonpg(Relation rel,
 			if (metad->btm_fastlevel >= lpageop->btpo.level)
 			{
 				/* no update wanted */
-				_bt_relbuf(rel, metabuf);
+				_bt_relbuf(metabuf);
 				metabuf = InvalidBuffer;
 			}
 		}
@@ -1063,10 +1063,10 @@ _bt_insertonpg(Relation rel,
 
 		/* release buffers */
 		if (BufferIsValid(metabuf))
-			_bt_relbuf(rel, metabuf);
+			_bt_relbuf(metabuf);
 		if (BufferIsValid(cbuf))
-			_bt_relbuf(rel, cbuf);
-		_bt_relbuf(rel, buf);
+			_bt_relbuf(cbuf);
+		_bt_relbuf(buf);
 
 		/*
 		 * If we decided to cache the insertion target block, then set it now.
@@ -1526,11 +1526,11 @@ _bt_split(Relation rel, Buffer buf, Buffer cbuf, OffsetNumber firstright,
 
 	/* release the old right sibling */
 	if (!P_RIGHTMOST(ropaque))
-		_bt_relbuf(rel, sbuf);
+		_bt_relbuf(sbuf);
 
 	/* release the child */
 	if (!isleaf)
-		_bt_relbuf(rel, cbuf);
+		_bt_relbuf(cbuf);
 
 	/* split's done */
 	return rbuf;
@@ -1838,9 +1838,9 @@ _bt_insert_parent(Relation rel,
 		/* create a new root node and update the metapage */
 		rootbuf = _bt_newroot(rel, buf, rbuf);
 		/* release the split buffers */
-		_bt_relbuf(rel, rootbuf);
-		_bt_relbuf(rel, rbuf);
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(rootbuf);
+		_bt_relbuf(rbuf);
+		_bt_relbuf(buf);
 	}
 	else
 	{
@@ -1867,7 +1867,7 @@ _bt_insert_parent(Relation rel,
 			stack->bts_offset = InvalidOffsetNumber;
 			stack->bts_btentry = InvalidBlockNumber;
 			stack->bts_parent = NULL;
-			_bt_relbuf(rel, pbuf);
+			_bt_relbuf(pbuf);
 		}
 
 		/* get high key from left page == lower bound for new right page */
@@ -1892,7 +1892,7 @@ _bt_insert_parent(Relation rel,
 		 * Now we can unlock the right child. The left child will be unlocked
 		 * by _bt_insertonpg().
 		 */
-		_bt_relbuf(rel, rbuf);
+		_bt_relbuf(rbuf);
 
 		/* Check for error only after writing children */
 		if (pbuf == InvalidBuffer)
@@ -1951,7 +1951,7 @@ _bt_finish_split(Relation rel, Buffer lbuf, BTStack stack)
 
 		was_root = (metad->btm_root == BufferGetBlockNumber(lbuf));
 
-		_bt_relbuf(rel, metabuf);
+		_bt_relbuf(metabuf);
 	}
 	else
 		was_root = false;
@@ -2072,12 +2072,12 @@ _bt_getstackbuf(Relation rel, BTStack stack, int access)
 		 */
 		if (P_RIGHTMOST(opaque))
 		{
-			_bt_relbuf(rel, buf);
+			_bt_relbuf(buf);
 			return InvalidBuffer;
 		}
 		blkno = opaque->btpo_next;
 		start = InvalidOffsetNumber;
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(buf);
 	}
 }
 
@@ -2256,7 +2256,7 @@ _bt_newroot(Relation rel, Buffer lbuf, Buffer rbuf)
 	END_CRIT_SECTION();
 
 	/* done with metapage */
-	_bt_relbuf(rel, metabuf);
+	_bt_relbuf(metabuf);
 
 	pfree(left_item);
 	pfree(right_item);
diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c
index 1d72fe5408..de7462b091 100644
--- a/src/backend/access/nbtree/nbtpage.c
+++ b/src/backend/access/nbtree/nbtpage.c
@@ -175,7 +175,7 @@ _bt_update_meta_cleanup_info(Relation rel, TransactionId oldestBtpoXact,
 
 	if (!needsRewrite)
 	{
-		_bt_relbuf(rel, metabuf);
+		_bt_relbuf(metabuf);
 		return;
 	}
 
@@ -217,7 +217,7 @@ _bt_update_meta_cleanup_info(Relation rel, TransactionId oldestBtpoXact,
 	}
 
 	END_CRIT_SECTION();
-	_bt_relbuf(rel, metabuf);
+	_bt_relbuf(metabuf);
 }
 
 /*
@@ -298,7 +298,7 @@ _bt_getroot(Relation rel, int access)
 			/* OK, accept cached page as the root */
 			return rootbuf;
 		}
-		_bt_relbuf(rel, rootbuf);
+		_bt_relbuf(rootbuf);
 		/* Cache is stale, throw it away */
 		if (rel->rd_amcache)
 			pfree(rel->rd_amcache);
@@ -333,7 +333,7 @@ _bt_getroot(Relation rel, int access)
 		/* If access = BT_READ, caller doesn't want us to create root yet */
 		if (access == BT_READ)
 		{
-			_bt_relbuf(rel, metabuf);
+			_bt_relbuf(metabuf);
 			return InvalidBuffer;
 		}
 
@@ -354,7 +354,7 @@ _bt_getroot(Relation rel, int access)
 			 * over again.  (Is that really true? But it's hardly worth trying
 			 * to optimize this case.)
 			 */
-			_bt_relbuf(rel, metabuf);
+			_bt_relbuf(metabuf);
 			return _bt_getroot(rel, access);
 		}
 
@@ -431,7 +431,7 @@ _bt_getroot(Relation rel, int access)
 		LockBuffer(rootbuf, BT_READ);
 
 		/* okay, metadata is correct, release lock on it */
-		_bt_relbuf(rel, metabuf);
+		_bt_relbuf(metabuf);
 	}
 	else
 	{
@@ -541,7 +541,7 @@ _bt_gettrueroot(Relation rel)
 	/* if no root page initialized yet, fail */
 	if (metad->btm_root == P_NONE)
 	{
-		_bt_relbuf(rel, metabuf);
+		_bt_relbuf(metabuf);
 		return InvalidBuffer;
 	}
 
@@ -634,7 +634,7 @@ _bt_getrootheight(Relation rel)
 		 */
 		if (metad->btm_root == P_NONE)
 		{
-			_bt_relbuf(rel, metabuf);
+			_bt_relbuf(metabuf);
 			return 0;
 		}
 
@@ -643,7 +643,7 @@ _bt_getrootheight(Relation rel)
 		 */
 		_bt_cachemetadata(rel, metad);
 
-		_bt_relbuf(rel, metabuf);
+		_bt_relbuf(metabuf);
 	}
 
 	metad = (BTMetaPageData *) rel->rd_amcache;
@@ -801,7 +801,7 @@ _bt_getbuf(Relation rel, BlockNumber blkno, int access)
 					return buf;
 				}
 				elog(DEBUG2, "FSM returned nonrecyclable page");
-				_bt_relbuf(rel, buf);
+				_bt_relbuf(buf);
 			}
 			else
 			{
@@ -881,7 +881,7 @@ _bt_relandgetbuf(Relation rel, Buffer obuf, BlockNumber blkno, int access)
  * Lock and pin (refcount) are both dropped.
  */
 void
-_bt_relbuf(Relation rel, Buffer buf)
+_bt_relbuf(Buffer buf)
 {
 	UnlockReleaseBuffer(buf);
 }
@@ -1103,7 +1103,7 @@ _bt_is_page_halfdead(Relation rel, BlockNumber blk)
 	opaque = (BTPageOpaque) PageGetSpecialPointer(page);
 
 	result = P_ISHALFDEAD(opaque);
-	_bt_relbuf(rel, buf);
+	_bt_relbuf(buf);
 
 	return result;
 }
@@ -1180,7 +1180,7 @@ _bt_lock_branch_parent(Relation rel, BlockNumber child, BTStack stack,
 			if (P_RIGHTMOST(opaque) || P_ISROOT(opaque) ||
 				P_INCOMPLETE_SPLIT(opaque))
 			{
-				_bt_relbuf(rel, pbuf);
+				_bt_relbuf(pbuf);
 				return false;
 			}
 
@@ -1188,7 +1188,7 @@ _bt_lock_branch_parent(Relation rel, BlockNumber child, BTStack stack,
 			*rightsib = opaque->btpo_next;
 			leftsib = opaque->btpo_prev;
 
-			_bt_relbuf(rel, pbuf);
+			_bt_relbuf(pbuf);
 
 			/*
 			 * Like in _bt_pagedel, check that the left sibling is not marked
@@ -1216,10 +1216,10 @@ _bt_lock_branch_parent(Relation rel, BlockNumber child, BTStack stack,
 				if (lopaque->btpo_next == parent &&
 					P_INCOMPLETE_SPLIT(lopaque))
 				{
-					_bt_relbuf(rel, lbuf);
+					_bt_relbuf(lbuf);
 					return false;
 				}
-				_bt_relbuf(rel, lbuf);
+				_bt_relbuf(lbuf);
 			}
 
 			/*
@@ -1239,7 +1239,7 @@ _bt_lock_branch_parent(Relation rel, BlockNumber child, BTStack stack,
 		else
 		{
 			/* Unsafe to delete */
-			_bt_relbuf(rel, pbuf);
+			_bt_relbuf(pbuf);
 			return false;
 		}
 	}
@@ -1320,7 +1320,7 @@ _bt_pagedel(Relation rel, Buffer buf)
 						 errmsg("index \"%s\" contains a half-dead internal page",
 								RelationGetRelationName(rel)),
 						 errhint("This can be caused by an interrupted VACUUM in version 9.3 or older, before upgrade. Please REINDEX it.")));
-			_bt_relbuf(rel, buf);
+			_bt_relbuf(buf);
 			return ndeleted;
 		}
 
@@ -1348,7 +1348,7 @@ _bt_pagedel(Relation rel, Buffer buf)
 			/* Should never fail to delete a half-dead page */
 			Assert(!P_ISHALFDEAD(opaque));
 
-			_bt_relbuf(rel, buf);
+			_bt_relbuf(buf);
 			return ndeleted;
 		}
 
@@ -1413,10 +1413,10 @@ _bt_pagedel(Relation rel, Buffer buf)
 						P_INCOMPLETE_SPLIT(lopaque))
 					{
 						ReleaseBuffer(buf);
-						_bt_relbuf(rel, lbuf);
+						_bt_relbuf(lbuf);
 						return ndeleted;
 					}
-					_bt_relbuf(rel, lbuf);
+					_bt_relbuf(lbuf);
 				}
 
 				/* we need an insertion scan key for the search, so build one */
@@ -1426,7 +1426,7 @@ _bt_pagedel(Relation rel, Buffer buf)
 								   IndexRelationGetNumberOfKeyAttributes(rel),
 								   itup_scankey, false, &lbuf, BT_READ, NULL);
 				/* don't need a pin on the page */
-				_bt_relbuf(rel, lbuf);
+				_bt_relbuf(lbuf);
 
 				/*
 				 * Re-lock the leaf page, and start over, to re-check that the
@@ -1438,7 +1438,7 @@ _bt_pagedel(Relation rel, Buffer buf)
 
 			if (!_bt_mark_page_halfdead(rel, buf, stack))
 			{
-				_bt_relbuf(rel, buf);
+				_bt_relbuf(buf);
 				return ndeleted;
 			}
 		}
@@ -1462,7 +1462,7 @@ _bt_pagedel(Relation rel, Buffer buf)
 
 		rightsib = opaque->btpo_next;
 
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(buf);
 
 		/*
 		 * Check here, as calling loops will have locks held, preventing
@@ -1663,7 +1663,7 @@ _bt_mark_page_halfdead(Relation rel, Buffer leafbuf, BTStack stack)
 
 	END_CRIT_SECTION();
 
-	_bt_relbuf(rel, topparent);
+	_bt_relbuf(topparent);
 	return true;
 }
 
@@ -1786,7 +1786,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
 		{
 			/* step right one page */
 			leftsib = opaque->btpo_next;
-			_bt_relbuf(rel, lbuf);
+			_bt_relbuf(lbuf);
 
 			/*
 			 * It'd be good to check for interrupts here, but it's not easy to
@@ -1804,7 +1804,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
 				{
 					/* we have only a pin on target, but pin+lock on leafbuf */
 					ReleaseBuffer(buf);
-					_bt_relbuf(rel, leafbuf);
+					_bt_relbuf(leafbuf);
 				}
 				else
 				{
@@ -1912,7 +1912,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
 			if (metad->btm_fastlevel > targetlevel + 1)
 			{
 				/* no update wanted */
-				_bt_relbuf(rel, metabuf);
+				_bt_relbuf(metabuf);
 				metabuf = InvalidBuffer;
 			}
 		}
@@ -2057,19 +2057,19 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, bool *rightsib_empty)
 
 	/* release metapage */
 	if (BufferIsValid(metabuf))
-		_bt_relbuf(rel, metabuf);
+		_bt_relbuf(metabuf);
 
 	/* release siblings */
 	if (BufferIsValid(lbuf))
-		_bt_relbuf(rel, lbuf);
-	_bt_relbuf(rel, rbuf);
+		_bt_relbuf(lbuf);
+	_bt_relbuf(rbuf);
 
 	/*
 	 * Release the target, if it was not the leaf block.  The leaf is always
 	 * kept locked.
 	 */
 	if (target != leafblkno)
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(buf);
 
 	return true;
 }
diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index 98917de2ef..b5053269fb 100644
--- a/src/backend/access/nbtree/nbtree.c
+++ b/src/backend/access/nbtree/nbtree.c
@@ -839,7 +839,7 @@ _bt_vacuum_needs_cleanup(IndexVacuumInfo *info)
 			result = true;
 	}
 
-	_bt_relbuf(info->index, metabuf);
+	_bt_relbuf(metabuf);
 	return result;
 }
 
@@ -1061,7 +1061,7 @@ btvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats,
 		LockBufferForCleanup(buf);
 		_bt_checkpage(rel, buf);
 		_bt_delitems_vacuum(rel, buf, NULL, 0, vstate.lastBlockVacuumed);
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(buf);
 	}
 
 	MemoryContextDelete(vstate.pagedelcontext);
@@ -1149,7 +1149,7 @@ restart:
 			!P_ISLEAF(opaque) ||
 			opaque->btpo_cycleid != vstate->cycleid)
 		{
-			_bt_relbuf(rel, buf);
+			_bt_relbuf(buf);
 			return;
 		}
 	}
@@ -1350,7 +1350,7 @@ restart:
 		/* pagedel released buffer, so we shouldn't */
 	}
 	else
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(buf);
 
 	/*
 	 * This is really tail recursion, but if the compiler is too stupid to
diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c
index 92832237a8..2afd71bf28 100644
--- a/src/backend/access/nbtree/nbtsearch.c
+++ b/src/backend/access/nbtree/nbtsearch.c
@@ -297,7 +297,7 @@ _bt_moveright(Relation rel,
 			if (P_INCOMPLETE_SPLIT(opaque))
 				_bt_finish_split(rel, buf, stack);
 			else
-				_bt_relbuf(rel, buf);
+				_bt_relbuf(buf);
 
 			/* re-acquire the lock in the right mode, and re-check */
 			buf = _bt_getbuf(rel, blkno, access);
@@ -1526,7 +1526,7 @@ _bt_readnextpage(IndexScanDesc scan, BlockNumber blkno, ScanDirection dir)
 			/* nope, keep going */
 			if (scan->parallel_scan != NULL)
 			{
-				_bt_relbuf(rel, so->currPos.buf);
+				_bt_relbuf(so->currPos.buf);
 				status = _bt_parallel_seize(scan, &blkno);
 				if (!status)
 				{
@@ -1537,7 +1537,7 @@ _bt_readnextpage(IndexScanDesc scan, BlockNumber blkno, ScanDirection dir)
 			else
 			{
 				blkno = opaque->btpo_next;
-				_bt_relbuf(rel, so->currPos.buf);
+				_bt_relbuf(so->currPos.buf);
 			}
 		}
 	}
@@ -1585,7 +1585,7 @@ _bt_readnextpage(IndexScanDesc scan, BlockNumber blkno, ScanDirection dir)
 			/* Done if we know there are no matching keys to the left */
 			if (!so->currPos.moreLeft)
 			{
-				_bt_relbuf(rel, so->currPos.buf);
+				_bt_relbuf(so->currPos.buf);
 				_bt_parallel_done(scan);
 				BTScanPosInvalidate(so->currPos);
 				return false;
@@ -1633,7 +1633,7 @@ _bt_readnextpage(IndexScanDesc scan, BlockNumber blkno, ScanDirection dir)
 			 */
 			if (scan->parallel_scan != NULL)
 			{
-				_bt_relbuf(rel, so->currPos.buf);
+				_bt_relbuf(so->currPos.buf);
 				status = _bt_parallel_seize(scan, &blkno);
 				if (!status)
 				{
@@ -1703,14 +1703,14 @@ _bt_walk_left(Relation rel, Buffer buf, Snapshot snapshot)
 		/* if we're at end of tree, release buf and return failure */
 		if (P_LEFTMOST(opaque))
 		{
-			_bt_relbuf(rel, buf);
+			_bt_relbuf(buf);
 			break;
 		}
 		/* remember original page we are stepping left from */
 		obknum = BufferGetBlockNumber(buf);
 		/* step left */
 		blkno = lblkno = opaque->btpo_prev;
-		_bt_relbuf(rel, buf);
+		_bt_relbuf(buf);
 		/* check for interrupts while we're not holding any buffer lock */
 		CHECK_FOR_INTERRUPTS();
 		buf = _bt_getbuf(rel, blkno, BT_READ);
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c
index 2c05fb5e45..2cc02a30d5 100644
--- a/src/backend/access/nbtree/nbtutils.c
+++ b/src/backend/access/nbtree/nbtutils.c
@@ -1789,7 +1789,7 @@ _bt_killitems(IndexScanDesc scan)
 		else
 		{
 			/* Modified while not pinned means hinting is not safe. */
-			_bt_relbuf(scan->indexRelation, buf);
+			_bt_relbuf(buf);
 			return;
 		}
 	}
diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h
index 4fb92d60a1..f2310f337b 100644
--- a/src/include/access/nbtree.h
+++ b/src/include/access/nbtree.h
@@ -545,7 +545,7 @@ extern void _bt_checkpage(Relation rel, Buffer buf);
 extern Buffer _bt_getbuf(Relation rel, BlockNumber blkno, int access);
 extern Buffer _bt_relandgetbuf(Relation rel, Buffer obuf,
 				 BlockNumber blkno, int access);
-extern void _bt_relbuf(Relation rel, Buffer buf);
+extern void _bt_relbuf(Buffer buf);
 extern void _bt_pageinit(Page page, Size size);
 extern bool _bt_page_recyclable(Page page);
 extern void _bt_delitems_delete(Relation rel, Buffer buf,
-- 
2.20.1

