[to #49178989] fix mysqltest

This commit is contained in:
obdev
2023-04-24 03:41:03 +00:00
committed by ob-robot
parent a3c1c19606
commit ced1abdc78
5 changed files with 26 additions and 14 deletions

View File

@ -48,9 +48,16 @@ int ObExprObjectConstruct::calc_result_typeN(ObExprResType &type,
UNUSED (type_ctx);
CK (param_num == elem_types_.count());
for (int64_t i = 0; OB_SUCC(ret) && i < param_num; i++) {
types[i].set_calc_accuracy(elem_types_.at(i).get_accuracy());
types[i].set_calc_meta(elem_types_.at(i).get_obj_meta());
types[i].set_calc_type(elem_types_.at(i).get_type());
if ((ObExtendType == elem_types_.at(i).get_type()
&& types[i].get_type() != ObExtendType && types[i].get_type() != ObNullType)
||(ObExtendType == types[i].get_type() && elem_types_.at(i).get_type() != ObExtendType)) {
ret = OB_ERR_CALL_WRONG_ARG;
LOG_WARN("PLS-00306: wrong number or types of arguments in call", K(ret));
} else {
types[i].set_calc_accuracy(elem_types_.at(i).get_accuracy());
types[i].set_calc_meta(elem_types_.at(i).get_obj_meta());
types[i].set_calc_type(elem_types_.at(i).get_type());
}
}
OX (type.set_type(ObExtendType));
OX (type.set_udt_id(udt_id_));
@ -67,7 +74,10 @@ int ObExprObjectConstruct::check_types(const ObObj *objs_stack,
for (int64_t i = 0; OB_SUCC(ret) && i < param_num; i++) {
if (!objs_stack[i].is_null()) {
TYPE_CHECK(objs_stack[i], elem_types.at(i).get_type());
if (objs_stack[i].is_pl_extend()) {
if (objs_stack[i].is_pl_extend()
&& objs_stack[i].get_meta().get_extend_type() != pl::PL_OPAQUE_TYPE
&& objs_stack[i].get_meta().get_extend_type() != pl::PL_CURSOR_TYPE
&& objs_stack[i].get_meta().get_extend_type() != pl::PL_REF_CURSOR_TYPE) {
pl::ObPLComposite *composite = reinterpret_cast<pl::ObPLComposite*>(objs_stack[i].get_ext());
CK (OB_NOT_NULL(composite));
if (OB_SUCC(ret) && composite->get_id() != elem_types.at(i).get_udt_id()) {