From 76016080af2745943b7a123deefb652cbedaeae0 Mon Sep 17 00:00:00 2001 From: sundy-li <543950155@qq.com> Date: Thu, 23 Mar 2023 00:55:05 +0800 Subject: [PATCH 1/2] chore(query): make flush returns empty builder --- src/query/expression/src/types/string.rs | 5 ++++- .../pipeline/sources/src/input_formats/input_format_text.rs | 5 +---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/query/expression/src/types/string.rs b/src/query/expression/src/types/string.rs index acd9872b205ba..1e0a77490d2ad 100644 --- a/src/query/expression/src/types/string.rs +++ b/src/query/expression/src/types/string.rs @@ -330,8 +330,11 @@ impl StringColumnBuilder { let bytes_per_row = self.data.len() / 64 + 1; let bytes_estimate = bytes_per_row * self.offsets.capacity(); + static MAX_HINT_SIZE: usize = 1000000000; // if we are more than 10% over the capacity, we reserve more - if bytes_estimate as f64 > self.data.capacity() as f64 * 1.10f64 { + if bytes_estimate < MAX_HINT_SIZE + && bytes_estimate as f64 > self.data.capacity() as f64 * 1.10f64 + { self.data.reserve(bytes_estimate - self.data.capacity()); } } diff --git a/src/query/pipeline/sources/src/input_formats/input_format_text.rs b/src/query/pipeline/sources/src/input_formats/input_format_text.rs index 7d4dacb99c0d8..2d8cd52bc7b73 100644 --- a/src/query/pipeline/sources/src/input_formats/input_format_text.rs +++ b/src/query/pipeline/sources/src/input_formats/input_format_text.rs @@ -463,10 +463,7 @@ impl BlockBuilder { .mutable_columns .iter_mut() .map(|col| { - let empty_builder = ColumnBuilder::with_capacity( - &col.data_type(), - self.ctx.block_compact_thresholds.min_rows_per_block, - ); + let empty_builder = ColumnBuilder::with_capacity(&col.data_type(), 0); std::mem::replace(col, empty_builder).build() }) .collect(); From 05fbccdf2e07c36f1e0d93256bd5228a063873be Mon Sep 17 00:00:00 2001 From: sundyli <543950155@qq.com> Date: Wed, 22 Mar 2023 16:36:50 -0700 Subject: [PATCH 2/2] Update src/query/expression/src/types/string.rs Co-authored-by: Andy Lok --- src/query/expression/src/types/string.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/query/expression/src/types/string.rs b/src/query/expression/src/types/string.rs index 1e0a77490d2ad..a5758b2b62ce3 100644 --- a/src/query/expression/src/types/string.rs +++ b/src/query/expression/src/types/string.rs @@ -330,7 +330,7 @@ impl StringColumnBuilder { let bytes_per_row = self.data.len() / 64 + 1; let bytes_estimate = bytes_per_row * self.offsets.capacity(); - static MAX_HINT_SIZE: usize = 1000000000; + const MAX_HINT_SIZE: usize = 1000000000; // if we are more than 10% over the capacity, we reserve more if bytes_estimate < MAX_HINT_SIZE && bytes_estimate as f64 > self.data.capacity() as f64 * 1.10f64