[
https://issues.apache.org/jira/browse/HIVE-28931?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ruben Q L reassigned HIVE-28931:
--------------------------------
Assignee: Ruben Q L (was: Stamatis Zampetakis)
> Convert IN to SEARCH in RexNodeConverter
> ----------------------------------------
>
> Key: HIVE-28931
> URL: https://issues.apache.org/jira/browse/HIVE-28931
> Project: Hive
> Issue Type: Improvement
> Components: CBO
> Reporter: Stamatis Zampetakis
> Assignee: Ruben Q L
> Priority: Major
>
> RexNodeConverter has some logic
> ([transformInToOrOperands|https://github.com/apache/hive/blob/4554364b94e60f10d3e4e723c8016ed3148b9198/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java#L520],
>
> [rewriteInClauseChildren|https://github.com/apache/hive/blob/4554364b94e60f10d3e4e723c8016ed3148b9198/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java#L570])
> for transforming IN to OR when certain conditions hold. The initial logic
> was introduced in HIVE-19097 to facilitate the simplification/unification of
> expressions (by RexSimplify) since the IN operator is mostly a blackbox for
> CBO so it cannot be easily combined with other equivalent expressions.
> In CALCITE-4173, the SEARCH operator was introduced to represent IN, BETWEEN,
> and various other expressions. The SEARCH operator is used extensively for
> simplifications and there is also some logic in RexSimplify that tries to
> transform OR to SEARCH when that's possible.
> After upgrading to Calcite version 1.33.0 (HIVE-27102), Hive also takes
> advantage of the SEARCH operator. Doing an early conversion from IN to SEARCH
> (instead of OR) in RexNodeConverter seems beneficial for enabling further
> simplifications and it could possibly reduce compilation latency since we
> would avoid the intermediate conversion to OR when that is not necessary. In
> a nutshell instead of doing IN -> OR -> SEARCH we could do IN -> SEARCH and
> we could possibly exploit the RexBuilder.makeIn method.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)