[xml bugfix] xmlattributes evalname input fix
This commit is contained in:
		@ -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);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -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));
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user