[refactor](BE) return error status when vslot_ref contains invalid slot_id (#12106)

In current implementation, we detect invalid slot at execute phase. At execute phase, it is hard to get useful information for further debug. This pr moves error detection ahead to prepare phase, so that we can log related tuple descriptors.
This commit is contained in:
minghong
2022-08-29 12:07:08 +08:00
committed by GitHub
parent db07e51cd3
commit 62e3bd338e

View File

@ -51,16 +51,15 @@ Status VSlotRef::prepare(doris::RuntimeState* state, const doris::RowDescriptor&
return Status::InternalError("couldn't resolve slot descriptor {}", _slot_id);
}
_column_id = desc.get_column_id(_slot_id);
if (_column_id < 0) {
LOG(INFO) << "VSlotRef - invalid slot id: " << _slot_id << " desc:" << desc.debug_string();
return Status::InternalError("VSlotRef - invalid slot id {}", _slot_id);
}
_column_name = &slot_desc->col_name();
return Status::OK();
}
Status VSlotRef::execute(VExprContext* context, Block* block, int* result_column_id) {
// comment DCHECK temporarily to make fuzzy test run smoothly
// DCHECK_GE(_column_id, 0);
if (_column_id < 0) {
return Status::InternalError("invalid column id {}", _column_id);
}
*result_column_id = _column_id;
return Status::OK();
}