[CP] [to #53709570] fix udt parameter & function out value in ps anonymous block

This commit is contained in:
obdev
2024-02-08 16:41:14 +00:00
committed by ob-robot
parent 7df6c7b6fb
commit f351aa3c6a
3 changed files with 62 additions and 27 deletions

View File

@ -1167,10 +1167,33 @@ do {
ObUDFParamDesc(ObUDFParamDesc::OBJ_ACCESS_OUT, var_id, OB_INVALID_ID, pkg_id)));
} else if (T_QUESTIONMARK == iexpr->get_expr_type()) {
ObConstRawExpr *c_expr = static_cast<ObConstRawExpr*>(iexpr);
pl::ObPLDataType param_type;
CK (OB_NOT_NULL(c_expr));
CK (c_expr->get_value().is_unknown());
OZ (udf_raw_expr->add_param_desc(
ObUDFParamDesc(ObUDFParamDesc::LOCAL_OUT, c_expr->get_value().get_unknown())));
if (OB_FAIL(ret) || !pl::ObPLResolver::is_question_mark_value(iexpr, params.secondary_namespace_)) {
// do nothing ...
} else {
if (iparam->is_schema_routine_param()) {
ObRoutineParam *param = static_cast<ObRoutineParam*>(iparam);
CK (OB_NOT_NULL(param));
CK (OB_NOT_NULL(params.schema_checker_));
CK (OB_NOT_NULL(params.schema_checker_->get_schema_guard()));
CK (OB_NOT_NULL(params.session_info_));
CK (OB_NOT_NULL(params.allocator_));
CK (OB_NOT_NULL(params.sql_proxy_));
OZ (pl::ObPLDataType::transform_from_iparam(param,
*(params.schema_checker_->get_schema_guard()),
*(params.session_info_),
*(params.allocator_),
*(params.sql_proxy_),
param_type));
} else {
param_type = iparam->get_pl_data_type();
}
OZ (pl::ObPLResolver::set_question_mark_type(iexpr, params.secondary_namespace_, &param_type));
}
} else if (T_OP_GET_PACKAGE_VAR == iexpr->get_expr_type()) {
const ObSysFunRawExpr *f_expr = static_cast<const ObSysFunRawExpr *>(iexpr);
uint64_t pkg_id = OB_INVALID_ID;