From 932c624f98c0750ef38d65e15325a762da1689b9 Mon Sep 17 00:00:00 2001 From: eldenmoon <15605149486@163.com> Date: Thu, 28 Mar 2024 23:35:25 +0800 Subject: [PATCH] fix tmp block clear --- be/src/vec/exec/scan/vscanner.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/be/src/vec/exec/scan/vscanner.cpp b/be/src/vec/exec/scan/vscanner.cpp index 39a9059d1d37c8..7354b9e085fd85 100644 --- a/be/src/vec/exec/scan/vscanner.cpp +++ b/be/src/vec/exec/scan/vscanner.cpp @@ -22,6 +22,7 @@ #include "common/config.h" #include "pipeline/exec/scan_operator.h" #include "runtime/descriptors.h" +#include "util/defer_op.h" #include "util/runtime_profile.h" #include "vec/core/column_with_type_and_name.h" #include "vec/exec/scan/vscan_node.h" @@ -152,6 +153,14 @@ Status VScanner::get_block(RuntimeState* state, Block* block, bool* eof) { } Status VScanner::_filter_output_block(Block* block) { + Defer clear_tmp_block([&]() { + auto all_column_names = block->get_names(); + for (auto& name : all_column_names) { + if (name.rfind(BeConsts::BLOCK_TEMP_COLUMN_PREFIX, 0) == 0) { + block->erase(name); + } + } + }); if (block->has(BeConsts::BLOCK_TEMP_COLUMN_SCANNER_FILTERED)) { // scanner filter_block is already done (only by _topn_next currently), just skip it return Status::OK(); @@ -159,12 +168,6 @@ Status VScanner::_filter_output_block(Block* block) { auto old_rows = block->rows(); Status st = VExprContext::filter_block(_conjuncts, block, block->columns()); _counter.num_rows_unselected += old_rows - block->rows(); - auto all_column_names = block->get_names(); - for (auto& name : all_column_names) { - if (name.rfind(BeConsts::BLOCK_TEMP_COLUMN_PREFIX, 0) == 0) { - block->erase(name); - } - } return st; }