From ddf80672d5d04a8c4c38451454b33cfeec8a9e5e Mon Sep 17 00:00:00 2001 From: PatZhuang Date: Thu, 7 Nov 2024 05:17:27 +0000 Subject: [PATCH] fix: [oracle]do not rewrite inlist to values table for char type --- src/sql/resolver/dml/ob_inlist_resolver.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/sql/resolver/dml/ob_inlist_resolver.cpp b/src/sql/resolver/dml/ob_inlist_resolver.cpp index b841a9c1f..38c4596b2 100644 --- a/src/sql/resolver/dml/ob_inlist_resolver.cpp +++ b/src/sql/resolver/dml/ob_inlist_resolver.cpp @@ -252,6 +252,12 @@ int ObInListResolver::check_inlist_rewrite_enable(const ParseNode &in_list, param_type, is_enable))) { LOG_WARN("failed to got const node types", K(ret)); } else if (is_enable) { + if (lib::is_oracle_mode() && ObCharType == param_type.obj_type_) { + // in oracle mode, inlist to values table rewrite may cast char types to varchar2 + // but comparison behaviors for chars and varchar2s are different for trailing spaces + // which will lead to unexpect comparison result + is_enable = false; + } else if (ob_is_enum_or_set_type(param_type.obj_type_) || is_lob_locator(param_type.obj_type_)) { is_enable = false;