From 2d8ec6fd681719cf06c470abdb78f5e2b9a6446c Mon Sep 17 00:00:00 2001 From: Wang Bo Date: Wed, 11 May 2022 14:01:17 +0800 Subject: [PATCH 1/3] fix --- be/src/vec/columns/predicate_column.h | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/be/src/vec/columns/predicate_column.h b/be/src/vec/columns/predicate_column.h index 7db73b9d0a3850..ad8f77e210c297 100644 --- a/be/src/vec/columns/predicate_column.h +++ b/be/src/vec/columns/predicate_column.h @@ -230,17 +230,36 @@ class PredicateColumnType final : public COWHelper) { + if (!_is_mem_pool_inited) { + _pool.reset(new MemPool("PredicateStringColumn")); + _is_mem_pool_inited = true; + } + + size_t total_mem_size = 0; + for (size_t i = 0; i < num; i++) { + total_mem_size += len_array[i]; + } + + char* destination = (char*)_pool->allocate(total_mem_size); for (size_t i = 0; i < num; i++) { uint32_t len = len_array[i]; uint32_t start_offset = start_offset_array[i]; - insert_string_value(data_array + start_offset, len); + memcpy(destination, data_array + start_offset, len); + StringValue sv(destination, len); + data.push_back_without_reserve(sv); + destination += len; } } } void insert_default() override { data.push_back(T()); } - void clear() override { data.clear(); } + void clear() override { + data.clear(); + if (_is_mem_pool_inited) { + _pool->clear(); + } + } size_t byte_size() const override { return data.size() * sizeof(T); } @@ -410,6 +429,9 @@ class PredicateColumnType final : public COWHelper _pool; + bool _is_mem_pool_inited = false;; }; using ColumnStringValue = PredicateColumnType; From 8db20f895c097ea793e509cae9beefcaa6465df4 Mon Sep 17 00:00:00 2001 From: Wang Bo Date: Wed, 11 May 2022 17:03:27 +0800 Subject: [PATCH 2/3] delete flag --- be/src/vec/columns/predicate_column.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/be/src/vec/columns/predicate_column.h b/be/src/vec/columns/predicate_column.h index ad8f77e210c297..9a118831875fe9 100644 --- a/be/src/vec/columns/predicate_column.h +++ b/be/src/vec/columns/predicate_column.h @@ -230,9 +230,8 @@ class PredicateColumnType final : public COWHelper) { - if (!_is_mem_pool_inited) { + if (_pool == nullptr) { _pool.reset(new MemPool("PredicateStringColumn")); - _is_mem_pool_inited = true; } size_t total_mem_size = 0; @@ -256,7 +255,7 @@ class PredicateColumnType final : public COWHelperclear(); } } @@ -431,7 +430,6 @@ class PredicateColumnType final : public COWHelper _pool; - bool _is_mem_pool_inited = false;; }; using ColumnStringValue = PredicateColumnType; From 4790740ab5940f18b40bbda758cef4e24a35a507 Mon Sep 17 00:00:00 2001 From: Wang Bo Date: Thu, 12 May 2022 14:47:58 +0800 Subject: [PATCH 3/3] format code --- be/src/vec/columns/predicate_column.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/be/src/vec/columns/predicate_column.h b/be/src/vec/columns/predicate_column.h index 9a118831875fe9..eec3f1def7d885 100644 --- a/be/src/vec/columns/predicate_column.h +++ b/be/src/vec/columns/predicate_column.h @@ -238,7 +238,7 @@ class PredicateColumnType final : public COWHelperallocate(total_mem_size); for (size_t i = 0; i < num; i++) { uint32_t len = len_array[i]; @@ -253,8 +253,8 @@ class PredicateColumnType final : public COWHelperclear(); }