From b1e24014e8110e8d77cfd369f39ae063b2e70e04 Mon Sep 17 00:00:00 2001 From: lik40 Date: Tue, 27 May 2025 11:13:28 +0800 Subject: [PATCH] [fix](iceberg) fix the iceberg eq-delete filter resize-fill bug. --- be/src/vec/common/pod_array.h | 4 ++++ be/src/vec/exec/format/table/equality_delete.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/be/src/vec/common/pod_array.h b/be/src/vec/common/pod_array.h index 850dbf03800e02..3a92c6acd3c5b4 100644 --- a/be/src/vec/common/pod_array.h +++ b/be/src/vec/common/pod_array.h @@ -460,6 +460,8 @@ class PODArray : public PODArrayBasec_end = this->c_start + new_size; } + /// reset the array capacity + /// fill the new additional elements using the value void resize_fill(size_t n, const T& value) { size_t old_size = this->size(); const auto new_size = this->byte_size(n); @@ -689,6 +691,8 @@ class PODArray : public PODArrayBaseresize(n); std::fill(begin(), end(), x); diff --git a/be/src/vec/exec/format/table/equality_delete.cpp b/be/src/vec/exec/format/table/equality_delete.cpp index 28d0e2519dd60b..98924d045a163a 100644 --- a/be/src/vec/exec/format/table/equality_delete.cpp +++ b/be/src/vec/exec/format/table/equality_delete.cpp @@ -60,7 +60,8 @@ Status SimpleEqualityDelete::filter_data_block(Block* data_block) { if (_filter == nullptr) { _filter = std::make_unique(rows, 0); } else { - _filter->resize_fill(rows, 0); + // reset the array capacity and fill all elements using the 0 + _filter->assign(rows, UInt8(0)); } if (column_and_type->column->is_nullable()) { @@ -132,7 +133,8 @@ Status MultiEqualityDelete::filter_data_block(Block* data_block) { if (_filter == nullptr) { _filter = std::make_unique(rows, 1); } else { - _filter->resize_fill(rows, 1); + //reset the array capacity and fill all elements using the 0 + _filter->assign(rows, UInt8(1)); } auto* filter_data = _filter->data(); for (size_t i = 0; i < rows; ++i) {