From d100c7fee37802e9125dba649dfddee1d033b721 Mon Sep 17 00:00:00 2001 From: obdev Date: Fri, 9 Feb 2024 16:39:27 +0000 Subject: [PATCH] [BUGFIX] fix udf expr type deduce for clob --- src/sql/engine/expr/ob_expr_udf.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/sql/engine/expr/ob_expr_udf.cpp b/src/sql/engine/expr/ob_expr_udf.cpp index 7f55c84980..d911869c68 100644 --- a/src/sql/engine/expr/ob_expr_udf.cpp +++ b/src/sql/engine/expr/ob_expr_udf.cpp @@ -119,6 +119,14 @@ int ObExprUDF::calc_result_typeN(ObExprResType &type, if (params_type_.at(i).get_collation_type() == CS_TYPE_ANY) { if (types[i].is_string_or_lob_locator_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 { types[i].set_calc_collation_type(type_ctx.get_session()->get_nls_collation()); }