[ 
https://issues.apache.org/jira/browse/HIVE-28931?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Work on HIVE-28931 started by Ruben Q L.
----------------------------------------
> 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
>              Labels: pull-request-available
>
> 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)

Reply via email to