From 74590e4836b48fe02b3d3d5007424bc5a950267f Mon Sep 17 00:00:00 2001 From: Mryange <59914473+Mryange@users.noreply.github.com> Date: Fri, 19 Apr 2024 15:43:17 +0800 Subject: [PATCH] [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 7fdda0c5c8..247ec2323d 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 0f6728ef8e..76a334a6a6 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 b470c9237e..efa35b2c2f 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) {