[xml] update xmltype using clob in pl bugfix

This commit is contained in:
obdev
2023-07-11 13:12:38 +00:00
committed by ob-robot
parent 4dd0e1e962
commit 63af839d05
3 changed files with 20 additions and 20 deletions

View File

@ -56,17 +56,16 @@ int ObExprExtractValue::calc_result_typeN(ObExprResType &type,
ret = OB_ERR_INVALID_TYPE_FOR_OP;
LOG_USER_ERROR(OB_ERR_INVALID_TYPE_FOR_OP, "-", "-");
LOG_WARN("inconsistent datatypes", K(ret), K(ob_obj_type_str(in_type)));
} else {
for (int8_t i = 1; i < param_num && OB_SUCC(ret); i++) {
ObObjType param_type = types[i].get_type();
if (param_type == ObNullType) {
} else if (ob_is_string_type(param_type)) {
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
}
} else {
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
}
for (int8_t i = 1; i < param_num && OB_SUCC(ret); i++) {
ObObjType param_type = types[i].get_type();
if (param_type == ObNullType) {
} else if (ob_is_string_type(param_type)) {
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
}
} else {
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
}
}

View File

@ -55,17 +55,16 @@ int ObExprExtractXml::calc_result_typeN(ObExprResType &type,
ret = OB_ERR_INVALID_TYPE_FOR_OP;
LOG_USER_ERROR(OB_ERR_INVALID_TYPE_FOR_OP, "-", "-");
LOG_WARN("inconsistent datatypes", K(ret), K(ob_obj_type_str(in_type)));
} else {
for (int8_t i = 1; i < param_num && OB_SUCC(ret); i++) {
ObObjType param_type = types[i].get_type();
if (param_type == ObNullType) {
} else if (ob_is_string_type(param_type)) {
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
}
} else {
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
}
for (int8_t i = 1; i < param_num && OB_SUCC(ret); i++) {
ObObjType param_type = types[i].get_type();
if (param_type == ObNullType) {
} else if (ob_is_string_type(param_type)) {
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
}
} else {
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
}
}

View File

@ -53,6 +53,8 @@ int ObExprUpdateXml::calc_result_typeN(ObExprResType &type,
ret = OB_ERR_INVALID_TYPE_FOR_OP;
LOG_USER_ERROR(OB_ERR_INVALID_TYPE_FOR_OP, "-", "-");
LOG_WARN("inconsistent datatypes", K(ret), K(ob_obj_type_str(types[0].get_type())));
}
if (OB_FAIL(ret)) {
} else {
bool has_ns_str = (param_num - 1) % 2 == 1;
int64_t xpath_value_end = has_ns_str ? param_num - 1 : param_num;