Fix wrong keysize in PrivateRefCountHash creation.
authorAndres Freund <andres@anarazel.de>
Mon, 22 Feb 2016 06:48:44 +0000 (22:48 -0800)
committerAndres Freund <andres@anarazel.de>
Mon, 22 Feb 2016 06:49:52 +0000 (22:49 -0800)
In 4b4b680c3 I accidentally used sizeof(PrivateRefCountArray) instead of
sizeof(PrivateRefCountEntry) when creating the refcount overflow
hashtable. As the former is bigger than the latter, this luckily only
resulted in a slightly increased memory usage when many buffers are
pinned in a backend.

Reported-By: Takashi Horikawa
Discussion: 73FA3881462C614096F815F75628AFCD035A48C3@BPXM01GP.gisp.nec.co.jp
Backpatch: 9.5, where thew new ref count infrastructure was introduced

src/backend/storage/buffer/bufmgr.c

index f1564ee4434a6092bf0761c23028bdbc3915f540..75e3aa5ecdd3baffc67fe0d7be99e7c7692a1ce7 100644 (file)
@@ -2103,7 +2103,7 @@ InitBufferPoolAccess(void)
 
    MemSet(&hash_ctl, 0, sizeof(hash_ctl));
    hash_ctl.keysize = sizeof(int32);
-   hash_ctl.entrysize = sizeof(PrivateRefCountArray);
+   hash_ctl.entrysize = sizeof(PrivateRefCountEntry);
 
    PrivateRefCountHash = hash_create("PrivateRefCount", 100, &hash_ctl,
                                      HASH_ELEM | HASH_BLOBS);