[ https://issues.apache.org/jira/browse/HIVE-3411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13463496#comment-13463496 ]
Hudson commented on HIVE-3411: ------------------------------ Integrated in Hive-trunk-h0.21 #1697 (See [https://builds.apache.org/job/Hive-trunk-h0.21/1697/]) HIVE-3411 Filter predicates on outer join overlapped on single alias is not handled properly (Navis via namit) (Revision 1390010) Result = FAILURE namit : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1390010 Files : * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractMapJoinOperator.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableSinkOperator.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/JoinOperator.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/JoinUtil.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SMBMapJoinOperator.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SkewJoinHandler.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/QBJoinTree.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/HashTableSinkDesc.java * /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/JoinDesc.java * /hive/trunk/ql/src/test/queries/clientpositive/join_filters_overlap.q * /hive/trunk/ql/src/test/results/clientpositive/auto_join29.q.out * /hive/trunk/ql/src/test/results/clientpositive/join_filters_overlap.q.out * /hive/trunk/ql/src/test/results/clientpositive/louter_join_ppr.q.out * /hive/trunk/ql/src/test/results/clientpositive/outer_join_ppr.q.out * /hive/trunk/ql/src/test/results/clientpositive/router_join_ppr.q.out * /hive/trunk/ql/src/test/results/clientpositive/union22.q.out * /hive/trunk/ql/src/test/results/compiler/plan/join1.q.xml * /hive/trunk/ql/src/test/results/compiler/plan/join2.q.xml * /hive/trunk/ql/src/test/results/compiler/plan/join3.q.xml * /hive/trunk/ql/src/test/results/compiler/plan/join4.q.xml * /hive/trunk/ql/src/test/results/compiler/plan/join5.q.xml * /hive/trunk/ql/src/test/results/compiler/plan/join6.q.xml * /hive/trunk/ql/src/test/results/compiler/plan/join7.q.xml * /hive/trunk/ql/src/test/results/compiler/plan/join8.q.xml > Filter predicates on outer join overlapped on single alias is not handled > properly > ---------------------------------------------------------------------------------- > > Key: HIVE-3411 > URL: https://issues.apache.org/jira/browse/HIVE-3411 > Project: Hive > Issue Type: Bug > Components: Query Processor > Affects Versions: 0.10.0 > Environment: ubuntu 10.10 > Reporter: Navis > Assignee: Navis > Priority: Minor > Attachments: HIVE-3411.1.patch.txt, HIVE-3411.2.patch.txt, > HIVE-3411.D5169.5.patch, HIVE-3411.D5169.6.patch > > > Currently, join predicates on outer join are evaluated in join operator (or > HashSink for MapJoin) and the result value is tagged to end of each values(as > a boolean), which is used for joining values. But when predicates are > overlapped on single alias, all the predicates are evaluated with AND > conjunction, which makes invalid result. > For example with table a with values, > {noformat} > 100 40 > 100 50 > 100 60 > {noformat} > Query below has overlapped predicates on alias b, which is making all the > values on b are tagged with true(filtered) > {noformat} > select * from a right outer join a b on (a.key=b.key AND a.value=50 AND > b.value=50) left outer join a c on (b.key=c.key AND b.value=60 AND > c.value=60); > NULL NULL 100 40 NULL NULL > NULL NULL 100 50 NULL NULL > NULL NULL 100 60 NULL NULL > -- Join predicate > Join Operator > condition map: > Right Outer Join0 to 1 > Left Outer Join1 to 2 > condition expressions: > 0 {VALUE._col0} {VALUE._col1} > 1 {VALUE._col0} {VALUE._col1} > 2 {VALUE._col0} {VALUE._col1} > filter predicates: > 0 > 1 {(VALUE._col1 = 50)} {(VALUE._col1 = 60)} > 2 > {noformat} > but this should be > {noformat} > NULL NULL 100 40 NULL NULL > 100 50 100 50 NULL NULL > NULL NULL 100 60 100 60 > {noformat} -- 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