vfix-0001-fix-size-overflow.patch
text/x-patch
Filename: vfix-0001-fix-size-overflow.patch
Type: text/x-patch
Part: 3
Message:
Re: Fix overflow of nbatch
Patch
Format: format-patch
Series: patch 0001
Subject: fix size overflow
| File | + | − |
|---|---|---|
| src/backend/executor/nodeHash.c | 5 | 3 |
From 4f128c5cbdb11c4d9b1882d39b75338c854ba30e Mon Sep 17 00:00:00 2001
From: Tomas Vondra <tomas@vondra.me>
Date: Wed, 24 Sep 2025 14:30:31 +0200
Subject: [PATCH vfix 1/4] fix size overflow
---
src/backend/executor/nodeHash.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index 8d2201ab67f..ef589b90339 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -913,10 +913,12 @@ ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew,
while (nbatch > 0)
{
/* how much memory are we using with current nbatch value */
- size_t current_space = hash_table_bytes + (2 * nbatch * BLCKSZ);
+ size_t current_space =
+ hash_table_bytes + (2 * nbatch * (size_t) BLCKSZ);
/* how much memory would we use with half the batches */
- size_t new_space = hash_table_bytes * 2 + (nbatch * BLCKSZ);
+ size_t new_space =
+ hash_table_bytes * 2 + (nbatch * (size_t) BLCKSZ);
/* If the memory usage would not decrease, we found the optimum. */
if (current_space < new_space)
@@ -995,7 +997,7 @@ ExecHashIncreaseBatchSize(HashJoinTable hashtable)
* How much additional memory would doubling nbatch use? Each batch may
* require two buffered files (inner/outer), with a BLCKSZ buffer.
*/
- size_t batchSpace = (hashtable->nbatch * 2 * BLCKSZ);
+ size_t batchSpace = (hashtable->nbatch * 2 * (size_t) BLCKSZ);
/*
* Compare the new space needed for doubling nbatch and for enlarging the
--
2.51.0