[ 
https://issues.apache.org/jira/browse/HIVE-3381?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13503772#comment-13503772
 ] 

Phabricator commented on HIVE-3381:
-----------------------------------

navis has commented on the revision "HIVE-3381 [jira] Result of outer join is 
not valid".

INLINE COMMENTS
  ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java:352 
'skipVectors' has same meaning with 'inputNulls' in original source, which 
makes output value for the index(alias) to be filled with null. But doing this 
I always confused by it's name that it means value for the index(alias) is 
null, which can be true or false either. I'll change it to 'inputNulls' if you 
prefer.
  When inputNulls for some index is true, it gets metadata for the index and 
gets length for it and fills null for that length. 'offsets' is just 
pre-calculated values of such offsets.
  ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java:363 The 
problem is I'm also still not sure that this patch is right.
  I'll add more comments.
  ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java:396 ok.

REVISION DETAIL
  https://reviews.facebook.net/D5565

To: JIRA, navis
Cc: njain

                
> Result of outer join is not valid
> ---------------------------------
>
>                 Key: HIVE-3381
>                 URL: https://issues.apache.org/jira/browse/HIVE-3381
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Processor
>    Affects Versions: 0.10.0
>            Reporter: Navis
>            Assignee: Navis
>            Priority: Critical
>         Attachments: HIVE-3381.D5565.3.patch
>
>
> Outer joins, especially full outer joins or outer join with filter on 'ON 
> clause' is not showing proper results. For example, query in test join_1to1.q
> {code}
> SELECT * FROM join_1to1_1 a full outer join join_1to1_2 b on a.key1 = b.key1 
> and a.value = 66 and b.value = 66 ORDER BY a.key1 ASC, a.key2 ASC, a.value 
> ASC, b.key1 ASC, b.key2 ASC, b.value ASC;
> {code}
> results
> {code}
> NULL  NULL    NULL    NULL    NULL    66
> NULL  NULL    NULL    NULL    10050   66
> NULL  NULL    NULL    10      10010   66
> NULL  NULL    NULL    30      10030   88
> NULL  NULL    NULL    35      10035   88
> NULL  NULL    NULL    40      10040   88
> NULL  NULL    NULL    40      10040   88
> NULL  NULL    NULL    50      10050   88
> NULL  NULL    NULL    50      10050   88
> NULL  NULL    NULL    50      10050   88
> NULL  NULL    NULL    70      10040   88
> NULL  NULL    NULL    70      10040   88
> NULL  NULL    NULL    70      10040   88
> NULL  NULL    NULL    70      10040   88
> NULL  NULL    66      NULL    NULL    NULL
> NULL  10050   66      NULL    NULL    NULL
> 5     10005   66      5       10005   66
> 15    10015   66      NULL    NULL    NULL
> 20    10020   66      20      10020   66
> 25    10025   88      NULL    NULL    NULL
> 30    10030   66      NULL    NULL    NULL
> 35    10035   88      NULL    NULL    NULL
> 40    10040   66      NULL    NULL    NULL
> 40    10040   66      40      10040   66
> 40    10040   88      NULL    NULL    NULL
> 40    10040   88      NULL    NULL    NULL
> 50    10050   66      NULL    NULL    NULL
> 50    10050   66      50      10050   66
> 50    10050   66      50      10050   66
> 50    10050   88      NULL    NULL    NULL
> 50    10050   88      NULL    NULL    NULL
> 50    10050   88      NULL    NULL    NULL
> 50    10050   88      NULL    NULL    NULL
> 50    10050   88      NULL    NULL    NULL
> 50    10050   88      NULL    NULL    NULL
> 60    10040   66      60      10040   66
> 60    10040   66      60      10040   66
> 60    10040   66      60      10040   66
> 60    10040   66      60      10040   66
> 70    10040   66      NULL    NULL    NULL
> 70    10040   66      NULL    NULL    NULL
> 70    10040   66      NULL    NULL    NULL
> 70    10040   66      NULL    NULL    NULL
> 80    10040   88      NULL    NULL    NULL
> 80    10040   88      NULL    NULL    NULL
> 80    10040   88      NULL    NULL    NULL
> 80    10040   88      NULL    NULL    NULL
> {code} 
> but it seemed not right. This should be 
> {code}
> NULL  NULL    NULL    NULL    NULL    66
> NULL  NULL    NULL    NULL    10050   66
> NULL  NULL    NULL    10      10010   66
> NULL  NULL    NULL    25      10025   66
> NULL  NULL    NULL    30      10030   88
> NULL  NULL    NULL    35      10035   88
> NULL  NULL    NULL    40      10040   88
> NULL  NULL    NULL    50      10050   88
> NULL  NULL    NULL    70      10040   88
> NULL  NULL    NULL    70      10040   88
> NULL  NULL    NULL    80      10040   66
> NULL  NULL    NULL    80      10040   66
> NULL  NULL    66      NULL    NULL    NULL
> NULL  10050   66      NULL    NULL    NULL
> 5     10005   66      5       10005   66
> 15    10015   66      NULL    NULL    NULL
> 20    10020   66      20      10020   66
> 25    10025   88      NULL    NULL    NULL
> 30    10030   66      NULL    NULL    NULL
> 35    10035   88      NULL    NULL    NULL
> 40    10040   66      40      10040   66
> 40    10040   88      NULL    NULL    NULL
> 50    10050   66      50      10050   66
> 50    10050   66      50      10050   66
> 50    10050   88      NULL    NULL    NULL
> 50    10050   88      NULL    NULL    NULL
> 60    10040   66      60      10040   66
> 60    10040   66      60      10040   66
> 60    10040   66      60      10040   66
> 60    10040   66      60      10040   66
> 70    10040   66      NULL    NULL    NULL
> 70    10040   66      NULL    NULL    NULL
> 80    10040   88      NULL    NULL    NULL
> 80    10040   88      NULL    NULL    NULL
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to