[xml bugfix] xmlattributes evalname input fix

This commit is contained in:
obdev
2023-06-05 10:42:11 +00:00
committed by ob-robot
parent 9968621711
commit 88a942cb33
2 changed files with 4 additions and 2 deletions

View File

@ -58,6 +58,9 @@ int ObExprXmlAttributes::calc_result_typeN(ObExprResType &type,
ret = OB_ERR_INVALID_XML_DATATYPE;
LOG_USER_ERROR(OB_ERR_INVALID_XML_DATATYPE, "-", ob_obj_type_str(types_stack[i].get_type()));
LOG_WARN("invalid type, expect char", K(ret), K(types_stack[i].get_type()));
} else if (ob_is_nstring(types_stack[i].get_type())) {
types_stack[i].set_calc_type(ObVarcharType);
types_stack[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
} else if (types_stack[i].get_charset_type() != CHARSET_UTF8MB4) {
types_stack[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
}

View File

@ -4623,8 +4623,7 @@ int ObRawExprPrinter::print_xml_attributes_expr(ObSysFunRawExpr *expr)
PRINT_EXPR(expr->get_param_expr(i));
ObObj attr_key_obj = static_cast<ObConstRawExpr*>(expr->get_param_expr(i + 1))->get_value();
ObItemType expr_type = expr->get_param_expr(i + 1)->get_expr_type();
if (expr_type == T_REF_COLUMN ||
expr_type == T_FUN_SYS_CAST ||
if ((T_VARCHAR != expr_type && T_CHAR != expr_type) ||
attr_key_obj.get_type() == ObObjType::ObUnknownType) {
DATA_PRINTF(" as evalname ");
PRINT_EXPR(expr->get_param_expr(i + 1));