diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index fb85b9ece2..df804782cb 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -501,6 +501,7 @@ minillaplocal.query.files=acid_globallimit.q,\ groupby2.q,\ hybridgrace_hashjoin_1.q,\ hybridgrace_hashjoin_2.q,\ + is_distinct_from.q,\ infer_bucket_sort_bucketed_table.q,\ input16_cc.q,\ insert_dir_distcp.q,\ @@ -512,6 +513,7 @@ minillaplocal.query.files=acid_globallimit.q,\ join_max_hashtable.q,\ join_nulls.q,\ join_nullsafe.q,\ + join_is_not_distinct_from.q,\ leftsemijoin_mr.q,\ limit_join_transpose.q,\ lineage2.q,\ diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/SqlFunctionConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/SqlFunctionConverter.java index 85450c999f..10f5eb3b5b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/SqlFunctionConverter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/SqlFunctionConverter.java @@ -352,6 +352,7 @@ private static String getName(GenericUDF hiveUDF) { registerFunction("struct", SqlStdOperatorTable.ROW, hToken(HiveParser.Identifier, "struct")); registerFunction("isnotnull", SqlStdOperatorTable.IS_NOT_NULL, hToken(HiveParser.TOK_ISNOTNULL, "TOK_ISNOTNULL")); registerFunction("isnull", SqlStdOperatorTable.IS_NULL, hToken(HiveParser.TOK_ISNULL, "TOK_ISNULL")); + registerFunction("is not distinct from", SqlStdOperatorTable.IS_NOT_DISTINCT_FROM, hToken(HiveParser.EQUAL_NS, "<=>")); registerFunction("when", SqlStdOperatorTable.CASE, hToken(HiveParser.Identifier, "when")); registerDuplicateFunction("case", SqlStdOperatorTable.CASE, hToken(HiveParser.Identifier, "when")); // timebased diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g index 8c4ee8a38b..8598fae770 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g @@ -585,14 +585,27 @@ precedenceSimilarExpressionPartNot[CommonTree t] precedenceSimilarExpressionAtom[$t] ; +precedenceDistinctOperator + : + KW_IS KW_DISTINCT KW_FROM + ; + precedenceEqualOperator : - EQUAL | EQUAL_NS | NOTEQUAL + EQUAL | EQUAL_NS | NOTEQUAL | KW_IS KW_NOT KW_DISTINCT KW_FROM -> EQUAL_NS["<=>"] ; precedenceEqualExpression : - precedenceSimilarExpression (precedenceEqualOperator^ precedenceSimilarExpression)* + (precedenceSimilarExpression -> precedenceSimilarExpression) + ( + equal=precedenceEqualOperator p=precedenceSimilarExpression + -> ^($equal {$precedenceEqualExpression.tree} $p) + | + dist=precedenceDistinctOperator p=precedenceSimilarExpression + -> ^(KW_NOT["not"] ^(EQUAL_NS["<=>"] {$precedenceEqualExpression.tree} $p)) + )* + -> {$precedenceEqualExpression.tree} ; precedenceNotOperator diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java index f979c1432e..8f8eab0d9c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java @@ -806,7 +806,7 @@ public static String getFunctionText(ASTNode expr, boolean isFunction) { if (expr.getChildCount() == 1) { funcText = specialUnaryOperatorTextHashMap.get(expr.getType()); } - if (funcText == null) { + if(funcText == null) { funcText = expr.getText(); } } else { diff --git a/ql/src/test/queries/clientpositive/is_distinct_from.q b/ql/src/test/queries/clientpositive/is_distinct_from.q new file mode 100644 index 0000000000..b3d9d65c26 --- /dev/null +++ b/ql/src/test/queries/clientpositive/is_distinct_from.q @@ -0,0 +1,46 @@ +explain select 1 is distinct from 1, + 1 is distinct from 2, + 1 is distinct from null, + null is distinct from null + from part; + +select 1 is distinct from 1, + 1 is distinct from 2, + 1 is distinct from null, + null is distinct from null + from part; + +explain select 1 is not distinct from 1, + 1 is not distinct from 2, + 1 is not distinct from null, + null is not distinct from null + from part; + +select 1 is not distinct from 1, + 1 is not distinct from 2, + 1 is not distinct from null, + null is not distinct from null + from part; + +create table test(x string, y string); +insert into test values ('q', 'q'), ('q', 'w'), (NULL, 'q'), ('q', NULL), (NULL, NULL); +select *, x is not distinct from y, not (x is not distinct from y), (x is distinct from y) = true from test; + +select *, x||y is not distinct from y||x, not (x||y||x is not distinct from y||x||x) from test; + +-- where +explain select * from test where y is distinct from null; +select * from test where y is distinct from null; + +explain select * from test where y is not distinct from null; +select * from test where y is not distinct from null; +drop table test; + +-- where +explain select * from part where p_size is distinct from 2; +select * from part where p_size is distinct from 2; + +explain select * from part where p_size is not distinct from 2; +select * from part where p_size is not distinct from 2; + + diff --git a/ql/src/test/queries/clientpositive/join_is_not_distinct_from.q b/ql/src/test/queries/clientpositive/join_is_not_distinct_from.q new file mode 100644 index 0000000000..ebe832d2f3 --- /dev/null +++ b/ql/src/test/queries/clientpositive/join_is_not_distinct_from.q @@ -0,0 +1,71 @@ +set hive.explain.user=false; +-- SORT_QUERY_RESULTS + +CREATE TABLE myinput1(key int, value int); +LOAD DATA LOCAL INPATH '../../data/files/in8.txt' INTO TABLE myinput1; + +-- merging +explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value; +-- SORT_QUERY_RESULTS +select * from myinput1 a join myinput1 b on a.key is not distinct from b.value; + +explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value join myinput1 c on a.key=c.key; +select * from myinput1 a join myinput1 b on a.key is not distinct from b.value join myinput1 c on a.key=c.key; + +explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value join myinput1 c on a.key is not distinct from c.key; +select * from myinput1 a join myinput1 b on a.key is not distinct from b.value join myinput1 c on a.key is not distinct from c.key; + +explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.value=b.key join myinput1 c on a.key is not distinct from c.key AND a.value=c.value; + +select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.value=b.key join myinput1 c on a.key is not distinct from c.key AND a.value=c.value; + +explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.value is not distinct from b.key join myinput1 c on a.key is not distinct from c.key AND a.value is not distinct from c.value; +select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.value is not distinct from b.key join myinput1 c on a.key is not distinct from c.key AND a.value is not distinct from c.value; + +-- outer joins +SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key is not distinct from b.value; +SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key is not distinct from b.value; +SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key is not distinct from b.value; + +-- map joins +SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key is not distinct from b.value; +SELECT /*+ MAPJOIN(b) */ * FROM myinput1 a JOIN myinput1 b ON a.key is not distinct from b.value; + +CREATE TABLE smb_input(key int, value int); +LOAD DATA LOCAL INPATH '../../data/files/in4.txt' into table smb_input; +LOAD DATA LOCAL INPATH '../../data/files/in5.txt' into table smb_input; + + +; + +-- smbs +CREATE TABLE smb_input1(key int, value int) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS; +CREATE TABLE smb_input2(key int, value int) CLUSTERED BY (value) SORTED BY (value) INTO 2 BUCKETS; + +from smb_input +insert overwrite table smb_input1 select * +insert overwrite table smb_input2 select *; + +SET hive.optimize.bucketmapjoin = true; +SET hive.optimize.bucketmapjoin.sortedmerge = true; +SET hive.input.format = org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key is not distinct from b.key; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key is not distinct from b.key AND a.value is not distinct from b.value; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input1 b ON a.key is not distinct from b.key; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input1 b ON a.key is not distinct from b.key; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input1 b ON a.key is not distinct from b.key; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key is not distinct from b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a JOIN smb_input2 b ON a.key is not distinct from b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input1 a LEFT OUTER JOIN smb_input2 b ON a.key is not distinct from b.value; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input1 a RIGHT OUTER JOIN smb_input2 b ON a.key is not distinct from b.value; + +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value is not distinct from b.value; +SELECT /*+ MAPJOIN(a) */ * FROM smb_input2 a RIGHT OUTER JOIN smb_input2 b ON a.value is not distinct from b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a JOIN smb_input2 b ON a.value is not distinct from b.value; +SELECT /*+ MAPJOIN(b) */ * FROM smb_input2 a LEFT OUTER JOIN smb_input2 b ON a.value is not distinct from b.value; + +--HIVE-3315 join predicate transitive +explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.key is NULL; +select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.key is NULL; diff --git a/ql/src/test/results/clientpositive/llap/is_distinct_from.q.out b/ql/src/test/results/clientpositive/llap/is_distinct_from.q.out new file mode 100644 index 0000000000..d7e1036f83 --- /dev/null +++ b/ql/src/test/results/clientpositive/llap/is_distinct_from.q.out @@ -0,0 +1,335 @@ +PREHOOK: query: explain select 1 is distinct from 1, + 1 is distinct from 2, + 1 is distinct from null, + null is distinct from null + from part +PREHOOK: type: QUERY +POSTHOOK: query: explain select 1 is distinct from 1, + 1 is distinct from 2, + 1 is distinct from null, + null is distinct from null + from part +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: part + Select Operator + expressions: false (type: boolean), true (type: boolean), true (type: boolean), false (type: boolean) + outputColumnNames: _col0, _col1, _col2, _col3 + ListSink + +PREHOOK: query: select 1 is distinct from 1, + 1 is distinct from 2, + 1 is distinct from null, + null is distinct from null + from part +PREHOOK: type: QUERY +PREHOOK: Input: default@part +#### A masked pattern was here #### +POSTHOOK: query: select 1 is distinct from 1, + 1 is distinct from 2, + 1 is distinct from null, + null is distinct from null + from part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@part +#### A masked pattern was here #### +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +false true true false +PREHOOK: query: explain select 1 is not distinct from 1, + 1 is not distinct from 2, + 1 is not distinct from null, + null is not distinct from null + from part +PREHOOK: type: QUERY +POSTHOOK: query: explain select 1 is not distinct from 1, + 1 is not distinct from 2, + 1 is not distinct from null, + null is not distinct from null + from part +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: part + Select Operator + expressions: true (type: boolean), false (type: boolean), false (type: boolean), true (type: boolean) + outputColumnNames: _col0, _col1, _col2, _col3 + ListSink + +PREHOOK: query: select 1 is not distinct from 1, + 1 is not distinct from 2, + 1 is not distinct from null, + null is not distinct from null + from part +PREHOOK: type: QUERY +PREHOOK: Input: default@part +#### A masked pattern was here #### +POSTHOOK: query: select 1 is not distinct from 1, + 1 is not distinct from 2, + 1 is not distinct from null, + null is not distinct from null + from part +POSTHOOK: type: QUERY +POSTHOOK: Input: default@part +#### A masked pattern was here #### +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +true false false true +PREHOOK: query: create table test(x string, y string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@test +POSTHOOK: query: create table test(x string, y string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@test +PREHOOK: query: insert into test values ('q', 'q'), ('q', 'w'), (NULL, 'q'), ('q', NULL), (NULL, NULL) +PREHOOK: type: QUERY +PREHOOK: Output: default@test +POSTHOOK: query: insert into test values ('q', 'q'), ('q', 'w'), (NULL, 'q'), ('q', NULL), (NULL, NULL) +POSTHOOK: type: QUERY +POSTHOOK: Output: default@test +POSTHOOK: Lineage: test.x SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: test.y SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: select *, x is not distinct from y, not (x is not distinct from y), (x is distinct from y) = true from test +PREHOOK: type: QUERY +PREHOOK: Input: default@test +#### A masked pattern was here #### +POSTHOOK: query: select *, x is not distinct from y, not (x is not distinct from y), (x is distinct from y) = true from test +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test +#### A masked pattern was here #### +q q true false false +q w false true true +NULL q false true true +q NULL false true true +NULL NULL true false false +PREHOOK: query: select *, x||y is not distinct from y||x, not (x||y||x is not distinct from y||x||x) from test +PREHOOK: type: QUERY +PREHOOK: Input: default@test +#### A masked pattern was here #### +POSTHOOK: query: select *, x||y is not distinct from y||x, not (x||y||x is not distinct from y||x||x) from test +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test +#### A masked pattern was here #### +q q true false +q w false true +NULL q true false +q NULL true false +NULL NULL true false +PREHOOK: query: explain select * from test where y is distinct from null +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from test where y is distinct from null +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: test + Filter Operator + predicate: (y <> null) (type: boolean) + Select Operator + expressions: x (type: string), y (type: string) + outputColumnNames: _col0, _col1 + ListSink + +PREHOOK: query: select * from test where y is distinct from null +PREHOOK: type: QUERY +PREHOOK: Input: default@test +#### A masked pattern was here #### +POSTHOOK: query: select * from test where y is distinct from null +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test +#### A masked pattern was here #### +q q +q w +NULL q +PREHOOK: query: explain select * from test where y is not distinct from null +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from test where y is not distinct from null +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: test + Filter Operator + predicate: (y = null) (type: boolean) + Select Operator + expressions: x (type: string), y (type: string) + outputColumnNames: _col0, _col1 + ListSink + +PREHOOK: query: select * from test where y is not distinct from null +PREHOOK: type: QUERY +PREHOOK: Input: default@test +#### A masked pattern was here #### +POSTHOOK: query: select * from test where y is not distinct from null +POSTHOOK: type: QUERY +POSTHOOK: Input: default@test +#### A masked pattern was here #### +q NULL +NULL NULL +PREHOOK: query: drop table test +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@test +PREHOOK: Output: default@test +POSTHOOK: query: drop table test +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@test +POSTHOOK: Output: default@test +PREHOOK: query: explain select * from part where p_size is distinct from 2 +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from part where p_size is distinct from 2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: part + Filter Operator + predicate: (p_size <> 2) (type: boolean) + Select Operator + expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 + ListSink + +PREHOOK: query: select * from part where p_size is distinct from 2 +PREHOOK: type: QUERY +PREHOOK: Input: default@part +#### A masked pattern was here #### +POSTHOOK: query: select * from part where p_size is distinct from 2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@part +#### A masked pattern was here #### +85768 almond antique chartreuse lavender yellow Manufacturer#1 Brand#12 LARGE BRUSHED STEEL 34 SM BAG 1753.76 refull +110592 almond antique salmon chartreuse burlywood Manufacturer#1 Brand#15 PROMO BURNISHED NICKEL 6 JUMBO PKG 1602.59 to the furiously +86428 almond aquamarine burnished black steel Manufacturer#1 Brand#12 STANDARD ANODIZED STEEL 28 WRAP BAG 1414.42 arefully +65667 almond aquamarine pink moccasin thistle Manufacturer#1 Brand#12 LARGE BURNISHED STEEL 42 JUMBO CASE 1632.66 e across the expr +105685 almond antique violet chocolate turquoise Manufacturer#2 Brand#22 MEDIUM ANODIZED COPPER 14 MED CAN 1690.68 ly pending requ +191709 almond antique violet turquoise frosted Manufacturer#2 Brand#22 ECONOMY POLISHED STEEL 40 MED BOX 1800.7 haggle +132666 almond aquamarine rose maroon antique Manufacturer#2 Brand#24 SMALL POLISHED NICKEL 25 MED BOX 1698.66 even +195606 almond aquamarine sandy cyan gainsboro Manufacturer#2 Brand#25 STANDARD PLATED TIN 18 SM PKG 1701.6 ic de +90681 almond antique chartreuse khaki white Manufacturer#3 Brand#31 MEDIUM BURNISHED TIN 17 SM CASE 1671.68 are slyly after the sl +17273 almond antique forest lavender goldenrod Manufacturer#3 Brand#35 PROMO ANODIZED TIN 14 JUMBO CASE 1190.27 along the +112398 almond antique metallic orange dim Manufacturer#3 Brand#32 MEDIUM BURNISHED BRASS 19 JUMBO JAR 1410.39 ole car +40982 almond antique misty red olive Manufacturer#3 Brand#32 ECONOMY PLATED COPPER 1 LG PKG 1922.98 c foxes can s +144293 almond antique olive coral navajo Manufacturer#3 Brand#34 STANDARD POLISHED STEEL 45 JUMBO CAN 1337.29 ag furiously about +49671 almond antique gainsboro frosted violet Manufacturer#4 Brand#41 SMALL BRUSHED BRASS 10 SM BOX 1620.67 ccounts run quick +48427 almond antique violet mint lemon Manufacturer#4 Brand#42 PROMO POLISHED STEEL 39 SM CASE 1375.42 hely ironic i +45261 almond aquamarine floral ivory bisque Manufacturer#4 Brand#42 SMALL PLATED STEEL 27 WRAP CASE 1206.26 careful +17927 almond aquamarine yellow dodger mint Manufacturer#4 Brand#41 ECONOMY BRUSHED COPPER 7 SM PKG 1844.92 ites. eve +33357 almond azure aquamarine papaya violet Manufacturer#4 Brand#41 STANDARD ANODIZED TIN 12 WRAP CASE 1290.35 reful +192697 almond antique blue firebrick mint Manufacturer#5 Brand#52 MEDIUM BURNISHED TIN 31 LG DRUM 1789.69 ickly ir +42669 almond antique medium spring khaki Manufacturer#5 Brand#51 STANDARD BURNISHED TIN 6 MED CAN 1611.66 sits haggl +15103 almond aquamarine dodger light gainsboro Manufacturer#5 Brand#53 ECONOMY BURNISHED STEEL 46 LG PACK 1018.1 packages hinder carefu +78486 almond azure blanched chiffon midnight Manufacturer#5 Brand#52 LARGE BRUSHED BRASS 23 MED BAG 1464.48 hely blith +PREHOOK: query: explain select * from part where p_size is not distinct from 2 +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from part where p_size is not distinct from 2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + TableScan + alias: part + Filter Operator + predicate: (p_size = 2) (type: boolean) + Select Operator + expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), 2 (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 + ListSink + +PREHOOK: query: select * from part where p_size is not distinct from 2 +PREHOOK: type: QUERY +PREHOOK: Input: default@part +#### A masked pattern was here #### +POSTHOOK: query: select * from part where p_size is not distinct from 2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@part +#### A masked pattern was here #### +121152 almond antique burnished rose metallic Manufacturer#1 Brand#14 PROMO PLATED TIN 2 JUMBO BOX 1173.15 e pinto beans h +121152 almond antique burnished rose metallic Manufacturer#1 Brand#14 PROMO PLATED TIN 2 JUMBO BOX 1173.15 e pinto beans h +146985 almond aquamarine midnight light salmon Manufacturer#2 Brand#23 MEDIUM BURNISHED COPPER 2 SM CASE 2031.98 s cajole caref +155733 almond antique sky peru orange Manufacturer#5 Brand#53 SMALL PLATED BRASS 2 WRAP DRUM 1788.73 furiously. bra diff --git a/ql/src/test/results/clientpositive/llap/join_is_not_distinct_from.q.out b/ql/src/test/results/clientpositive/llap/join_is_not_distinct_from.q.out new file mode 100644 index 0000000000..eaf09ca056 --- /dev/null +++ b/ql/src/test/results/clientpositive/llap/join_is_not_distinct_from.q.out @@ -0,0 +1,1673 @@ +PREHOOK: query: CREATE TABLE myinput1(key int, value int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@myinput1 +POSTHOOK: query: 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: explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key is not distinct from 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 +#### A masked pattern was here #### + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + 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) + Execution mode: llap + LLAP IO: no inputs + Map 3 + 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) + Execution mode: llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 key (type: int) + 1 value (type: int) + 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.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 +#### A masked pattern was here #### + 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: 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: 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) + Execution mode: llap + LLAP IO: no inputs + Map 3 + 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: 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) + Execution mode: llap + LLAP IO: no inputs + Map 4 + 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: 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) + Execution mode: llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + keys: + 0 key (type: int) + 1 value (type: int) + 2 key (type: int) + 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.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + 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 is not distinct from 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 is not distinct from 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 is not distinct from b.value join myinput1 c on a.key is not distinct from c.key +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value join myinput1 c on a.key is not distinct from 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 +#### A masked pattern was here #### + 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: 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) + Execution mode: llap + LLAP IO: no inputs + Map 3 + 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) + Execution mode: llap + LLAP IO: no inputs + Map 4 + 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) + Execution mode: llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + keys: + 0 key (type: int) + 1 value (type: int) + 2 key (type: int) + 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.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + 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 is not distinct from b.value join myinput1 c on a.key is not distinct from 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 is not distinct from b.value join myinput1 c on a.key is not distinct from 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 is not distinct from b.value AND a.value=b.key join myinput1 c on a.key is not distinct from c.key AND a.value=c.value +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.value=b.key join myinput1 c on a.key is not distinct from 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 +#### A masked pattern was here #### + 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: 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: 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 + Execution mode: llap + LLAP IO: no inputs + Map 3 + 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: 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 + Execution mode: llap + LLAP IO: no inputs + Map 4 + 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: 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 + Execution mode: llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + keys: + 0 key (type: int), value (type: int) + 1 value (type: int), key (type: int) + 2 key (type: int), value (type: int) + nullSafes: [true, false] + 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.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + 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 is not distinct from b.value AND a.value=b.key join myinput1 c on a.key is not distinct from 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 is not distinct from b.value AND a.value=b.key join myinput1 c on a.key is not distinct from 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 is not distinct from b.value AND a.value is not distinct from b.key join myinput1 c on a.key is not distinct from c.key AND a.value is not distinct from c.value +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.value is not distinct from b.key join myinput1 c on a.key is not distinct from c.key AND a.value is not distinct from 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 +#### A masked pattern was here #### + 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: 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 + Execution mode: llap + LLAP IO: no inputs + Map 3 + 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 + Execution mode: llap + LLAP IO: no inputs + Map 4 + 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 + Execution mode: llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + Inner Join 0 to 2 + keys: + 0 key (type: int), value (type: int) + 1 value (type: int), key (type: int) + 2 key (type: int), value (type: int) + 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.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + 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 is not distinct from b.value AND a.value is not distinct from b.key join myinput1 c on a.key is not distinct from c.key AND a.value is not distinct from 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 is not distinct from b.value AND a.value is not distinct from b.key join myinput1 c on a.key is not distinct from c.key AND a.value is not distinct from 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: SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key is not distinct from b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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: SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key is not distinct from b.value +PREHOOK: type: QUERY +PREHOOK: Input: default@myinput1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT /*+ MAPJOIN(a) */ * FROM myinput1 a JOIN myinput1 b ON a.key is not distinct from 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 is not distinct from 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 is not distinct from 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: 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: 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 is not distinct from 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 is not distinct from 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 is not distinct from b.key AND a.value is not distinct from 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 is not distinct from b.key AND a.value is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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 is not distinct from 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: explain select * from myinput1 a join myinput1 b on a.key is not distinct from b.value AND a.key is NULL +PREHOOK: type: QUERY +POSTHOOK: query: explain select * from myinput1 a join myinput1 b on a.key is not distinct from 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 +#### A masked pattern was here #### + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + 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: int) + sort order: + + Map-reduce partition columns: null (type: int) + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + value expressions: value (type: int) + Execution mode: llap + LLAP IO: no inputs + Map 3 + 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: int) + sort order: + + Map-reduce partition columns: null (type: int) + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: int) + Execution mode: llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Merge Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 null (type: int) + 1 null (type: int) + nullSafes: [true] + outputColumnNames: _col1, _col5 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: null (type: int), _col1 (type: int), _col5 (type: int), null (type: int) + 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.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + 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 is not distinct from 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 is not distinct from 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