aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2015-04-03 16:49:11 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2015-04-03 16:49:11 -0400
commitcbccaf22bf94761f79a66624ac18a5978ab17f41 (patch)
tree5eeb69fc4e3945668324de88b839d4260140aee5
parentf4540cae10d8642b59deea50869888b78f16d722 (diff)
downloadpostgresql-cbccaf22bf94761f79a66624ac18a5978ab17f41.tar.gz
postgresql-cbccaf22bf94761f79a66624ac18a5978ab17f41.zip
Remove unnecessary variables in _hash_splitbucket().
Commit ed9cc2b5df59fdbc50cce37399e26b03ab2c1686 made it unnecessary to pass start_nblkno to _hash_splitbucket(), and for that matter unnecessary to have the internal nblkno variable either. My compiler didn't complain about that, but some did. I also rearranged the use of oblkno a bit to make that case more parallel. Report and initial patch by Petr Jelinek, rearranged a bit by me. Back-patch to all branches, like the previous patch.
-rw-r--r--src/backend/access/hash/hashpage.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/backend/access/hash/hashpage.c b/src/backend/access/hash/hashpage.c
index 68dccde4c61..29ed7c23393 100644
--- a/src/backend/access/hash/hashpage.c
+++ b/src/backend/access/hash/hashpage.c
@@ -37,10 +37,9 @@
static bool _hash_alloc_buckets(Relation rel, BlockNumber firstblock,
uint32 nblocks);
static void _hash_splitbucket(Relation rel, Buffer metabuf,
- Buffer nbuf,
Bucket obucket, Bucket nbucket,
BlockNumber start_oblkno,
- BlockNumber start_nblkno,
+ Buffer nbuf,
uint32 maxbucket,
uint32 highmask, uint32 lowmask);
@@ -664,9 +663,9 @@ _hash_expandtable(Relation rel, Buffer metabuf)
_hash_chgbufaccess(rel, metabuf, HASH_WRITE, HASH_NOLOCK);
/* Relocate records to the new bucket */
- _hash_splitbucket(rel, metabuf, buf_nblkno,
+ _hash_splitbucket(rel, metabuf,
old_bucket, new_bucket,
- start_oblkno, start_nblkno,
+ start_oblkno, buf_nblkno,
maxbucket, highmask, lowmask);
/* Release bucket locks, allowing others to access them */
@@ -747,24 +746,22 @@ _hash_alloc_buckets(Relation rel, BlockNumber firstblock, uint32 nblocks)
* touched if it becomes necessary to add or remove overflow pages.)
*
* In addition, the caller must have created the new bucket's base page,
- * which is passed in buffer nbuf, pinned and write-locked. The lock
- * and pin are released here. (The API is set up this way because we must
- * do _hash_getnewbuf() before releasing the metapage write lock.)
+ * which is passed in buffer nbuf, pinned and write-locked. That lock and
+ * pin are released here. (The API is set up this way because we must do
+ * _hash_getnewbuf() before releasing the metapage write lock. So instead of
+ * passing the new bucket's start block number, we pass an actual buffer.)
*/
static void
_hash_splitbucket(Relation rel,
Buffer metabuf,
- Buffer nbuf,
Bucket obucket,
Bucket nbucket,
BlockNumber start_oblkno,
- BlockNumber start_nblkno,
+ Buffer nbuf,
uint32 maxbucket,
uint32 highmask,
uint32 lowmask)
{
- BlockNumber oblkno;
- BlockNumber nblkno;
Buffer obuf;
Page opage;
Page npage;
@@ -776,13 +773,10 @@ _hash_splitbucket(Relation rel,
* since no one else can be trying to acquire buffer lock on pages of
* either bucket.
*/
- oblkno = start_oblkno;
- obuf = _hash_getbuf(rel, oblkno, HASH_WRITE, LH_BUCKET_PAGE);
+ obuf = _hash_getbuf(rel, start_oblkno, HASH_WRITE, LH_BUCKET_PAGE);
opage = BufferGetPage(obuf);
oopaque = (HashPageOpaque) PageGetSpecialPointer(opage);
- nblkno = start_nblkno;
- Assert(nblkno == BufferGetBlockNumber(nbuf));
npage = BufferGetPage(nbuf);
/* initialize the new bucket's primary page */
@@ -801,6 +795,7 @@ _hash_splitbucket(Relation rel,
*/
for (;;)
{
+ BlockNumber oblkno;
OffsetNumber ooffnum;
OffsetNumber omaxoffnum;
OffsetNumber deletable[MaxOffsetNumber];
@@ -847,7 +842,7 @@ _hash_splitbucket(Relation rel,
/* chain to a new overflow page */
nbuf = _hash_addovflpage(rel, metabuf, nbuf);
npage = BufferGetPage(nbuf);
- /* we don't need nblkno or nopaque within the loop */
+ /* we don't need nopaque within the loop */
}
/*