Return-Path: X-Original-To: apmail-hive-commits-archive@www.apache.org Delivered-To: apmail-hive-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 689AB17D33 for ; Sat, 8 Nov 2014 00:22:34 +0000 (UTC) Received: (qmail 36675 invoked by uid 500); 8 Nov 2014 00:22:34 -0000 Delivered-To: apmail-hive-commits-archive@hive.apache.org Received: (qmail 36631 invoked by uid 500); 8 Nov 2014 00:22:34 -0000 Mailing-List: contact commits-help@hive.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hive-dev@hive.apache.org Delivered-To: mailing list commits@hive.apache.org Received: (qmail 36604 invoked by uid 99); 8 Nov 2014 00:22:34 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Nov 2014 00:22:34 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Nov 2014 00:22:30 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 0EEF123888FE; Sat, 8 Nov 2014 00:21:10 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1637491 - in /hive/branches/branch-0.14: itests/src/test/resources/ ql/src/java/org/apache/hadoop/hive/ql/exec/ ql/src/java/org/apache/hadoop/hive/ql/optimizer/ ql/src/test/results/clientpositive/tez/ Date: Sat, 08 Nov 2014 00:21:09 -0000 To: commits@hive.apache.org From: gunther@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20141108002110.0EEF123888FE@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: gunther Date: Sat Nov 8 00:21:09 2014 New Revision: 1637491 URL: http://svn.apache.org/r1637491 Log: HIVE-8781: Nullsafe joins are busted on Tez (Gunther Hagleitner, reviewed by Prasanth J) Added: hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out Modified: hive/branches/branch-0.14/itests/src/test/resources/testconfiguration.properties hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out Modified: hive/branches/branch-0.14/itests/src/test/resources/testconfiguration.properties URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/itests/src/test/resources/testconfiguration.properties?rev=1637491&r1=1637490&r2=1637491&view=diff ============================================================================== --- hive/branches/branch-0.14/itests/src/test/resources/testconfiguration.properties (original) +++ hive/branches/branch-0.14/itests/src/test/resources/testconfiguration.properties Sat Nov 8 00:21:09 2014 @@ -95,6 +95,7 @@ minitez.query.files.shared=alter_merge_2 insert_update_delete.q,\ join0.q,\ join1.q,\ + join_nullsafe.q,\ leftsemijoin.q,\ limit_pushdown.q,\ load_dyn_part1.q,\ Modified: hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java?rev=1637491&r1=1637490&r2=1637491&view=diff ============================================================================== --- hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java (original) +++ hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonMergeJoinOperator.java Sat Nov 8 00:21:09 2014 @@ -438,8 +438,11 @@ public class CommonMergeJoinOperator ext WritableComparable key_1 = (WritableComparable) k1.get(i); WritableComparable key_2 = (WritableComparable) k2.get(i); if (key_1 == null && key_2 == null) { - return nullsafes != null && nullsafes[i] ? 0 : -1; // just return k1 is - // smaller than k2 + if (nullsafes != null && nullsafes[i]) { + continue; + } else { + return -1; + } } else if (key_1 == null) { return -1; } else if (key_2 == null) { Modified: hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java?rev=1637491&r1=1637490&r2=1637491&view=diff ============================================================================== --- hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java (original) +++ hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConvertJoinMapJoin.java Sat Nov 8 00:21:09 2014 @@ -240,6 +240,9 @@ public class ConvertJoinMapJoin implemen new MapJoinDesc(null, null, joinDesc.getExprs(), null, null, joinDesc.getOutputColumnNames(), mapJoinConversionPos, joinDesc.getConds(), joinDesc.getFilters(), joinDesc.getNoOuterJoin(), null); + mapJoinDesc.setNullSafes(joinDesc.getNullSafes()); + mapJoinDesc.setFilterMap(joinDesc.getFilterMap()); + mapJoinDesc.resetOrder(); } @SuppressWarnings("unchecked") Added: hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out?rev=1637491&view=auto ============================================================================== --- hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out (added) +++ hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/join_nullsafe.q.out Sat Nov 8 00:21:09 2014 @@ -0,0 +1,1641 @@ +PREHOOK: query: -- SORT_QUERY_RESULTS + +CREATE TABLE myinput1(key int, value int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@myinput1 +POSTHOOK: query: -- SORT_QUERY_RESULTS + +CREATE TABLE myinput1(key int, value int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@myinput1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in8.txt' INTO TABLE myinput1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@myinput1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in8.txt' INTO TABLE myinput1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@myinput1 +PREHOOK: query: -- merging +explain select * from myinput1 a join myinput1 b on a.key<=>b.value +PREHOOK: type: QUERY +POSTHOOK: query: -- merging +explain select * from myinput1 a join myinput1 b on a.key<=>b.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int) + sort order: + + Map-reduce partition columns: value (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Map 3 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {VALUE._col0} {KEY.reducesinkkey0} + nullSafes: [true] + outputColumnNames: _col0, _col1, _col5, _col6 + Statistics: Num rows: 3 Data size: 28 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 3 Data size: 28 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 3 Data size: 28 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL +PREHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: value is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int) + sort order: + + Map-reduce partition columns: value (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Map 3 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {VALUE._col0} {KEY.reducesinkkey0} + 2 {KEY.reducesinkkey0} {VALUE._col0} + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int), _col10 (type: int), _col11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key=c.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 10 NULL +100 100 100 100 100 100 +PREHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int) + sort order: + + Map-reduce partition columns: value (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Map 3 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int) + sort order: + + Map-reduce partition columns: key (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} {VALUE._col0} + 1 {VALUE._col0} {KEY.reducesinkkey0} + 2 {KEY.reducesinkkey0} {VALUE._col0} + nullSafes: [true] + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int), _col10 (type: int), _col11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value join myinput1 c on a.key<=>c.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 10 NULL +100 100 100 100 100 100 +NULL 10 10 NULL NULL 10 +NULL 10 10 NULL NULL 35 +NULL 10 10 NULL NULL NULL +NULL 10 48 NULL NULL 10 +NULL 10 48 NULL NULL 35 +NULL 10 48 NULL NULL NULL +NULL 10 NULL NULL NULL 10 +NULL 10 NULL NULL NULL 35 +NULL 10 NULL NULL NULL NULL +NULL 35 10 NULL NULL 10 +NULL 35 10 NULL NULL 35 +NULL 35 10 NULL NULL NULL +NULL 35 48 NULL NULL 10 +NULL 35 48 NULL NULL 35 +NULL 35 48 NULL NULL NULL +NULL 35 NULL NULL NULL 10 +NULL 35 NULL NULL NULL 35 +NULL 35 NULL NULL NULL NULL +NULL NULL 10 NULL NULL 10 +NULL NULL 10 NULL NULL 35 +NULL NULL 10 NULL NULL NULL +NULL NULL 48 NULL NULL 10 +NULL NULL 48 NULL NULL 35 +NULL NULL 48 NULL NULL NULL +NULL NULL NULL NULL NULL 10 +NULL NULL NULL NULL NULL 35 +NULL NULL NULL NULL NULL NULL +PREHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int), key (type: int) + sort order: ++ + Map-reduce partition columns: value (type: int), key (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Map 3 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: value is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int), value (type: int) + sort order: ++ + Map-reduce partition columns: key (type: int), value (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: value is not null (type: boolean) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int), value (type: int) + sort order: ++ + Map-reduce partition columns: key (type: int), value (type: int) + Statistics: Num rows: 2 Data size: 17 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} {KEY.reducesinkkey1} + 1 {KEY.reducesinkkey1} {KEY.reducesinkkey0} + 2 {KEY.reducesinkkey0} {KEY.reducesinkkey1} + nullSafes: [true, false] + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int), _col10 (type: int), _col11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 4 Data size: 37 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value=b.key join myinput1 c on a.key<=>c.key AND a.value=c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +100 100 100 100 100 100 +NULL 10 10 NULL NULL 10 +PREHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: value (type: int), key (type: int) + sort order: ++ + Map-reduce partition columns: value (type: int), key (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Map 3 + Map Operator Tree: + TableScan + alias: c + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int), value (type: int) + sort order: ++ + Map-reduce partition columns: key (type: int), value (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Map 4 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: int), value (type: int) + sort order: ++ + Map-reduce partition columns: key (type: int), value (type: int) + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + condition expressions: + 0 {KEY.reducesinkkey0} {KEY.reducesinkkey1} + 1 {KEY.reducesinkkey1} {KEY.reducesinkkey0} + 2 {KEY.reducesinkkey0} {KEY.reducesinkkey1} + nullSafes: [true, true] + outputColumnNames: _col0, _col1, _col5, _col6, _col10, _col11 + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: int), _col5 (type: int), _col6 (type: int), _col10 (type: int), _col11 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6 Data size: 57 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.value<=>b.key join myinput1 c on a.key<=>c.key AND a.value<=>c.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 10 NULL +100 100 100 100 100 100 +NULL 10 10 NULL NULL 10 +NULL NULL NULL NULL NULL NULL +PREHOOK: query: -- outer joins +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: -- outer joins +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +48 NULL NULL NULL +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +48 NULL NULL NULL +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: -- map joins +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: -- map joins +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key<=>b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +10 NULL NULL 10 +100 100 100 100 +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL +PREHOOK: query: CREATE TABLE smb_input(key int, value int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@smb_input +POSTHOOK: query: CREATE TABLE smb_input(key int, value int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@smb_input +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in4.txt' into table smb_input +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@smb_input +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in4.txt' into table smb_input +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@smb_input +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in5.txt' into table smb_input +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@smb_input +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/in5.txt' into table smb_input +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@smb_input +PREHOOK: query: -- smbs +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@smb_input1 +POSTHOOK: query: -- smbs +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@smb_input1 +PREHOOK: query: CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@smb_input2 +POSTHOOK: query: CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@smb_input2 +PREHOOK: query: from smb_input +insert overwrite table smb_input1 select * +insert overwrite table smb_input2 select * +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input +PREHOOK: Output: default@smb_input1 +PREHOOK: Output: default@smb_input2 +POSTHOOK: query: from smb_input +insert overwrite table smb_input1 select * +insert overwrite table smb_input2 select * +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input +POSTHOOK: Output: default@smb_input1 +POSTHOOK: Output: default@smb_input2 +POSTHOOK: Lineage: smb_input1.key SIMPLE [(smb_input)smb_input.FieldSchema(name:key, type:int, comment:null), ] +POSTHOOK: Lineage: smb_input1.value SIMPLE [(smb_input)smb_input.FieldSchema(name:value, type:int, comment:null), ] +POSTHOOK: Lineage: smb_input2.key SIMPLE [(smb_input)smb_input.FieldSchema(name:key, type:int, comment:null), ] +POSTHOOK: Lineage: smb_input2.value SIMPLE [(smb_input)smb_input.FieldSchema(name:value, type:int, comment:null), ] +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 1000 +10 100 10 1000 +10 1000 10 100 +10 1000 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 100 12 NULL +12 NULL 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 10050 NULL 35 +NULL 10050 NULL NULL +NULL 35 NULL 10050 +NULL 35 NULL 35 +NULL 35 NULL NULL +NULL NULL NULL 10050 +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key AND a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key AND a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key <=> b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key <=> b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 1000 +10 100 10 1000 +10 1000 10 100 +10 1000 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 100 12 NULL +12 NULL 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 10050 NULL 35 +NULL 10050 NULL NULL +NULL 35 NULL 10050 +NULL 35 NULL 35 +NULL 35 NULL NULL +NULL NULL NULL 10050 +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key <=> b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 1000 +10 100 10 1000 +10 1000 10 100 +10 1000 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 100 12 NULL +12 NULL 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 10050 NULL 35 +NULL 10050 NULL NULL +NULL 35 NULL 10050 +NULL 35 NULL 35 +NULL 35 NULL NULL +NULL NULL NULL 10050 +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key <=> b.key +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key <=> b.key +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 1000 +10 100 10 1000 +10 1000 10 100 +10 1000 10 100 +10 1000 10 1000 +100 100 100 100 +12 100 12 100 +12 100 12 NULL +12 NULL 12 100 +12 NULL 12 NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 NULL 10050 +NULL 10050 NULL 35 +NULL 10050 NULL NULL +NULL 35 NULL 10050 +NULL 35 NULL 35 +NULL 35 NULL NULL +NULL NULL NULL 10050 +NULL NULL NULL 35 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +35 10035 NULL 35 +NULL 10050 12 NULL +NULL 10050 NULL NULL +NULL 35 12 NULL +NULL 35 NULL NULL +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +35 10035 NULL 35 +NULL 10050 12 NULL +NULL 10050 NULL NULL +NULL 35 12 NULL +NULL 35 NULL NULL +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 NULL NULL +10 100 NULL NULL +10 1000 NULL NULL +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 NULL NULL +12 NULL NULL NULL +15 10015 NULL NULL +20 10020 NULL NULL +25 10025 NULL NULL +30 10030 NULL NULL +35 10035 NULL 35 +40 10040 NULL NULL +40 10040 NULL NULL +5 10005 NULL NULL +50 10050 NULL NULL +50 10050 NULL NULL +50 10050 NULL NULL +60 10040 NULL NULL +60 10040 NULL NULL +70 10040 NULL NULL +70 10040 NULL NULL +80 10040 NULL NULL +80 10040 NULL NULL +NULL 10050 12 NULL +NULL 10050 NULL NULL +NULL 35 12 NULL +NULL 35 NULL NULL +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input1 +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input1 +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +35 10035 NULL 35 +NULL 10050 12 NULL +NULL 10050 NULL NULL +NULL 35 12 NULL +NULL 35 NULL NULL +NULL NULL 10 1000 +NULL NULL 12 NULL +NULL NULL 15 10015 +NULL NULL 20 10020 +NULL NULL 25 10025 +NULL NULL 30 10030 +NULL NULL 35 10035 +NULL NULL 40 10040 +NULL NULL 40 10040 +NULL NULL 5 10005 +NULL NULL 50 10050 +NULL NULL 50 10050 +NULL NULL 50 10050 +NULL NULL 60 10040 +NULL NULL 60 10040 +NULL NULL 70 10040 +NULL NULL 70 10040 +NULL NULL 80 10040 +NULL NULL 80 10040 +NULL NULL NULL 10050 +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 100 100 +10 100 100 100 +10 100 12 100 +10 100 12 100 +10 1000 10 1000 +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 10 100 +12 100 10 100 +12 100 100 100 +12 100 12 100 +12 NULL 12 NULL +12 NULL NULL NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 100 100 +10 100 100 100 +10 100 12 100 +10 100 12 100 +10 1000 10 1000 +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 10 100 +12 100 10 100 +12 100 100 100 +12 100 12 100 +12 NULL 12 NULL +12 NULL NULL NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 100 100 +10 100 100 100 +10 100 12 100 +10 100 12 100 +10 1000 10 1000 +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 10 100 +12 100 10 100 +12 100 100 100 +12 100 12 100 +12 NULL 12 NULL +12 NULL NULL NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value <=> b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value <=> b.value +POSTHOOK: type: QUERY +POSTHOOK: Input: default@smb_input2 +#### A masked pattern was here #### +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 10 100 +10 100 100 100 +10 100 100 100 +10 100 12 100 +10 100 12 100 +10 1000 10 1000 +100 100 10 100 +100 100 10 100 +100 100 100 100 +100 100 12 100 +12 100 10 100 +12 100 10 100 +12 100 100 100 +12 100 12 100 +12 NULL 12 NULL +12 NULL NULL NULL +15 10015 15 10015 +20 10020 20 10020 +25 10025 25 10025 +30 10030 30 10030 +35 10035 35 10035 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 40 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 60 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 70 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +40 10040 80 10040 +5 10005 5 10005 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 50 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +50 10050 NULL 10050 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 40 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 60 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 70 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +60 10040 80 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 40 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 60 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 70 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +70 10040 80 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 40 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 60 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 70 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +80 10040 80 10040 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 50 10050 +NULL 10050 NULL 10050 +NULL 35 NULL 35 +NULL NULL 12 NULL +NULL NULL NULL NULL +PREHOOK: query: --HIVE-3315 join predicate transitive +explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL +PREHOOK: type: QUERY +POSTHOOK: query: --HIVE-3315 join predicate transitive +explain select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: b + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: value is null (type: boolean) + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: null (type: void) + sort order: + + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Map 3 + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 3 Data size: 26 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is null (type: boolean) + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: null (type: void) + sort order: + + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Reducer 2 + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + condition expressions: + 0 {VALUE._col0} + 1 {VALUE._col0} + nullSafes: [true] + outputColumnNames: _col1, _col5 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: null (type: void), _col1 (type: int), _col5 (type: int), null (type: void) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: select * from myinput1 a join myinput1 b on a.key<=>b.value AND a.key is NULL +POSTHOOK: type: QUERY +POSTHOOK: Input: default@myinput1 +#### A masked pattern was here #### +NULL 10 10 NULL +NULL 10 48 NULL +NULL 10 NULL NULL +NULL 35 10 NULL +NULL 35 48 NULL +NULL 35 NULL NULL +NULL NULL 10 NULL +NULL NULL 48 NULL +NULL NULL NULL NULL Modified: hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out?rev=1637491&r1=1637490&r2=1637491&view=diff ============================================================================== --- hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out (original) +++ hive/branches/branch-0.14/ql/src/test/results/clientpositive/tez/tez_union_group_by.q.out Sat Nov 8 00:21:09 2014 @@ -180,6 +180,7 @@ STAGE PLANS: condition expressions: 0 {VALUE._col0} 1 + nullSafes: [false, true] outputColumnNames: _col0 Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE Select Operator