[CP] to issue<52838400>:fix core when package var as top store routine argument

This commit is contained in:
hanr881 2023-11-09 14:43:19 +00:00 committed by ob-robot
parent 7879d387e5
commit 218b4fec80

View File

@ -2668,10 +2668,7 @@ int ObPLExecState::final(int ret)
if (func_.get_in_args().has_member(i) && !func_.get_out_args().has_member(i) && is_called_from_sql_) { if (func_.get_in_args().has_member(i) && !func_.get_out_args().has_member(i) && is_called_from_sql_) {
// do nothing // do nothing
} else if (func_.get_in_args().has_member(i) && !func_.get_out_args().has_member(i)) { } else if (func_.get_in_args().has_member(i) && !func_.get_out_args().has_member(i)) {
if (OB_SUCCESS != (tmp_ret = ObUserDefinedType::destruct_obj(get_params().at(i), // do nothing
ctx_.exec_ctx_->get_my_session()))) {
LOG_WARN("failed to destruct pl object", K(i), K(tmp_ret));
}
} else if (OB_SUCCESS != ret) { // OUT参数在失败的情况下在这里释放 } else if (OB_SUCCESS != ret) { // OUT参数在失败的情况下在这里释放
if (OB_SUCCESS != (tmp_ret = ObUserDefinedType::destruct_obj(get_params().at(i), if (OB_SUCCESS != (tmp_ret = ObUserDefinedType::destruct_obj(get_params().at(i),
ctx_.exec_ctx_->get_my_session()))) { ctx_.exec_ctx_->get_my_session()))) {
@ -3014,6 +3011,8 @@ int ObPLExecState::check_routine_param_legal(ParamStore *params)
collection->set_last(OB_INVALID_INDEX); collection->set_last(OB_INVALID_INDEX);
} }
} }
CK (OB_NOT_NULL(ctx_.exec_ctx_->get_pl_ctx()));
OZ (ctx_.exec_ctx_->get_pl_ctx()->add(dst));
OX (param = dst); OX (param = dst);
OX (param.set_param_meta()); OX (param.set_param_meta());
OX (param.set_udt_id(pl_user_type->get_user_type_id())); OX (param.set_udt_id(pl_user_type->get_user_type_id()));