[xml] update xmltype using clob in pl bugfix
This commit is contained in:
@ -56,17 +56,16 @@ int ObExprExtractValue::calc_result_typeN(ObExprResType &type,
|
|||||||
ret = OB_ERR_INVALID_TYPE_FOR_OP;
|
ret = OB_ERR_INVALID_TYPE_FOR_OP;
|
||||||
LOG_USER_ERROR(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)));
|
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++) {
|
for (int8_t i = 1; i < param_num && OB_SUCC(ret); i++) {
|
||||||
ObObjType param_type = types[i].get_type();
|
ObObjType param_type = types[i].get_type();
|
||||||
if (param_type == ObNullType) {
|
if (param_type == ObNullType) {
|
||||||
} else if (ob_is_string_type(param_type)) {
|
} else if (ob_is_string_type(param_type)) {
|
||||||
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
|
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
|
||||||
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -55,17 +55,16 @@ int ObExprExtractXml::calc_result_typeN(ObExprResType &type,
|
|||||||
ret = OB_ERR_INVALID_TYPE_FOR_OP;
|
ret = OB_ERR_INVALID_TYPE_FOR_OP;
|
||||||
LOG_USER_ERROR(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)));
|
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++) {
|
for (int8_t i = 1; i < param_num && OB_SUCC(ret); i++) {
|
||||||
ObObjType param_type = types[i].get_type();
|
ObObjType param_type = types[i].get_type();
|
||||||
if (param_type == ObNullType) {
|
if (param_type == ObNullType) {
|
||||||
} else if (ob_is_string_type(param_type)) {
|
} else if (ob_is_string_type(param_type)) {
|
||||||
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
|
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
|
||||||
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -53,6 +53,8 @@ int ObExprUpdateXml::calc_result_typeN(ObExprResType &type,
|
|||||||
ret = OB_ERR_INVALID_TYPE_FOR_OP;
|
ret = OB_ERR_INVALID_TYPE_FOR_OP;
|
||||||
LOG_USER_ERROR(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())));
|
LOG_WARN("inconsistent datatypes", K(ret), K(ob_obj_type_str(types[0].get_type())));
|
||||||
|
}
|
||||||
|
if (OB_FAIL(ret)) {
|
||||||
} else {
|
} else {
|
||||||
bool has_ns_str = (param_num - 1) % 2 == 1;
|
bool has_ns_str = (param_num - 1) % 2 == 1;
|
||||||
int64_t xpath_value_end = has_ns_str ? param_num - 1 : param_num;
|
int64_t xpath_value_end = has_ns_str ? param_num - 1 : param_num;
|
||||||
|
|||||||
Reference in New Issue
Block a user