From fa87d1117cd4aa5ef332ef5b5e72e848dff82903 Mon Sep 17 00:00:00 2001 From: qianchanger Date: Mon, 7 Nov 2022 09:06:33 +0000 Subject: [PATCH] [CP] Limit the memory use of bloom filter to 2g --- src/sql/engine/px/ob_px_bloom_filter.cpp | 2 +- src/sql/optimizer/ob_log_join_filter.h | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/sql/engine/px/ob_px_bloom_filter.cpp b/src/sql/engine/px/ob_px_bloom_filter.cpp index 29ebb74bf..aa358e80d 100644 --- a/src/sql/engine/px/ob_px_bloom_filter.cpp +++ b/src/sql/engine/px/ob_px_bloom_filter.cpp @@ -25,7 +25,7 @@ using namespace sql; using namespace obrpc; #define MIN_FILTER_SIZE 256 -#define MAX_BIT_COUNT 4611686018427387904 // 2^62 +#define MAX_BIT_COUNT 17179869184// 2^34 due to the memory single alloc limit #define BF_BLOCK_SIZE 256L #define BLOCK_MASK 255L // = size of block - 1 #define CACHE_LINE_SIZE 64 // 64 bytes diff --git a/src/sql/optimizer/ob_log_join_filter.h b/src/sql/optimizer/ob_log_join_filter.h index 31cd840e5..7e7401d2a 100644 --- a/src/sql/optimizer/ob_log_join_filter.h +++ b/src/sql/optimizer/ob_log_join_filter.h @@ -43,7 +43,16 @@ public: inline void set_filter_id(int64_t filter_id) { filter_id_ = filter_id; } inline int64_t get_filter_id() const { return filter_id_; } inline bool is_create_filter() { return is_create_; } - inline void set_filter_length(int64_t filter_len) { filter_len_ = filter_len; } + inline void set_filter_length(double filter_len) + { + if (filter_len <= 0) { + filter_len_ = 1; + } else if (filter_len > INT64_MAX) { + filter_len_ = INT64_MAX; + } else { + filter_len_ = filter_len; + } + } inline int64_t get_filter_length() const { return filter_len_; } inline void set_is_use_filter_shuffle(bool flag) { is_use_filter_shuffle_ = flag; } inline bool is_use_filter_shuffle() { return is_use_filter_shuffle_; }