[
https://issues.apache.org/jira/browse/HIVE-14594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15430023#comment-15430023
]
Vineet Garg commented on HIVE-14594:
------------------------------------
Issue is in Calcite's JoinProjectTransposeRule. From what I understood this
rule takes out Project from Join's inputs and creates a new one on top of Join.
This is fine and dandy except if join is outer and Project contains constant
expression e.g. Project is projecting col1, col2, constant<50>. For outer join
taking out this Project and creating one on top of (i.e. after) join changes
the semantic/correctness of join.
> CBO: Calcite Operator To Hive Operator(Calcite Return Path): Fix wrong result
> in join_filters_overlap
> -----------------------------------------------------------------------------------------------------
>
> Key: HIVE-14594
> URL: https://issues.apache.org/jira/browse/HIVE-14594
> Project: Hive
> Issue Type: Sub-task
> Components: CBO
> Reporter: Vineet Garg
> Assignee: Vineet Garg
>
> Setup
> {code} create table a as SELECT 100 as key, a.value as value FROM src LATERAL
> VIEW explode(array(40, 50, 60)) a as value limit 3; {code}
> Query:
> {code} select * from a left outer join a b on (a.key=b.key AND a.value=50 AND
> b.value=50) left outer join a c on (a.key=c.key AND a.value=60 AND
> c.value=60); {code}
> Expected Result:
> {code}
> 100 40 NULL NULL NULL NULL
> 100 50 100 50 NULL NULL
> 100 60 NULL NULL 100 60
> {code}
> Actual Result:
> {code}
> 100 40 NULL 50 NULL 60
> 100 50 100 50 NULL 60
> 100 60 NULL 50 100 60
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)