bugfix: 1. xml_expr: generated_column_expr; 2. extract, extract_value, update_xml: xpath or ns arg not literal
This commit is contained in:
@ -65,8 +65,7 @@ int ObExprExtractValue::calc_result_typeN(ObExprResType &type,
|
||||
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
}
|
||||
} else {
|
||||
types[i].set_calc_type(ObVarcharType);
|
||||
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -76,7 +75,8 @@ int ObExprExtractValue::calc_result_typeN(ObExprResType &type,
|
||||
type.set_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
type.set_collation_level(CS_LEVEL_IMPLICIT);
|
||||
// length == OB_MAX_ORACLE_VARCHAR_LENGTH is not supported by generated key, use OB_MAX_VARCHAR_LENGTH_KEY instead
|
||||
type.set_length(OB_MAX_VARCHAR_LENGTH_KEY);
|
||||
// length == OB_MAX_VARCHAR_LENGTH_KEY is not supported by generated column length check , use MAX_ORACLE_COMMENT_LENGTH instead
|
||||
type.set_length(MAX_ORACLE_COMMENT_LENGTH);
|
||||
type.set_length_semantics(LS_BYTE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ namespace sql
|
||||
{
|
||||
|
||||
ObExprExtractXml::ObExprExtractXml(common::ObIAllocator &alloc)
|
||||
: ObFuncExprOperator(alloc, T_FUN_SYS_XML_EXTRACT, N_EXTRACT_XML, MORE_THAN_ONE, NOT_VALID_FOR_GENERATED_COL, NOT_ROW_DIMENSION)
|
||||
: ObFuncExprOperator(alloc, T_FUN_SYS_XML_EXTRACT, N_EXTRACT_XML, MORE_THAN_ONE, VALID_FOR_GENERATED_COL, NOT_ROW_DIMENSION)
|
||||
{
|
||||
}
|
||||
|
||||
@ -64,8 +64,7 @@ int ObExprExtractXml::calc_result_typeN(ObExprResType &type,
|
||||
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
}
|
||||
} else {
|
||||
types[i].set_calc_type(ObVarcharType);
|
||||
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
ret = OB_ERR_INVALID_XPATH_EXPRESSION;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,9 +62,6 @@ int ObExprUpdateXml::calc_result_typeN(ObExprResType &type,
|
||||
if (types[i].get_charset_type() != CHARSET_UTF8MB4) {
|
||||
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
}
|
||||
} else {
|
||||
types[i].set_calc_type(ObVarcharType);
|
||||
types[i].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
}
|
||||
} else {
|
||||
// value expr
|
||||
@ -86,9 +83,6 @@ int ObExprUpdateXml::calc_result_typeN(ObExprResType &type,
|
||||
if (types[param_num - 1].get_charset_type() != CHARSET_UTF8MB4) {
|
||||
types[param_num - 1].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
}
|
||||
} else {
|
||||
types[param_num - 1].set_calc_type(ObVarcharType);
|
||||
types[param_num - 1].set_calc_collation_type(CS_TYPE_UTF8MB4_BIN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user