This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 74590e4836b48fe02b3d3d5007424bc5a950267f
Author: Mryange <[email protected]>
AuthorDate: Fri Apr 19 15:43:17 2024 +0800

    [refine](node) Remove the cse DCHECK from the constructor (#33856)
    
    It's possible that a failure in the fe caused the check to fail, and at 
that moment, it may not be possible to retrieve the corresponding query ID from 
be.out.
---
 be/src/exec/exec_node.cpp               | 16 +++++++++++++---
 be/src/pipeline/pipeline_x/operator.cpp | 13 +++++++++++++
 be/src/pipeline/pipeline_x/operator.h   |  3 ---
 3 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/be/src/exec/exec_node.cpp b/be/src/exec/exec_node.cpp
index 7fdda0c5c87..247ec2323d5 100644
--- a/be/src/exec/exec_node.cpp
+++ b/be/src/exec/exec_node.cpp
@@ -90,10 +90,7 @@ ExecNode::ExecNode(ObjectPool* pool, const TPlanNode& tnode, 
const DescriptorTbl
                 descs, std::vector {tnode.output_tuple_id}, std::vector 
{true});
     }
     if (!tnode.intermediate_output_tuple_id_list.empty()) {
-        DCHECK(tnode.__isset.output_tuple_id) << " no final output tuple id";
         // common subexpression elimination
-        DCHECK_EQ(tnode.intermediate_output_tuple_id_list.size(),
-                  tnode.intermediate_projections_list.size());
         
_intermediate_output_row_descriptor.reserve(tnode.intermediate_output_tuple_id_list.size());
         for (auto output_tuple_id : tnode.intermediate_output_tuple_id_list) {
             _intermediate_output_row_descriptor.push_back(
@@ -108,6 +105,19 @@ ExecNode::~ExecNode() = default;
 
 Status ExecNode::init(const TPlanNode& tnode, RuntimeState* state) {
     init_runtime_profile(get_name());
+    if (!tnode.intermediate_output_tuple_id_list.empty()) {
+        if (!tnode.__isset.output_tuple_id) {
+            return Status::InternalError("no final output tuple id");
+        }
+        if (tnode.intermediate_output_tuple_id_list.size() !=
+            tnode.intermediate_projections_list.size()) {
+            return Status::InternalError(
+                    "intermediate_output_tuple_id_list size:{} not match "
+                    "intermediate_projections_list size:{}",
+                    tnode.intermediate_output_tuple_id_list.size(),
+                    tnode.intermediate_projections_list.size());
+        }
+    }
 
     if (tnode.__isset.vconjunct) {
         vectorized::VExprContextSPtr context;
diff --git a/be/src/pipeline/pipeline_x/operator.cpp 
b/be/src/pipeline/pipeline_x/operator.cpp
index 0f6728ef8e7..76a334a6a6b 100644
--- a/be/src/pipeline/pipeline_x/operator.cpp
+++ b/be/src/pipeline/pipeline_x/operator.cpp
@@ -109,6 +109,19 @@ std::string OperatorXBase::debug_string(RuntimeState* 
state, int indentation_lev
 
 Status OperatorXBase::init(const TPlanNode& tnode, RuntimeState* /*state*/) {
     std::string node_name = print_plan_node_type(tnode.node_type);
+    if (!tnode.intermediate_output_tuple_id_list.empty()) {
+        if (!tnode.__isset.output_tuple_id) {
+            return Status::InternalError("no final output tuple id");
+        }
+        if (tnode.intermediate_output_tuple_id_list.size() !=
+            tnode.intermediate_projections_list.size()) {
+            return Status::InternalError(
+                    "intermediate_output_tuple_id_list size:{} not match "
+                    "intermediate_projections_list size:{}",
+                    tnode.intermediate_output_tuple_id_list.size(),
+                    tnode.intermediate_projections_list.size());
+        }
+    }
     auto substr = node_name.substr(0, node_name.find("_NODE"));
     _op_name = substr + "_OPERATOR";
 
diff --git a/be/src/pipeline/pipeline_x/operator.h 
b/be/src/pipeline/pipeline_x/operator.h
index b470c9237e8..efa35b2c2fe 100644
--- a/be/src/pipeline/pipeline_x/operator.h
+++ b/be/src/pipeline/pipeline_x/operator.h
@@ -164,10 +164,7 @@ public:
                     descs, std::vector {tnode.output_tuple_id}, std::vector 
{true});
         }
         if (!tnode.intermediate_output_tuple_id_list.empty()) {
-            DCHECK(tnode.__isset.output_tuple_id) << " no final output tuple 
id";
             // common subexpression elimination
-            DCHECK_EQ(tnode.intermediate_output_tuple_id_list.size(),
-                      tnode.intermediate_projections_list.size());
             _intermediate_output_row_descriptor.reserve(
                     tnode.intermediate_output_tuple_id_list.size());
             for (auto output_tuple_id : 
tnode.intermediate_output_tuple_id_list) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to