diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index ee9298a157f564c6f52b3bc3afdb1ccc224d93be..0b2c13917eec2b055df3df8ba57676ba63ab445b 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -518,7 +518,7 @@ ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew,
 		 * overhead for the hash code, pointer to the next tuple, etc.
 		 */
 		bucket_size = (tupsize * NTUP_PER_BUCKET + sizeof(HashJoinTuple));
-		lbuckets = 1 << my_log2(hash_table_bytes / bucket_size);
+		lbuckets = 1L << my_log2(hash_table_bytes / bucket_size);
 		lbuckets = Min(lbuckets, max_pointers);
 		nbuckets = (int) lbuckets;
 		bucket_bytes = nbuckets * sizeof(HashJoinTuple);