diff --git a/src/sql/resolver/expr/ob_raw_expr_util.cpp b/src/sql/resolver/expr/ob_raw_expr_util.cpp index 9fb6b3455a..dc660d3bae 100644 --- a/src/sql/resolver/expr/ob_raw_expr_util.cpp +++ b/src/sql/resolver/expr/ob_raw_expr_util.cpp @@ -6489,7 +6489,7 @@ int ObRawExprUtils::check_composite_cast(ObRawExpr *&expr, ObSchemaChecker &sche } else if (ObExtendType == obj_type && OB_INVALID_ID != udt_id && !(src->get_expr_type() == T_QUESTIONMARK || - (src->get_expr_type() == T_FUN_SYS_CAST + (udt_id == T_OBJ_XML && src->get_expr_type() == T_FUN_SYS_CAST && src->get_param_expr(0)->get_expr_type() == T_QUESTIONMARK))) { if (ObNullType == src->get_result_type().get_type()) { // do nothing