fix: [oracle]do not rewrite inlist to values table for char type

This commit is contained in:
PatZhuang 2024-11-07 05:17:27 +00:00 committed by ob-robot
parent f4c3e7513b
commit ddf80672d5

View File

@ -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;