[opt](pipeline) Return InternalError to FE instead of doing a useless DCHECK in ExecNode #27035
Effect: Client will see error message like below when BE meeting plan logical error. RROR 1105 (HY000): errCode = 2, detailMessage = ([xxx]())[CANCELLED]Logical error during processing VNewOlapScanNode(dr_case_tag), output of projections 2 mismatches with exec node output 3
This commit is contained in:
@ -537,7 +537,14 @@ Status ExecNode::do_projections(vectorized::Block* origin_block, vectorized::Blo
|
||||
|
||||
if (rows != 0) {
|
||||
auto& mutable_columns = mutable_block.mutable_columns();
|
||||
DCHECK(mutable_columns.size() == _projections.size());
|
||||
|
||||
if (mutable_columns.size() != _projections.size()) {
|
||||
return Status::InternalError(
|
||||
"Logical error during processing {}, output of projections {} mismatches with "
|
||||
"exec node output {}",
|
||||
this->get_name(), _projections.size(), mutable_columns.size());
|
||||
}
|
||||
|
||||
for (int i = 0; i < mutable_columns.size(); ++i) {
|
||||
auto result_column_id = -1;
|
||||
RETURN_IF_ERROR(_projections[i]->execute(origin_block, &result_column_id));
|
||||
|
||||
Reference in New Issue
Block a user