[BUGFIX] fix udf expr type deduce for clob

This commit is contained in:
skylhd
2024-01-18 08:42:37 +00:00
committed by ob-robot
parent 6dca77038d
commit f926b7abf7

View File

@ -119,6 +119,14 @@ int ObExprUDF::calc_result_typeN(ObExprResType &type,
if (params_type_.at(i).get_collation_type() == CS_TYPE_ANY) { if (params_type_.at(i).get_collation_type() == CS_TYPE_ANY) {
if (types[i].is_string_or_lob_locator_type()) { if (types[i].is_string_or_lob_locator_type()) {
types[i].set_calc_collation_type(types[i].get_collation_type()); types[i].set_calc_collation_type(types[i].get_collation_type());
if (lib::is_oracle_mode() && types[i].get_calc_meta().is_clob()) {
ObCollationType dest_collation = ob_is_nstring_type(types[i].get_calc_meta().get_type()) ?
type_ctx.get_session()->get_nls_collation_nation()
: type_ctx.get_session()->get_nls_collation();
if (CS_TYPE_INVALID != dest_collation) {
types[i].set_calc_collation_type(dest_collation);
}
}
} else { } else {
types[i].set_calc_collation_type(type_ctx.get_session()->get_nls_collation()); types[i].set_calc_collation_type(type_ctx.get_session()->get_nls_collation());
} }