diff --git a/src/pl/ob_pl_resolver.cpp b/src/pl/ob_pl_resolver.cpp index 3709678f32..eff202dcbb 100644 --- a/src/pl/ob_pl_resolver.cpp +++ b/src/pl/ob_pl_resolver.cpp @@ -3695,7 +3695,8 @@ int ObPLResolver::check_raw_expr_in_forall(ObRawExpr* expr, int64_t idx, bool &n LOG_WARN("var index is invalid", K(var_idx), K(obj_access_expr->get_var_indexs()), K(ret)); } else if (obj_access_expr->get_var_indexs().at(var_idx) == idx) { need_modify = true; - if (obj_access_expr->get_var_indexs().count() != 2) { + if (obj_access_expr->get_var_indexs().count() != 2 + || !obj_access_expr->get_access_idxs().at(1).elem_type_.is_obj_type()) { can_array_binding = false; } else if (2 == obj_access_expr->get_access_idxs().count()) { // do nothing ... diff --git a/src/sql/resolver/expr/ob_raw_expr_resolver_impl.cpp b/src/sql/resolver/expr/ob_raw_expr_resolver_impl.cpp index 0c79e52516..fb98e416bd 100644 --- a/src/sql/resolver/expr/ob_raw_expr_resolver_impl.cpp +++ b/src/sql/resolver/expr/ob_raw_expr_resolver_impl.cpp @@ -2467,28 +2467,10 @@ int ObRawExprResolverImpl::process_datatype_or_questionmark(const ParseNode &nod const ObObjParam ¶m = ctx_.param_list_->at(val.get_unknown()); c_expr->set_is_literal_bool(param.is_boolean()); if (param.is_ext()) { -/* CK (OB_NOT_NULL(ctx_.session_info_), OB_NOT_NULL(ctx_.schema_checker_)); - if (OB_SUCC(ret)) { - const share::schema::ObUDTTypeInfo *udt_info = NULL; - OZ (ctx_.schema_checker_->get_udt_info(param.get_udt_id(), udt_info), K(param.get_udt_id())); - CK (OB_NOT_NULL(udt_info)); - if (OB_SUCC(ret)) { - if (udt_info->is_collection()) { -*/ - //TODO: @ryan.ly 这里缺省认为一定是collection - if (OB_SUCC(ret)) { - c_expr->set_meta_type(param.get_meta()); - c_expr->set_expr_obj_meta(param.get_param_meta()); - c_expr->set_udt_id(param.get_udt_id()); - c_expr->set_param(param); - } -/* } else { - ret = OB_NOT_SUPPORTED; - LOG_WARN("Record not support in sql yet", K(*udt_info), K(ret)); - } - } - } -*/ + c_expr->set_meta_type(param.get_meta()); + c_expr->set_expr_obj_meta(param.get_param_meta()); + c_expr->set_udt_id(param.get_udt_id()); + c_expr->set_param(param); } else { c_expr->set_meta_type(ObSQLUtils::is_oracle_empty_string(param) ? param.get_param_meta() : param.get_meta());