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

Reply via email to