This is an automated email from the ASF dual-hosted git repository. mrhhsg pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 20cb1e7754d [chore](debug) check the const exprs count in union node (#30679) 20cb1e7754d is described below commit 20cb1e7754dfeea12a51b0a4af837a6a9dbf77c5 Author: Jerry Hu <mrh...@gmail.com> AuthorDate: Thu Feb 1 14:52:43 2024 +0800 [chore](debug) check the const exprs count in union node (#30679) --- be/src/pipeline/exec/union_source_operator.cpp | 11 +++++++++++ be/src/vec/exec/vunion_node.cpp | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/be/src/pipeline/exec/union_source_operator.cpp b/be/src/pipeline/exec/union_source_operator.cpp index 18b17b85a61..208e67895b9 100644 --- a/be/src/pipeline/exec/union_source_operator.cpp +++ b/be/src/pipeline/exec/union_source_operator.cpp @@ -203,12 +203,23 @@ Status UnionSourceOperatorX::get_next_const(RuntimeState* state, vectorized::Blo tmp_block.insert({vectorized::ColumnUInt8::create(1), std::make_shared<vectorized::DataTypeUInt8>(), ""}); int const_expr_lists_size = _const_expr_lists[_const_expr_list_idx].size(); + if (_const_expr_list_idx && const_expr_lists_size != _const_expr_lists[0].size()) { + return Status::InternalError( + "[UnionNode]const expr at {}'s count({}) not matched({} expected)", + _const_expr_list_idx, const_expr_lists_size, _const_expr_lists[0].size()); + } + std::vector<int> result_list(const_expr_lists_size); for (size_t i = 0; i < const_expr_lists_size; ++i) { RETURN_IF_ERROR(_const_expr_lists[_const_expr_list_idx][i]->execute(&tmp_block, &result_list[i])); } tmp_block.erase_not_in(result_list); + if (tmp_block.columns() != mblock.columns()) { + return Status::InternalError( + "[UnionNode]columns count of const expr block not matched ({} vs {})", + tmp_block.columns(), mblock.columns()); + } if (tmp_block.rows() > 0) { RETURN_IF_ERROR(mblock.merge(tmp_block)); tmp_block.clear(); diff --git a/be/src/vec/exec/vunion_node.cpp b/be/src/vec/exec/vunion_node.cpp index 0dc6a408a4a..cc7eabc3bd2 100644 --- a/be/src/vec/exec/vunion_node.cpp +++ b/be/src/vec/exec/vunion_node.cpp @@ -216,12 +216,22 @@ Status VUnionNode::get_next_const(RuntimeState* state, Block* block) { tmp_block.insert({vectorized::ColumnUInt8::create(1), std::make_shared<vectorized::DataTypeUInt8>(), ""}); int const_expr_lists_size = _const_expr_lists[_const_expr_list_idx].size(); + if (_const_expr_list_idx && const_expr_lists_size != _const_expr_lists[0].size()) { + return Status::InternalError( + "[UnionNode]const expr at {}'s count({}) not matched({} expected)", + _const_expr_list_idx, const_expr_lists_size, _const_expr_lists[0].size()); + } std::vector<int> result_list(const_expr_lists_size); for (size_t i = 0; i < const_expr_lists_size; ++i) { RETURN_IF_ERROR(_const_expr_lists[_const_expr_list_idx][i]->execute(&tmp_block, &result_list[i])); } tmp_block.erase_not_in(result_list); + if (tmp_block.columns() != mblock.columns()) { + return Status::InternalError( + "[UnionNode]columns count of const expr block not matched ({} vs {})", + tmp_block.columns(), mblock.columns()); + } if (tmp_block.rows() > 0) { RETURN_IF_ERROR(mblock.merge(tmp_block)); tmp_block.clear(); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org