Fix size overflow in calculation introduced by commits d6ad34f3 and bea449c6.
authorAmit Kapila <akapila@postgresql.org>
Fri, 12 Mar 2021 10:12:08 +0000 (15:42 +0530)
committerAmit Kapila <akapila@postgresql.org>
Fri, 12 Mar 2021 10:12:08 +0000 (15:42 +0530)
Reported-by: Thomas Munro
Author: Takayuki Tsunakawa
Reviewed-by: Kyotaro Horiguchi
Discussion: https://postgr.es/m/CA+hUKG+oPoFizjABt=GXZWTEHx3oev5rAe2scjW2r6F1rguo5w@mail.gmail.com

src/backend/storage/buffer/bufmgr.c

index 4c1d5eceb4d176d2c17d4abb20a4f9348f91c8a5..e4d257e1c521447007373b401994b39fad08b058 100644 (file)
@@ -76,7 +76,7 @@
  * being dropped. For the relations with size below this threshold, we find
  * the buffers by doing lookups in BufMapping table.
  */
-#define BUF_DROP_FULL_SCAN_THRESHOLD       (uint32) (NBuffers / 32)
+#define BUF_DROP_FULL_SCAN_THRESHOLD       (uint64) (NBuffers / 32)
 
 typedef struct PrivateRefCountEntry
 {
@@ -2987,7 +2987,7 @@ DropRelFileNodeBuffers(SMgrRelation smgr_reln, ForkNumber *forkNum,
    int         j;
    RelFileNodeBackend rnode;
    BlockNumber nForkBlock[MAX_FORKNUM];
-   BlockNumber nBlocksToInvalidate = 0;
+   uint64      nBlocksToInvalidate = 0;
 
    rnode = smgr_reln->smgr_rnode;
 
@@ -3111,7 +3111,7 @@ DropRelFileNodesAllBuffers(SMgrRelation *smgr_reln, int nnodes)
    int         n = 0;
    SMgrRelation *rels;
    BlockNumber (*block)[MAX_FORKNUM + 1];
-   BlockNumber nBlocksToInvalidate = 0;
+   uint64      nBlocksToInvalidate = 0;
    RelFileNode *nodes;
    bool        cached = true;
    bool        use_bsearch;