From fb344b66caefe32a07d7d175f54802652fc853a2 Mon Sep 17 00:00:00 2001 From: TengJianPing <18241664+jacktengg@users.noreply.github.com> Date: Thu, 4 Jul 2024 11:12:52 +0800 Subject: [PATCH] [fix](hash join) fix numeric overflow when calculating hash table bucket size #37193 (#37213) ## Proposed changes Bp #37193 --- be/src/vec/common/hash_table/join_hash_table.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/be/src/vec/common/hash_table/join_hash_table.h b/be/src/vec/common/hash_table/join_hash_table.h index a869ad419a..99ce2d13b4 100644 --- a/be/src/vec/common/hash_table/join_hash_table.h +++ b/be/src/vec/common/hash_table/join_hash_table.h @@ -19,6 +19,8 @@ #include +#include + #include "vec/columns/column_filter_helper.h" #include "vec/common/hash_table/hash.h" #include "vec/common/hash_table/hash_table.h" @@ -35,7 +37,8 @@ public: static uint32_t calc_bucket_size(size_t num_elem) { size_t expect_bucket_size = num_elem + (num_elem - 1) / 7; - return phmap::priv::NormalizeCapacity(expect_bucket_size) + 1; + return std::min(phmap::priv::NormalizeCapacity(expect_bucket_size) + 1, + static_cast(std::numeric_limits::max())); } size_t get_byte_size() const {