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

Krisztian Kasa updated HIVE-27088:
----------------------------------
    Summary: Incorrect result when inner and outer joins with post join filters 
are merged  (was: Using MergeJoin and using filters does not work)

> Incorrect result when inner and outer joins with post join filters are merged
> -----------------------------------------------------------------------------
>
>                 Key: HIVE-27088
>                 URL: https://issues.apache.org/jira/browse/HIVE-27088
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Planning
>            Reporter: Ryu Kobayashi
>            Assignee: Ryu Kobayashi
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 4h
>  Remaining Estimate: 0h
>
> When hive.merge.nway.joins is set to `true` and JOIN is performed with INNER 
> and OUTER and a filter exists, normal results cannot be obtained.
> For example:
> {code:java}
> -- Data preparation
> create temporary table foo (id bigint, code string) stored as orc;
> create temporary table bar (id bigint, code string) stored as orc;
> create temporary table baz (id bigint) stored as orc;
> INSERT INTO foo values
>   (29999000052073, '01'),
>   (29999000052107, '01'),
>   (29999000052111, '01'),
>   (29999000052112, '01'),
>   (29999000052113, '01'),
>   (29999000052114, '01'),
>   (29999000052071, '01A'),
>   (29999000052072, '01A'),
>   (29999000052116, '01A'),
>   (29999000052117, '01A'),
>   (29999000052118, '01A'),
>   (29999000052119, '01A'),
>   (29999000052120, '01A'),
>   (29999000052076, '06'),
>   (29999000052074, '06A'),
>   (29999000052075, '06A');INSERT INTO bar values
>   (29999000052071, '01'),
>   (29999000052072, '01'),
>   (29999000052073, '01'),
>   (29999000052116, '01'),
>   (29999000052117, '01'),
>   (29999000052071, '01A'),
>   (29999000052072, '01A'),
>   (29999000052073, '01A'),
>   (29999000052116, '01AS'),
>   (29999000052117, '01AS'),
>   (29999000052071, '01B'),
>   (29999000052072, '01B'),
>   (29999000052073, '01B'),
>   (29999000052116, '01BS'),
>   (29999000052117, '01BS'),
>   (29999000052071, '01C'),
>   (29999000052072, '01C'),
>   (29999000052073, '01C7'),
>   (29999000052116, '01CS'),
>   (29999000052117, '01CS'),
>   (29999000052071, '01D'),
>   (29999000052072, '01D'),
>   (29999000052073, '01D'),
>   (29999000052116, '01DS'),
>   (29999000052117, '01DS');INSERT INTO baz values
>   (29999000052071),
>   (29999000052072),
>   (29999000052073),
>   (29999000052074),
>   (29999000052075),
>   (29999000052076),
>   (29999000052107),
>   (29999000052111),
>   (29999000052112),
>   (29999000052113),
>   (29999000052114),
>   (29999000052116),
>   (29999000052117),
>   (29999000052118),
>   (29999000052119),
>   (29999000052120);{code}
> Normal works(set hive.merge.nway.joins=false):
> {code:java}
> hive> set hive.merge.nway.joins=false;
> hive> SELECT
>   a.id,
>   b.code,
>   c.id
> FROM bar AS a
> INNER JOIN foo AS b
> ON a.id = b.id
>   AND (a.code = '01AS' OR b.code = '01BS')
> LEFT OUTER JOIN baz AS c
> ON a.id = c.id;
> OK
> 29999000052116  01A     29999000052116
> 29999000052117  01A     29999000052117 {code}
> Abnormal works(set hive.merge.nway.joins=true):
> {code:java}
> hive> set hive.merge.nway.joins=true;
> hive> SELECT
>   a.id,
>   b.code,
>   c.id
> FROM bar AS a
> INNER JOIN foo AS b
> ON a.id = b.id
>   AND (a.code = '01AS' OR b.code = '01BS')
> LEFT OUTER JOIN baz AS c
> ON a.id = c.id;
> OK 29999000052071  01A     NULL
> 29999000052072  01A     NULL
> 29999000052073  01      NULL
> 29999000052116  01A     NULL
> 29999000052117  01A     NULL
> 29999000052071  01A     NULL
> 29999000052072  01A     NULL
> 29999000052073  01      NULL
> 29999000052116  01A     29999000052116
> 29999000052117  01A     29999000052117
> 29999000052071  01A     NULL
> 29999000052072  01A     NULL
> 29999000052073  01      NULL
> 29999000052116  01A     NULL
> 29999000052117  01A     NULL
> 29999000052071  01A     NULL
> 29999000052072  01A     NULL
> 29999000052073  01      NULL
> 29999000052116  01A     NULL
> 29999000052117  01A     NULL
> 29999000052071  01A     NULL
> 29999000052072  01A     NULL
> 29999000052073  01      NULL
> 29999000052116  01A     NULL
> 29999000052117  01A     NULL   {code}
>  
> I think this is also related to the next ticket: 
> https://issues.apache.org/jira/browse/HIVE-21322



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to