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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]