diff --git a/src/pl/ob_pl_resolver.cpp b/src/pl/ob_pl_resolver.cpp index cdeba63538..55a80632de 100644 --- a/src/pl/ob_pl_resolver.cpp +++ b/src/pl/ob_pl_resolver.cpp @@ -10049,10 +10049,6 @@ int ObPLResolver::resolve_qualified_name(ObQualifiedName &q_name, } } } - } else if (q_name.is_pl_var()) { - if (OB_FAIL(resolve_var(q_name, unit_ast, expr))) { - LOG_WARN("failed to resolve var", K(q_name), K(ret)); - } } else { if (OB_FAIL(resolve_var(q_name, unit_ast, expr))) { if (OB_ERR_SP_UNDECLARED_VAR == ret) { @@ -11717,19 +11713,13 @@ int ObPLMockSelfArg::mock() if (expr_params_.at(0)->has_flag(IS_UDT_UDF_SELF_PARAM)) { // already has self argument, do nothing ... } else if (ObObjAccessIdx::IS_UDT_NS == access_idxs_.at(access_idxs_.count() - 1).access_type_ - && expr_params_.at(0)->get_result_type().get_udt_id() + && expr_params_.at(0)->get_result_type().get_expr_udt_id() == access_idxs_.at(access_idxs_.count() - 1).var_index_) { expr_params_.at(0)->add_flag(IS_UDT_UDF_SELF_PARAM); mocked_ = true; mark_only_ = true; - } else if (expr_params_.at(0)->get_result_type().is_xml_sql_type() - && (T_OBJ_XML == access_idxs_.at(access_idxs_.count() - 1).var_index_)) { - //select xmltype.getclobval(xmlparse()) from dual; - expr_params_.at(0)->add_flag(IS_UDT_UDF_SELF_PARAM); - mocked_ = true; - mark_only_ = true; } else if (access_idxs_.at(access_idxs_.count() - 1).elem_type_.is_composite_type() - && expr_params_.at(0)->get_result_type().get_udt_id() + && expr_params_.at(0)->get_result_type().get_expr_udt_id() == access_idxs_.at(access_idxs_.count() - 1).elem_type_.get_user_type_id()) { ObConstRawExpr *null_expr = NULL; OZ (expr_factory_.create_raw_expr(T_NULL, null_expr)); diff --git a/src/sql/engine/expr/ob_expr_res_type.h b/src/sql/engine/expr/ob_expr_res_type.h index cd9567ab35..8a0b05e870 100644 --- a/src/sql/engine/expr/ob_expr_res_type.h +++ b/src/sql/engine/expr/ob_expr_res_type.h @@ -165,6 +165,20 @@ public: { return accuracy_.get_length_semantics(); } + OB_INLINE uint64_t get_expr_udt_id() const + { + uint64_t udt_id = OB_INVALID_ID; + if (is_user_defined_sql_type()) { + if (is_xml_sql_type()) { + udt_id = T_OBJ_XML; + } else { + // NOTICE: process new sql type id in here. + } + } else { + udt_id = get_udt_id(); + } + return udt_id; + } OB_INLINE uint64_t get_udt_id() const { return accuracy_.get_accuracy();