http://git-wip-us.apache.org/repos/asf/hive/blob/b5ba8273/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out 
b/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out
new file mode 100644
index 0000000..7db3b13
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/explainanalyze_2.q.out
@@ -0,0 +1,2093 @@
+PREHOOK: query: SELECT x.key, z.value, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+union
+SELECT x.key, z.value, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Input: default@src1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT x.key, z.value, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+union
+SELECT x.key, z.value, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@src1
+#### A masked pattern was here ####
+PREHOOK: query: explain analyze
+SELECT x.key, z.value, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+union
+SELECT x.key, z.value, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze
+SELECT x.key, z.value, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+union
+SELECT x.key, z.value, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Map 1 <- Union 2 (CONTAINS)
+Map 13 <- Union 14 (CONTAINS)
+Map 16 <- Union 14 (CONTAINS)
+Map 8 <- Union 2 (CONTAINS)
+Reducer 10 <- Map 9 (SIMPLE_EDGE), Reducer 15 (SIMPLE_EDGE)
+Reducer 11 <- Map 17 (SIMPLE_EDGE), Reducer 10 (SIMPLE_EDGE), Union 6 
(CONTAINS)
+Reducer 15 <- Union 14 (SIMPLE_EDGE)
+Reducer 3 <- Union 2 (SIMPLE_EDGE)
+Reducer 4 <- Map 9 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
+Reducer 5 <- Map 12 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE), Union 6 (CONTAINS)
+Reducer 7 <- Union 6 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 7 llap
+      File Output Operator [FS_56]
+        Group By Operator [GBY_54] (rows=32/15 width=177)
+          Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+        <-Union 6 [SIMPLE_EDGE]
+          <-Reducer 11 [CONTAINS] llap
+            Reduce Output Operator [RS_53]
+              PartitionCols:_col0, _col1
+              Select Operator [SEL_49] (rows=67/61 width=177)
+                Output:["_col0","_col1"]
+                Merge Join Operator [MERGEJOIN_82] (rows=67/61 width=177)
+                  Conds:RS_46._col2=RS_47._col0(Inner),Output:["_col1","_col2"]
+                <-Map 17 [SIMPLE_EDGE] llap
+                  SHUFFLE [RS_47]
+                    PartitionCols:_col0
+                    Select Operator [SEL_42] (rows=500/500 width=87)
+                      Output:["_col0"]
+                      Filter Operator [FIL_78] (rows=500/500 width=87)
+                        predicate:key is not null
+                        TableScan [TS_40] (rows=500/500 width=87)
+                          
default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+                <-Reducer 10 [SIMPLE_EDGE] llap
+                  SHUFFLE [RS_46]
+                    PartitionCols:_col2
+                    Merge Join Operator [MERGEJOIN_81] (rows=42/52 width=177)
+                      
Conds:RS_43._col1=RS_44._col1(Inner),Output:["_col1","_col2"]
+                    <-Map 9 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_44]
+                        PartitionCols:_col1
+                        Select Operator [SEL_14] (rows=25/25 width=175)
+                          Output:["_col0","_col1"]
+                          Filter Operator [FIL_73] (rows=25/25 width=175)
+                            predicate:(key is not null and value is not null)
+                            TableScan [TS_12] (rows=25/25 width=175)
+                              
default@src1,x,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                    <-Reducer 15 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_43]
+                        PartitionCols:_col1
+                        Select Operator [SEL_36] (rows=525/319 width=178)
+                          Output:["_col1"]
+                          Group By Operator [GBY_35] (rows=525/319 width=178)
+                            Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                          <-Union 14 [SIMPLE_EDGE]
+                            <-Map 13 [CONTAINS] llap
+                              Reduce Output Operator [RS_34]
+                                PartitionCols:_col1, _col0
+                                Select Operator [SEL_27] (rows=25/25 width=175)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_75] (rows=25/25 
width=175)
+                                    predicate:value is not null
+                                    TableScan [TS_25] (rows=25/25 width=175)
+                                      Output:["key","value"]
+                            <-Map 16 [CONTAINS] llap
+                              Reduce Output Operator [RS_34]
+                                PartitionCols:_col1, _col0
+                                Select Operator [SEL_30] (rows=500/500 
width=178)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_76] (rows=500/500 
width=178)
+                                    predicate:value is not null
+                                    TableScan [TS_28] (rows=500/500 width=178)
+                                      Output:["key","value"]
+          <-Reducer 5 [CONTAINS] llap
+            Reduce Output Operator [RS_53]
+              PartitionCols:_col0, _col1
+              Select Operator [SEL_24] (rows=67/61 width=177)
+                Output:["_col0","_col1"]
+                Merge Join Operator [MERGEJOIN_80] (rows=67/61 width=177)
+                  Conds:RS_21._col2=RS_22._col0(Inner),Output:["_col1","_col2"]
+                <-Map 12 [SIMPLE_EDGE] llap
+                  SHUFFLE [RS_22]
+                    PartitionCols:_col0
+                    Select Operator [SEL_17] (rows=500/500 width=87)
+                      Output:["_col0"]
+                      Filter Operator [FIL_74] (rows=500/500 width=87)
+                        predicate:key is not null
+                        TableScan [TS_15] (rows=500/500 width=87)
+                          
default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key"]
+                <-Reducer 4 [SIMPLE_EDGE] llap
+                  SHUFFLE [RS_21]
+                    PartitionCols:_col2
+                    Merge Join Operator [MERGEJOIN_79] (rows=42/52 width=177)
+                      
Conds:RS_18._col1=RS_19._col1(Inner),Output:["_col1","_col2"]
+                    <-Map 9 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_19]
+                        PartitionCols:_col1
+                         Please refer to the previous Select Operator [SEL_14]
+                    <-Reducer 3 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_18]
+                        PartitionCols:_col1
+                        Select Operator [SEL_11] (rows=525/319 width=178)
+                          Output:["_col1"]
+                          Group By Operator [GBY_10] (rows=525/319 width=178)
+                            Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                          <-Union 2 [SIMPLE_EDGE]
+                            <-Map 1 [CONTAINS] llap
+                              Reduce Output Operator [RS_9]
+                                PartitionCols:_col1, _col0
+                                Select Operator [SEL_2] (rows=25/25 width=175)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_71] (rows=25/25 
width=175)
+                                    predicate:value is not null
+                                    TableScan [TS_0] (rows=25/25 width=175)
+                                      Output:["key","value"]
+                            <-Map 8 [CONTAINS] llap
+                              Reduce Output Operator [RS_9]
+                                PartitionCols:_col1, _col0
+                                Select Operator [SEL_5] (rows=500/500 
width=178)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_72] (rows=500/500 
width=178)
+                                    predicate:value is not null
+                                    TableScan [TS_3] (rows=500/500 width=178)
+                                      Output:["key","value"]
+
+PREHOOK: query: SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+union
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src)z ON (x.value = z.value)
+union
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src union select key, value from src)z ON (x.value = 
z.value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Input: default@src1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+union
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src)z ON (x.value = z.value)
+union
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src union select key, value from src)z ON (x.value = 
z.value)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@src1
+#### A masked pattern was here ####
+PREHOOK: query: explain analyze
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+union
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src)z ON (x.value = z.value)
+union
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src union select key, value from src)z ON (x.value = 
z.value)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value)
+union
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src)z ON (x.value = z.value)
+union
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src union select key, value from src)z ON (x.value = 
z.value)
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Map 1 <- Union 2 (CONTAINS)
+Map 10 <- Union 2 (CONTAINS)
+Map 17 <- Union 18 (CONTAINS)
+Map 22 <- Union 18 (CONTAINS)
+Map 23 <- Union 20 (CONTAINS)
+Map 25 <- Union 26 (CONTAINS)
+Map 32 <- Union 26 (CONTAINS)
+Map 33 <- Union 28 (CONTAINS)
+Map 34 <- Union 30 (CONTAINS)
+Reducer 12 <- Map 11 (SIMPLE_EDGE), Reducer 21 (SIMPLE_EDGE)
+Reducer 13 <- Map 24 (SIMPLE_EDGE), Reducer 12 (SIMPLE_EDGE), Union 6 
(CONTAINS)
+Reducer 14 <- Map 11 (SIMPLE_EDGE), Reducer 31 (SIMPLE_EDGE)
+Reducer 15 <- Map 16 (SIMPLE_EDGE), Reducer 14 (SIMPLE_EDGE), Union 8 
(CONTAINS)
+Reducer 19 <- Union 18 (SIMPLE_EDGE), Union 20 (CONTAINS)
+Reducer 21 <- Union 20 (SIMPLE_EDGE)
+Reducer 27 <- Union 26 (SIMPLE_EDGE), Union 28 (CONTAINS)
+Reducer 29 <- Union 28 (SIMPLE_EDGE), Union 30 (CONTAINS)
+Reducer 3 <- Union 2 (SIMPLE_EDGE)
+Reducer 31 <- Union 30 (SIMPLE_EDGE)
+Reducer 4 <- Map 11 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
+Reducer 5 <- Map 16 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE), Union 6 (CONTAINS)
+Reducer 7 <- Union 6 (SIMPLE_EDGE), Union 8 (CONTAINS)
+Reducer 9 <- Union 8 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 9 llap
+      File Output Operator [FS_114]
+        Group By Operator [GBY_112] (rows=398/15 width=177)
+          Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+        <-Union 8 [SIMPLE_EDGE]
+          <-Reducer 15 [CONTAINS] llap
+            Reduce Output Operator [RS_111]
+              PartitionCols:_col0, _col1
+              Select Operator [SEL_107] (rows=199/61 width=177)
+                Output:["_col0","_col1"]
+                Merge Join Operator [MERGEJOIN_162] (rows=199/61 width=177)
+                  
Conds:RS_104._col2=RS_105._col0(Inner),Output:["_col2","_col5"]
+                <-Map 16 [SIMPLE_EDGE] llap
+                  SHUFFLE [RS_105]
+                    PartitionCols:_col0
+                    Select Operator [SEL_17] (rows=500/500 width=178)
+                      Output:["_col0","_col1"]
+                      Filter Operator [FIL_145] (rows=500/500 width=178)
+                        predicate:key is not null
+                        TableScan [TS_15] (rows=500/500 width=178)
+                          
default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                <-Reducer 14 [SIMPLE_EDGE] llap
+                  SHUFFLE [RS_104]
+                    PartitionCols:_col2
+                    Merge Join Operator [MERGEJOIN_161] (rows=123/52 width=86)
+                      Conds:RS_101._col1=RS_102._col1(Inner),Output:["_col2"]
+                    <-Map 11 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_102]
+                        PartitionCols:_col1
+                        Select Operator [SEL_14] (rows=25/25 width=175)
+                          Output:["_col0","_col1"]
+                          Filter Operator [FIL_144] (rows=25/25 width=175)
+                            predicate:(key is not null and value is not null)
+                            TableScan [TS_12] (rows=25/25 width=175)
+                              
default@src1,x,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                    <-Reducer 31 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_101]
+                        PartitionCols:_col1
+                        Select Operator [SEL_94] (rows=1525/319 width=178)
+                          Output:["_col1"]
+                          Group By Operator [GBY_93] (rows=1525/319 width=178)
+                            Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                          <-Union 30 [SIMPLE_EDGE]
+                            <-Map 34 [CONTAINS] llap
+                              Reduce Output Operator [RS_92]
+                                PartitionCols:_col1, _col0
+                                Select Operator [SEL_88] (rows=500/500 
width=178)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_154] (rows=500/500 
width=178)
+                                    predicate:value is not null
+                                    TableScan [TS_86] (rows=500/500 width=178)
+                                      Output:["key","value"]
+                            <-Reducer 29 [CONTAINS] llap
+                              Reduce Output Operator [RS_92]
+                                PartitionCols:_col1, _col0
+                                Select Operator [SEL_85] (rows=1025/319 
width=178)
+                                  Output:["_col0","_col1"]
+                                  Group By Operator [GBY_84] (rows=1025/319 
width=178)
+                                    Output:["_col0","_col1"],keys:KEY._col0, 
KEY._col1
+                                  <-Union 28 [SIMPLE_EDGE]
+                                    <-Map 33 [CONTAINS] llap
+                                      Reduce Output Operator [RS_83]
+                                        PartitionCols:_col1, _col0
+                                        Select Operator [SEL_79] (rows=500/500 
width=178)
+                                          Output:["_col0","_col1"]
+                                          Filter Operator [FIL_153] 
(rows=500/500 width=178)
+                                            predicate:value is not null
+                                            TableScan [TS_77] (rows=500/500 
width=178)
+                                              Output:["key","value"]
+                                    <-Reducer 27 [CONTAINS] llap
+                                      Reduce Output Operator [RS_83]
+                                        PartitionCols:_col1, _col0
+                                        Select Operator [SEL_76] (rows=525/319 
width=178)
+                                          Output:["_col0","_col1"]
+                                          Group By Operator [GBY_75] 
(rows=525/319 width=178)
+                                            
Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                          <-Union 26 [SIMPLE_EDGE]
+                                            <-Map 25 [CONTAINS] llap
+                                              Reduce Output Operator [RS_74]
+                                                PartitionCols:_col1, _col0
+                                                Select Operator [SEL_67] 
(rows=25/25 width=175)
+                                                  Output:["_col0","_col1"]
+                                                  Filter Operator [FIL_151] 
(rows=25/25 width=175)
+                                                    predicate:value is not null
+                                                    TableScan [TS_65] 
(rows=25/25 width=175)
+                                                      Output:["key","value"]
+                                            <-Map 32 [CONTAINS] llap
+                                              Reduce Output Operator [RS_74]
+                                                PartitionCols:_col1, _col0
+                                                Select Operator [SEL_70] 
(rows=500/500 width=178)
+                                                  Output:["_col0","_col1"]
+                                                  Filter Operator [FIL_152] 
(rows=500/500 width=178)
+                                                    predicate:value is not null
+                                                    TableScan [TS_68] 
(rows=500/500 width=178)
+                                                      Output:["key","value"]
+          <-Reducer 7 [CONTAINS] llap
+            Reduce Output Operator [RS_111]
+              PartitionCols:_col0, _col1
+              Group By Operator [GBY_63] (rows=199/15 width=177)
+                Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+              <-Union 6 [SIMPLE_EDGE]
+                <-Reducer 13 [CONTAINS] llap
+                  Reduce Output Operator [RS_62]
+                    PartitionCols:_col0, _col1
+                    Select Operator [SEL_58] (rows=132/61 width=177)
+                      Output:["_col0","_col1"]
+                      Merge Join Operator [MERGEJOIN_160] (rows=132/61 
width=177)
+                        
Conds:RS_55._col2=RS_56._col0(Inner),Output:["_col2","_col5"]
+                      <-Map 24 [SIMPLE_EDGE] llap
+                        SHUFFLE [RS_56]
+                          PartitionCols:_col0
+                          Select Operator [SEL_51] (rows=500/500 width=178)
+                            Output:["_col0","_col1"]
+                            Filter Operator [FIL_150] (rows=500/500 width=178)
+                              predicate:key is not null
+                              TableScan [TS_49] (rows=500/500 width=178)
+                                
default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                      <-Reducer 12 [SIMPLE_EDGE] llap
+                        SHUFFLE [RS_55]
+                          PartitionCols:_col2
+                          Merge Join Operator [MERGEJOIN_159] (rows=82/52 
width=86)
+                            
Conds:RS_52._col1=RS_53._col1(Inner),Output:["_col2"]
+                          <-Map 11 [SIMPLE_EDGE] llap
+                            SHUFFLE [RS_53]
+                              PartitionCols:_col1
+                               Please refer to the previous Select Operator 
[SEL_14]
+                          <-Reducer 21 [SIMPLE_EDGE] llap
+                            SHUFFLE [RS_52]
+                              PartitionCols:_col1
+                              Select Operator [SEL_45] (rows=1025/319 
width=178)
+                                Output:["_col1"]
+                                Group By Operator [GBY_44] (rows=1025/319 
width=178)
+                                  Output:["_col0","_col1"],keys:KEY._col0, 
KEY._col1
+                                <-Union 20 [SIMPLE_EDGE]
+                                  <-Map 23 [CONTAINS] llap
+                                    Reduce Output Operator [RS_43]
+                                      PartitionCols:_col1, _col0
+                                      Select Operator [SEL_39] (rows=500/500 
width=178)
+                                        Output:["_col0","_col1"]
+                                        Filter Operator [FIL_148] 
(rows=500/500 width=178)
+                                          predicate:value is not null
+                                          TableScan [TS_37] (rows=500/500 
width=178)
+                                            Output:["key","value"]
+                                  <-Reducer 19 [CONTAINS] llap
+                                    Reduce Output Operator [RS_43]
+                                      PartitionCols:_col1, _col0
+                                      Select Operator [SEL_36] (rows=525/319 
width=178)
+                                        Output:["_col0","_col1"]
+                                        Group By Operator [GBY_35] 
(rows=525/319 width=178)
+                                          
Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                        <-Union 18 [SIMPLE_EDGE]
+                                          <-Map 17 [CONTAINS] llap
+                                            Reduce Output Operator [RS_34]
+                                              PartitionCols:_col1, _col0
+                                              Select Operator [SEL_27] 
(rows=25/25 width=175)
+                                                Output:["_col0","_col1"]
+                                                Filter Operator [FIL_146] 
(rows=25/25 width=175)
+                                                  predicate:value is not null
+                                                  TableScan [TS_25] 
(rows=25/25 width=175)
+                                                    Output:["key","value"]
+                                          <-Map 22 [CONTAINS] llap
+                                            Reduce Output Operator [RS_34]
+                                              PartitionCols:_col1, _col0
+                                              Select Operator [SEL_30] 
(rows=500/500 width=178)
+                                                Output:["_col0","_col1"]
+                                                Filter Operator [FIL_147] 
(rows=500/500 width=178)
+                                                  predicate:value is not null
+                                                  TableScan [TS_28] 
(rows=500/500 width=178)
+                                                    Output:["key","value"]
+                <-Reducer 5 [CONTAINS] llap
+                  Reduce Output Operator [RS_62]
+                    PartitionCols:_col0, _col1
+                    Select Operator [SEL_24] (rows=67/61 width=177)
+                      Output:["_col0","_col1"]
+                      Merge Join Operator [MERGEJOIN_158] (rows=67/61 
width=177)
+                        
Conds:RS_21._col2=RS_22._col0(Inner),Output:["_col2","_col5"]
+                      <-Map 16 [SIMPLE_EDGE] llap
+                        SHUFFLE [RS_22]
+                          PartitionCols:_col0
+                           Please refer to the previous Select Operator 
[SEL_17]
+                      <-Reducer 4 [SIMPLE_EDGE] llap
+                        SHUFFLE [RS_21]
+                          PartitionCols:_col2
+                          Merge Join Operator [MERGEJOIN_157] (rows=42/52 
width=86)
+                            
Conds:RS_18._col1=RS_19._col1(Inner),Output:["_col2"]
+                          <-Map 11 [SIMPLE_EDGE] llap
+                            SHUFFLE [RS_19]
+                              PartitionCols:_col1
+                               Please refer to the previous Select Operator 
[SEL_14]
+                          <-Reducer 3 [SIMPLE_EDGE] llap
+                            SHUFFLE [RS_18]
+                              PartitionCols:_col1
+                              Select Operator [SEL_11] (rows=525/319 width=178)
+                                Output:["_col1"]
+                                Group By Operator [GBY_10] (rows=525/319 
width=178)
+                                  Output:["_col0","_col1"],keys:KEY._col0, 
KEY._col1
+                                <-Union 2 [SIMPLE_EDGE]
+                                  <-Map 1 [CONTAINS] llap
+                                    Reduce Output Operator [RS_9]
+                                      PartitionCols:_col1, _col0
+                                      Select Operator [SEL_2] (rows=25/25 
width=175)
+                                        Output:["_col0","_col1"]
+                                        Filter Operator [FIL_142] (rows=25/25 
width=175)
+                                          predicate:value is not null
+                                          TableScan [TS_0] (rows=25/25 
width=175)
+                                            Output:["key","value"]
+                                  <-Map 10 [CONTAINS] llap
+                                    Reduce Output Operator [RS_9]
+                                      PartitionCols:_col1, _col0
+                                      Select Operator [SEL_5] (rows=500/500 
width=178)
+                                        Output:["_col0","_col1"]
+                                        Filter Operator [FIL_143] 
(rows=500/500 width=178)
+                                          predicate:value is not null
+                                          TableScan [TS_3] (rows=500/500 
width=178)
+                                            Output:["key","value"]
+
+PREHOOK: query: CREATE TABLE srcbucket_mapjoin(key int, value string) 
partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@srcbucket_mapjoin
+POSTHOOK: query: CREATE TABLE srcbucket_mapjoin(key int, value string) 
partitioned by (ds string) CLUSTERED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@srcbucket_mapjoin
+PREHOOK: query: CREATE TABLE tab_part (key int, value string) PARTITIONED 
BY(ds STRING) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS 
TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@tab_part
+POSTHOOK: query: CREATE TABLE tab_part (key int, value string) PARTITIONED 
BY(ds STRING) CLUSTERED BY (key) SORTED BY (key) INTO 4 BUCKETS STORED AS 
TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@tab_part
+PREHOOK: query: CREATE TABLE srcbucket_mapjoin_part (key int, value string) 
partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@srcbucket_mapjoin_part
+POSTHOOK: query: CREATE TABLE srcbucket_mapjoin_part (key int, value string) 
partitioned by (ds string) CLUSTERED BY (key) INTO 4 BUCKETS STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@srcbucket_mapjoin_part
+PREHOOK: query: load data local inpath '../../data/files/srcbucket20.txt' INTO 
TABLE srcbucket_mapjoin partition(ds='2008-04-08')
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@srcbucket_mapjoin
+POSTHOOK: query: load data local inpath '../../data/files/srcbucket20.txt' 
INTO TABLE srcbucket_mapjoin partition(ds='2008-04-08')
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@srcbucket_mapjoin
+POSTHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08
+PREHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO 
TABLE srcbucket_mapjoin partition(ds='2008-04-08')
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08
+POSTHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' 
INTO TABLE srcbucket_mapjoin partition(ds='2008-04-08')
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08
+PREHOOK: query: load data local inpath '../../data/files/srcbucket20.txt' INTO 
TABLE srcbucket_mapjoin_part partition(ds='2008-04-08')
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@srcbucket_mapjoin_part
+POSTHOOK: query: load data local inpath '../../data/files/srcbucket20.txt' 
INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08')
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@srcbucket_mapjoin_part
+POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+PREHOOK: query: load data local inpath '../../data/files/srcbucket21.txt' INTO 
TABLE srcbucket_mapjoin_part partition(ds='2008-04-08')
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+POSTHOOK: query: load data local inpath '../../data/files/srcbucket21.txt' 
INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08')
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+PREHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' INTO 
TABLE srcbucket_mapjoin_part partition(ds='2008-04-08')
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+POSTHOOK: query: load data local inpath '../../data/files/srcbucket22.txt' 
INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08')
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+PREHOOK: query: load data local inpath '../../data/files/srcbucket23.txt' INTO 
TABLE srcbucket_mapjoin_part partition(ds='2008-04-08')
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+POSTHOOK: query: load data local inpath '../../data/files/srcbucket23.txt' 
INTO TABLE srcbucket_mapjoin_part partition(ds='2008-04-08')
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+PREHOOK: query: insert overwrite table tab_part partition (ds='2008-04-08')
+select key,value from srcbucket_mapjoin_part
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcbucket_mapjoin_part
+PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08
+PREHOOK: Output: default@tab_part@ds=2008-04-08
+POSTHOOK: query: insert overwrite table tab_part partition (ds='2008-04-08')
+select key,value from srcbucket_mapjoin_part
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcbucket_mapjoin_part
+POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08
+POSTHOOK: Output: default@tab_part@ds=2008-04-08
+POSTHOOK: Lineage: tab_part PARTITION(ds=2008-04-08).key SIMPLE 
[(srcbucket_mapjoin_part)srcbucket_mapjoin_part.FieldSchema(name:key, type:int, 
comment:null), ]
+POSTHOOK: Lineage: tab_part PARTITION(ds=2008-04-08).value SIMPLE 
[(srcbucket_mapjoin_part)srcbucket_mapjoin_part.FieldSchema(name:value, 
type:string, comment:null), ]
+PREHOOK: query: CREATE TABLE tab(key int, value string) PARTITIONED BY(ds 
STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@tab
+POSTHOOK: query: CREATE TABLE tab(key int, value string) PARTITIONED BY(ds 
STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@tab
+PREHOOK: query: insert overwrite table tab partition (ds='2008-04-08')
+select key,value from srcbucket_mapjoin
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcbucket_mapjoin
+PREHOOK: Input: default@srcbucket_mapjoin@ds=2008-04-08
+PREHOOK: Output: default@tab@ds=2008-04-08
+POSTHOOK: query: insert overwrite table tab partition (ds='2008-04-08')
+select key,value from srcbucket_mapjoin
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcbucket_mapjoin
+POSTHOOK: Input: default@srcbucket_mapjoin@ds=2008-04-08
+POSTHOOK: Output: default@tab@ds=2008-04-08
+POSTHOOK: Lineage: tab PARTITION(ds=2008-04-08).key SIMPLE 
[(srcbucket_mapjoin)srcbucket_mapjoin.FieldSchema(name:key, type:int, 
comment:null), ]
+POSTHOOK: Lineage: tab PARTITION(ds=2008-04-08).value SIMPLE 
[(srcbucket_mapjoin)srcbucket_mapjoin.FieldSchema(name:value, type:string, 
comment:null), ]
+PREHOOK: query: CREATE TABLE tab2(key int, value string) PARTITIONED BY(ds 
STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@tab2
+POSTHOOK: query: CREATE TABLE tab2(key int, value string) PARTITIONED BY(ds 
STRING) CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@tab2
+PREHOOK: query: insert overwrite table tab2 partition (ds='2008-04-08')
+select key,value from srcbucket_mapjoin
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcbucket_mapjoin
+PREHOOK: Input: default@srcbucket_mapjoin@ds=2008-04-08
+PREHOOK: Output: default@tab2@ds=2008-04-08
+POSTHOOK: query: insert overwrite table tab2 partition (ds='2008-04-08')
+select key,value from srcbucket_mapjoin
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcbucket_mapjoin
+POSTHOOK: Input: default@srcbucket_mapjoin@ds=2008-04-08
+POSTHOOK: Output: default@tab2@ds=2008-04-08
+POSTHOOK: Lineage: tab2 PARTITION(ds=2008-04-08).key SIMPLE 
[(srcbucket_mapjoin)srcbucket_mapjoin.FieldSchema(name:key, type:int, 
comment:null), ]
+POSTHOOK: Lineage: tab2 PARTITION(ds=2008-04-08).value SIMPLE 
[(srcbucket_mapjoin)srcbucket_mapjoin.FieldSchema(name:value, type:string, 
comment:null), ]
+PREHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab 
s3 on s1.key=s3.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tab
+PREHOOK: Input: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab 
s3 on s1.key=s3.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tab
+POSTHOOK: Input: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: explain analyze 
+select s1.key as key, s1.value as value from tab s1 join tab s3 on 
s1.key=s3.key
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze 
+select s1.key as key, s1.value as value from tab s1 join tab s3 on 
s1.key=s3.key
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Map 1 llap
+      File Output Operator [FS_10]
+        Merge Join Operator [MERGEJOIN_15] (rows=253/480 width=190)
+          Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0","_col1"]
+        <-Select Operator [SEL_5] (rows=230/242 width=14)
+            Output:["_col0"]
+            Filter Operator [FIL_14] (rows=230/242 width=14)
+              predicate:key is not null
+              TableScan [TS_3] (rows=242/242 width=14)
+                default@tab,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
+        <-Select Operator [SEL_2] (rows=230/242 width=190)
+            Output:["_col0","_col1"]
+            Filter Operator [FIL_13] (rows=230/242 width=190)
+              predicate:key is not null
+              TableScan [TS_0] (rows=242/242 width=190)
+                default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
+
+PREHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab 
s3 on s1.key=s3.key join tab s2 on s1.value=s2.value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tab
+PREHOOK: Input: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab 
s3 on s1.key=s3.key join tab s2 on s1.value=s2.value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tab
+POSTHOOK: Input: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: explain analyze 
+select s1.key as key, s1.value as value from tab s1 join tab s3 on 
s1.key=s3.key join tab s2 on s1.value=s2.value
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze 
+select s1.key as key, s1.value as value from tab s1 join tab s3 on 
s1.key=s3.key join tab s2 on s1.value=s2.value
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 llap
+      File Output Operator [FS_16]
+        Select Operator [SEL_15] (rows=278/1166 width=3)
+          Output:["_col0","_col1"]
+          Merge Join Operator [MERGEJOIN_27] (rows=278/1166 width=3)
+            Conds:RS_12._col2=RS_13._col1(Inner),Output:["_col1","_col2"]
+          <-Map 1 [SIMPLE_EDGE] llap
+            SHUFFLE [RS_12]
+              PartitionCols:_col2
+              Merge Join Operator [MERGEJOIN_25] (rows=253/480 width=3)
+                Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col1","_col2"]
+              <-Select Operator [SEL_5] (rows=218/242 width=179)
+                  Output:["_col0","_col1"]
+                  Filter Operator [FIL_23] (rows=218/242 width=179)
+                    predicate:(key is not null and value is not null)
+                    TableScan [TS_3] (rows=242/242 width=179)
+                      
default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
+              <-Select Operator [SEL_2] (rows=230/242 width=3)
+                  Output:["_col0"]
+                  Filter Operator [FIL_22] (rows=230/242 width=3)
+                    predicate:key is not null
+                    TableScan [TS_0] (rows=242/242 width=3)
+                      default@tab,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
+          <-Map 4 [SIMPLE_EDGE] llap
+            SHUFFLE [RS_13]
+              PartitionCols:_col1
+              Select Operator [SEL_8] (rows=230/242 width=175)
+                Output:["_col1"]
+                Filter Operator [FIL_24] (rows=230/242 width=175)
+                  predicate:value is not null
+                  TableScan [TS_6] (rows=242/242 width=175)
+                    default@tab,s2,Tbl:COMPLETE,Col:NONE,Output:["value"]
+
+PREHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab2 
s3 on s1.key=s3.key
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tab
+PREHOOK: Input: default@tab2
+PREHOOK: Input: default@tab2@ds=2008-04-08
+PREHOOK: Input: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab2 
s3 on s1.key=s3.key
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tab
+POSTHOOK: Input: default@tab2
+POSTHOOK: Input: default@tab2@ds=2008-04-08
+POSTHOOK: Input: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: explain analyze 
+select s1.key as key, s1.value as value from tab s1 join tab2 s3 on 
s1.key=s3.key
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze 
+select s1.key as key, s1.value as value from tab s1 join tab2 s3 on 
s1.key=s3.key
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Map 1 llap
+      File Output Operator [FS_10]
+        Merge Join Operator [MERGEJOIN_15] (rows=253/480 width=190)
+          Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0","_col1"]
+        <-Select Operator [SEL_5] (rows=230/242 width=14)
+            Output:["_col0"]
+            Filter Operator [FIL_14] (rows=230/242 width=14)
+              predicate:key is not null
+              TableScan [TS_3] (rows=242/242 width=14)
+                default@tab2,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
+        <-Select Operator [SEL_2] (rows=230/242 width=190)
+            Output:["_col0","_col1"]
+            Filter Operator [FIL_13] (rows=230/242 width=190)
+              predicate:key is not null
+              TableScan [TS_0] (rows=242/242 width=190)
+                default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
+
+PREHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab2 
s3 on s1.key=s3.key join tab2 s2 on s1.value=s2.value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tab
+PREHOOK: Input: default@tab2
+PREHOOK: Input: default@tab2@ds=2008-04-08
+PREHOOK: Input: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: select s1.key as key, s1.value as value from tab s1 join tab2 
s3 on s1.key=s3.key join tab2 s2 on s1.value=s2.value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tab
+POSTHOOK: Input: default@tab2
+POSTHOOK: Input: default@tab2@ds=2008-04-08
+POSTHOOK: Input: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: explain analyze 
+select s1.key as key, s1.value as value from tab s1 join tab2 s3 on 
s1.key=s3.key join tab2 s2 on s1.value=s2.value
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze 
+select s1.key as key, s1.value as value from tab s1 join tab2 s3 on 
s1.key=s3.key join tab2 s2 on s1.value=s2.value
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 llap
+      File Output Operator [FS_16]
+        Select Operator [SEL_15] (rows=278/1166 width=3)
+          Output:["_col0","_col1"]
+          Merge Join Operator [MERGEJOIN_27] (rows=278/1166 width=3)
+            Conds:RS_12._col2=RS_13._col1(Inner),Output:["_col1","_col2"]
+          <-Map 1 [SIMPLE_EDGE] llap
+            SHUFFLE [RS_12]
+              PartitionCols:_col2
+              Merge Join Operator [MERGEJOIN_25] (rows=253/480 width=3)
+                Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col1","_col2"]
+              <-Select Operator [SEL_5] (rows=218/242 width=179)
+                  Output:["_col0","_col1"]
+                  Filter Operator [FIL_23] (rows=218/242 width=179)
+                    predicate:(key is not null and value is not null)
+                    TableScan [TS_3] (rows=242/242 width=179)
+                      
default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
+              <-Select Operator [SEL_2] (rows=230/242 width=3)
+                  Output:["_col0"]
+                  Filter Operator [FIL_22] (rows=230/242 width=3)
+                    predicate:key is not null
+                    TableScan [TS_0] (rows=242/242 width=3)
+                      default@tab2,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
+          <-Map 4 [SIMPLE_EDGE] llap
+            SHUFFLE [RS_13]
+              PartitionCols:_col1
+              Select Operator [SEL_8] (rows=230/242 width=175)
+                Output:["_col1"]
+                Filter Operator [FIL_24] (rows=230/242 width=175)
+                  predicate:value is not null
+                  TableScan [TS_6] (rows=242/242 width=175)
+                    default@tab2,s2,Tbl:COMPLETE,Col:NONE,Output:["value"]
+
+PREHOOK: query: select count(*) from (select s1.key as key, s1.value as value 
from tab s1 join tab s3 on s1.key=s3.key
+UNION  ALL
+select s2.key as key, s2.value as value from tab s2
+) a join tab_part b on (a.key = b.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tab
+PREHOOK: Input: default@tab@ds=2008-04-08
+PREHOOK: Input: default@tab_part
+PREHOOK: Input: default@tab_part@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from (select s1.key as key, s1.value as value 
from tab s1 join tab s3 on s1.key=s3.key
+UNION  ALL
+select s2.key as key, s2.value as value from tab s2
+) a join tab_part b on (a.key = b.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tab
+POSTHOOK: Input: default@tab@ds=2008-04-08
+POSTHOOK: Input: default@tab_part
+POSTHOOK: Input: default@tab_part@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: explain analyze
+select count(*) from (select s1.key as key, s1.value as value from tab s1 join 
tab s3 on s1.key=s3.key
+UNION  ALL
+select s2.key as key, s2.value as value from tab s2
+) a join tab_part b on (a.key = b.key)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze
+select count(*) from (select s1.key as key, s1.value as value from tab s1 join 
tab s3 on s1.key=s3.key
+UNION  ALL
+select s2.key as key, s2.value as value from tab s2
+) a join tab_part b on (a.key = b.key)
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Map 1 <- Union 2 (CONTAINS)
+Map 6 <- Union 2 (CONTAINS)
+Reducer 3 <- Map 7 (SIMPLE_EDGE), Union 2 (SIMPLE_EDGE)
+Reducer 4 <- Reducer 3 (CUSTOM_SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 4 llap
+      File Output Operator [FS_25]
+        Group By Operator [GBY_23] (rows=1/1 width=8)
+          Output:["_col0"],aggregations:["count()"]
+        <-Reducer 3 [CUSTOM_SIMPLE_EDGE] llap
+          PARTITION_ONLY_SHUFFLE [RS_22]
+            Merge Join Operator [MERGEJOIN_38] (rows=531/1646 width=3)
+              Conds:Union 2._col0=RS_19._col0(Inner)
+            <-Map 7 [SIMPLE_EDGE] llap
+              SHUFFLE [RS_19]
+                PartitionCols:_col0
+                Select Operator [SEL_17] (rows=475/500 width=3)
+                  Output:["_col0"]
+                  Filter Operator [FIL_35] (rows=475/500 width=3)
+                    predicate:key is not null
+                    TableScan [TS_15] (rows=500/500 width=3)
+                      default@tab_part,b,Tbl:COMPLETE,Col:NONE,Output:["key"]
+            <-Union 2 [SIMPLE_EDGE]
+              <-Map 1 [CONTAINS] llap
+                Reduce Output Operator [RS_18]
+                  PartitionCols:_col0
+                  Merge Join Operator [MERGEJOIN_36] (rows=253/480 width=3)
+                    Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col0"]
+                  <-Select Operator [SEL_5] (rows=230/242 width=3)
+                      Output:["_col0"]
+                      Filter Operator [FIL_33] (rows=230/242 width=3)
+                        predicate:key is not null
+                        TableScan [TS_3] (rows=242/242 width=3)
+                          default@tab,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
+                  <-Select Operator [SEL_2] (rows=230/242 width=3)
+                      Output:["_col0"]
+                      Filter Operator [FIL_32] (rows=230/242 width=3)
+                        predicate:key is not null
+                        TableScan [TS_0] (rows=242/242 width=3)
+                          Output:["key"]
+              <-Map 6 [CONTAINS] llap
+                Reduce Output Operator [RS_18]
+                  PartitionCols:_col0
+                  Select Operator [SEL_12] (rows=230/242 width=3)
+                    Output:["_col0"]
+                    Filter Operator [FIL_34] (rows=230/242 width=3)
+                      predicate:key is not null
+                      TableScan [TS_10] (rows=242/242 width=3)
+                        Output:["key"]
+
+PREHOOK: query: select count(*) from (select s1.key as key, s1.value as value 
from tab s1 join tab s3 on s1.key=s3.key join tab s2 on s1.value=s2.value
+UNION  ALL
+select s2.key as key, s2.value as value from tab s2
+) a join tab_part b on (a.key = b.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tab
+PREHOOK: Input: default@tab@ds=2008-04-08
+PREHOOK: Input: default@tab_part
+PREHOOK: Input: default@tab_part@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from (select s1.key as key, s1.value as value 
from tab s1 join tab s3 on s1.key=s3.key join tab s2 on s1.value=s2.value
+UNION  ALL
+select s2.key as key, s2.value as value from tab s2
+) a join tab_part b on (a.key = b.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tab
+POSTHOOK: Input: default@tab@ds=2008-04-08
+POSTHOOK: Input: default@tab_part
+POSTHOOK: Input: default@tab_part@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: explain analyze
+select count(*) from (select s1.key as key, s1.value as value from tab s1 join 
tab s3 on s1.key=s3.key join tab s2 on s1.value=s2.value
+UNION  ALL
+select s2.key as key, s2.value as value from tab s2
+) a join tab_part b on (a.key = b.key)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze
+select count(*) from (select s1.key as key, s1.value as value from tab s1 join 
tab s3 on s1.key=s3.key join tab s2 on s1.value=s2.value
+UNION  ALL
+select s2.key as key, s2.value as value from tab s2
+) a join tab_part b on (a.key = b.key)
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Map 8 <- Union 3 (CONTAINS)
+Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 7 (SIMPLE_EDGE), Union 3 (CONTAINS)
+Reducer 4 <- Map 9 (SIMPLE_EDGE), Union 3 (SIMPLE_EDGE)
+Reducer 5 <- Reducer 4 (CUSTOM_SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 5 llap
+      File Output Operator [FS_31]
+        Group By Operator [GBY_29] (rows=1/1 width=8)
+          Output:["_col0"],aggregations:["count()"]
+        <-Reducer 4 [CUSTOM_SIMPLE_EDGE] llap
+          PARTITION_ONLY_SHUFFLE [RS_28]
+            Merge Join Operator [MERGEJOIN_50] (rows=558/3768 width=3)
+              Conds:Union 3._col0=RS_25._col0(Inner)
+            <-Map 9 [SIMPLE_EDGE] llap
+              SHUFFLE [RS_25]
+                PartitionCols:_col0
+                Select Operator [SEL_23] (rows=475/500 width=3)
+                  Output:["_col0"]
+                  Filter Operator [FIL_46] (rows=475/500 width=3)
+                    predicate:key is not null
+                    TableScan [TS_21] (rows=500/500 width=3)
+                      default@tab_part,b,Tbl:COMPLETE,Col:NONE,Output:["key"]
+            <-Union 3 [SIMPLE_EDGE]
+              <-Map 8 [CONTAINS] llap
+                Reduce Output Operator [RS_24]
+                  PartitionCols:_col0
+                  Select Operator [SEL_18] (rows=230/242 width=3)
+                    Output:["_col0"]
+                    Filter Operator [FIL_45] (rows=230/242 width=3)
+                      predicate:key is not null
+                      TableScan [TS_16] (rows=242/242 width=3)
+                        Output:["key"]
+              <-Reducer 2 [CONTAINS] llap
+                Reduce Output Operator [RS_24]
+                  PartitionCols:_col0
+                  Select Operator [SEL_15] (rows=278/1166 width=3)
+                    Output:["_col0"]
+                    Merge Join Operator [MERGEJOIN_49] (rows=278/1166 width=3)
+                      Conds:RS_12._col2=RS_13._col1(Inner),Output:["_col1"]
+                    <-Map 1 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_12]
+                        PartitionCols:_col2
+                        Merge Join Operator [MERGEJOIN_47] (rows=253/480 
width=3)
+                          
Conds:SEL_2._col0=SEL_5._col0(Inner),Output:["_col1","_col2"]
+                        <-Select Operator [SEL_5] (rows=218/242 width=179)
+                            Output:["_col0","_col1"]
+                            Filter Operator [FIL_43] (rows=218/242 width=179)
+                              predicate:(key is not null and value is not null)
+                              TableScan [TS_3] (rows=242/242 width=179)
+                                
default@tab,s1,Tbl:COMPLETE,Col:NONE,Output:["key","value"]
+                        <-Select Operator [SEL_2] (rows=230/242 width=3)
+                            Output:["_col0"]
+                            Filter Operator [FIL_42] (rows=230/242 width=3)
+                              predicate:key is not null
+                              TableScan [TS_0] (rows=242/242 width=3)
+                                
default@tab,s3,Tbl:COMPLETE,Col:NONE,Output:["key"]
+                    <-Map 7 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_13]
+                        PartitionCols:_col1
+                        Select Operator [SEL_8] (rows=230/242 width=175)
+                          Output:["_col1"]
+                          Filter Operator [FIL_44] (rows=230/242 width=175)
+                            predicate:value is not null
+                            TableScan [TS_6] (rows=242/242 width=175)
+                              
default@tab,s2,Tbl:COMPLETE,Col:NONE,Output:["value"]
+
+PREHOOK: query: CREATE TABLE a(key STRING, value STRING) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@a
+POSTHOOK: query: CREATE TABLE a(key STRING, value STRING) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@a
+PREHOOK: query: CREATE TABLE b(key STRING, value STRING) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@b
+POSTHOOK: query: CREATE TABLE b(key STRING, value STRING) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@b
+PREHOOK: query: CREATE TABLE c(key STRING, value STRING) STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@c
+POSTHOOK: query: CREATE TABLE c(key STRING, value STRING) STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@c
+PREHOOK: query: from
+(
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union all select * from src)z ON (x.value = z.value)
+union all
+SELECT x.key, y.value
+FROM src x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union all select key, value from src union 
all select key, value from src)z ON (x.value = z.value)
+union all
+SELECT x.key, y.value
+FROM src1 x JOIN src1 y ON (x.key = y.key) 
+JOIN (select key, value from src1 union all select key, value from src union 
all select key, value from src union all select key, value from src)z ON 
(x.value = z.value)
+) tmp
+INSERT OVERWRITE TABLE a SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE b SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE c SELECT tmp.key, tmp.value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Input: default@src1
+PREHOOK: Output: default@a
+PREHOOK: Output: default@b
+PREHOOK: Output: default@c
+POSTHOOK: query: from
+(
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union all select * from src)z ON (x.value = z.value)
+union all
+SELECT x.key, y.value
+FROM src x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union all select key, value from src union 
all select key, value from src)z ON (x.value = z.value)
+union all
+SELECT x.key, y.value
+FROM src1 x JOIN src1 y ON (x.key = y.key) 
+JOIN (select key, value from src1 union all select key, value from src union 
all select key, value from src union all select key, value from src)z ON 
(x.value = z.value)
+) tmp
+INSERT OVERWRITE TABLE a SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE b SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE c SELECT tmp.key, tmp.value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@src1
+POSTHOOK: Output: default@a
+POSTHOOK: Output: default@b
+POSTHOOK: Output: default@c
+PREHOOK: query: explain analyze
+from
+(
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union all select * from src)z ON (x.value = z.value)
+union all
+SELECT x.key, y.value
+FROM src x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union all select key, value from src union 
all select key, value from src)z ON (x.value = z.value)
+union all
+SELECT x.key, y.value
+FROM src1 x JOIN src1 y ON (x.key = y.key) 
+JOIN (select key, value from src1 union all select key, value from src union 
all select key, value from src union all select key, value from src)z ON 
(x.value = z.value)
+) tmp
+INSERT OVERWRITE TABLE a SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE b SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE c SELECT tmp.key, tmp.value
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze
+from
+(
+SELECT x.key, y.value
+FROM src1 x JOIN src y ON (x.key = y.key) 
+JOIN (select * from src1 union all select * from src)z ON (x.value = z.value)
+union all
+SELECT x.key, y.value
+FROM src x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union all select key, value from src union 
all select key, value from src)z ON (x.value = z.value)
+union all
+SELECT x.key, y.value
+FROM src1 x JOIN src1 y ON (x.key = y.key) 
+JOIN (select key, value from src1 union all select key, value from src union 
all select key, value from src union all select key, value from src)z ON 
(x.value = z.value)
+) tmp
+INSERT OVERWRITE TABLE a SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE b SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE c SELECT tmp.key, tmp.value
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Map 1 <- Union 2 (CONTAINS)
+Map 13 <- Union 14 (CONTAINS)
+Map 15 <- Union 14 (CONTAINS)
+Map 16 <- Union 14 (CONTAINS)
+Map 19 <- Union 20 (CONTAINS)
+Map 21 <- Union 20 (CONTAINS)
+Map 22 <- Union 20 (CONTAINS)
+Map 23 <- Union 20 (CONTAINS)
+Map 6 <- Union 2 (CONTAINS)
+Reducer 11 <- Map 10 (SIMPLE_EDGE), Union 14 (SIMPLE_EDGE)
+Reducer 12 <- Map 17 (SIMPLE_EDGE), Reducer 11 (SIMPLE_EDGE), Union 5 
(CONTAINS)
+Reducer 3 <- Map 7 (SIMPLE_EDGE), Union 2 (SIMPLE_EDGE)
+Reducer 4 <- Map 10 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE), Union 5 (CONTAINS)
+Reducer 8 <- Map 18 (SIMPLE_EDGE), Map 7 (SIMPLE_EDGE)
+Reducer 9 <- Reducer 8 (SIMPLE_EDGE), Union 20 (SIMPLE_EDGE), Union 5 
(CONTAINS)
+
+Stage-5
+  Stats Work{}
+    Stage-0
+      Move Operator
+        table:{"name:":"default.a"}
+        Stage-4
+          Dependency Collection{}
+            Stage-3
+              Union 5
+              <-Reducer 12 [CONTAINS] llap
+                File Output Operator [FS_75]
+                  table:{"name:":"default.a"}
+                  Select Operator [SEL_44] (rows=2682/5421 width=178)
+                    Output:["_col0","_col1"]
+                    Merge Join Operator [MERGEJOIN_122] (rows=2682/5421 
width=178)
+                      
Conds:RS_41._col1=RS_42._col0(Inner),Output:["_col1","_col4"]
+                    <-Map 17 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_42]
+                        PartitionCols:_col0
+                        Select Operator [SEL_37] (rows=500/500 width=178)
+                          Output:["_col0","_col1"]
+                          Filter Operator [FIL_112] (rows=500/500 width=178)
+                            predicate:key is not null
+                            TableScan [TS_35] (rows=500/500 width=178)
+                              
default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                    <-Reducer 11 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_41]
+                        PartitionCols:_col1
+                        Merge Join Operator [MERGEJOIN_121] (rows=1658/2097 
width=87)
+                          Conds:Union 
14._col0=RS_39._col1(Inner),Output:["_col1"]
+                        <-Map 10 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_39]
+                            PartitionCols:_col1
+                            Select Operator [SEL_34] (rows=500/500 width=178)
+                              Output:["_col0","_col1"]
+                              Filter Operator [FIL_111] (rows=500/500 
width=178)
+                                predicate:(key is not null and value is not 
null)
+                                TableScan [TS_11] (rows=500/500 width=178)
+                                  
default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                        <-Union 14 [SIMPLE_EDGE]
+                          <-Map 13 [CONTAINS] llap
+                            Reduce Output Operator [RS_38]
+                              PartitionCols:_col0
+                              Select Operator [SEL_23] (rows=25/25 width=89)
+                                Output:["_col0"]
+                                Filter Operator [FIL_108] (rows=25/25 width=89)
+                                  predicate:value is not null
+                                  TableScan [TS_21] (rows=25/25 width=89)
+                                    Output:["value"]
+                          <-Map 15 [CONTAINS] llap
+                            Reduce Output Operator [RS_38]
+                              PartitionCols:_col0
+                              Select Operator [SEL_26] (rows=500/500 width=91)
+                                Output:["_col0"]
+                                Filter Operator [FIL_109] (rows=500/500 
width=91)
+                                  predicate:value is not null
+                                  TableScan [TS_24] (rows=500/500 width=91)
+                                    Output:["value"]
+                          <-Map 16 [CONTAINS] llap
+                            Reduce Output Operator [RS_38]
+                              PartitionCols:_col0
+                              Select Operator [SEL_30] (rows=500/500 width=91)
+                                Output:["_col0"]
+                                Filter Operator [FIL_110] (rows=500/500 
width=91)
+                                  predicate:value is not null
+                                  TableScan [TS_28] (rows=500/500 width=91)
+                                    Output:["value"]
+                File Output Operator [FS_77]
+                  table:{"name:":"default.b"}
+                   Please refer to the previous Select Operator [SEL_44]
+                File Output Operator [FS_79]
+                  table:{"name:":"default.c"}
+                   Please refer to the previous Select Operator [SEL_44]
+              <-Reducer 4 [CONTAINS] llap
+                File Output Operator [FS_75]
+                  table:{"name:":"default.a"}
+                  Select Operator [SEL_20] (rows=67/170 width=177)
+                    Output:["_col0","_col1"]
+                    Merge Join Operator [MERGEJOIN_120] (rows=67/170 width=177)
+                      
Conds:RS_17._col1=RS_18._col0(Inner),Output:["_col1","_col4"]
+                    <-Map 10 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_18]
+                        PartitionCols:_col0
+                        Select Operator [SEL_13] (rows=500/500 width=178)
+                          Output:["_col0","_col1"]
+                          Filter Operator [FIL_107] (rows=500/500 width=178)
+                            predicate:key is not null
+                             Please refer to the previous TableScan [TS_11]
+                    <-Reducer 3 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_17]
+                        PartitionCols:_col1
+                        Merge Join Operator [MERGEJOIN_119] (rows=42/108 
width=86)
+                          Conds:Union 
2._col0=RS_15._col1(Inner),Output:["_col1"]
+                        <-Map 7 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_15]
+                            PartitionCols:_col1
+                            Select Operator [SEL_10] (rows=25/25 width=175)
+                              Output:["_col0","_col1"]
+                              Filter Operator [FIL_106] (rows=25/25 width=175)
+                                predicate:(key is not null and value is not 
null)
+                                TableScan [TS_8] (rows=25/25 width=175)
+                                  
default@src1,x,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                        <-Union 2 [SIMPLE_EDGE]
+                          <-Map 1 [CONTAINS] llap
+                            Reduce Output Operator [RS_14]
+                              PartitionCols:_col0
+                              Select Operator [SEL_2] (rows=25/25 width=89)
+                                Output:["_col0"]
+                                Filter Operator [FIL_104] (rows=25/25 width=89)
+                                  predicate:value is not null
+                                  TableScan [TS_0] (rows=25/25 width=89)
+                                    Output:["value"]
+                          <-Map 6 [CONTAINS] llap
+                            Reduce Output Operator [RS_14]
+                              PartitionCols:_col0
+                              Select Operator [SEL_5] (rows=500/500 width=91)
+                                Output:["_col0"]
+                                Filter Operator [FIL_105] (rows=500/500 
width=91)
+                                  predicate:value is not null
+                                  TableScan [TS_3] (rows=500/500 width=91)
+                                    Output:["value"]
+                File Output Operator [FS_77]
+                  table:{"name:":"default.b"}
+                   Please refer to the previous Select Operator [SEL_20]
+                File Output Operator [FS_79]
+                  table:{"name:":"default.c"}
+                   Please refer to the previous Select Operator [SEL_20]
+              <-Reducer 9 [CONTAINS] llap
+                File Output Operator [FS_75]
+                  table:{"name:":"default.a"}
+                  Select Operator [SEL_72] (rows=192/820 width=175)
+                    Output:["_col0","_col1"]
+                    Merge Join Operator [MERGEJOIN_124] (rows=192/820 
width=175)
+                      Conds:RS_69._col1=Union 
20._col0(Inner),Output:["_col0","_col3"]
+                    <-Reducer 8 [SIMPLE_EDGE] llap
+                      SHUFFLE [RS_69]
+                        PartitionCols:_col1
+                        Merge Join Operator [MERGEJOIN_123] (rows=39/115 
width=264)
+                          
Conds:RS_66._col0=RS_67._col0(Inner),Output:["_col0","_col1","_col3"]
+                        <-Map 7 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_66]
+                            PartitionCols:_col0
+                             Please refer to the previous Select Operator 
[SEL_10]
+                        <-Map 18 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_67]
+                            PartitionCols:_col0
+                            Select Operator [SEL_51] (rows=25/25 width=175)
+                              Output:["_col0","_col1"]
+                              Filter Operator [FIL_114] (rows=25/25 width=175)
+                                predicate:key is not null
+                                TableScan [TS_49] (rows=25/25 width=175)
+                                  
default@src1,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                    <-Union 20 [SIMPLE_EDGE]
+                      <-Map 19 [CONTAINS] llap
+                        Reduce Output Operator [RS_70]
+                          PartitionCols:_col0
+                          Select Operator [SEL_54] (rows=25/25 width=89)
+                            Output:["_col0"]
+                            Filter Operator [FIL_115] (rows=25/25 width=89)
+                              predicate:value is not null
+                              TableScan [TS_52] (rows=25/25 width=89)
+                                Output:["value"]
+                      <-Map 21 [CONTAINS] llap
+                        Reduce Output Operator [RS_70]
+                          PartitionCols:_col0
+                          Select Operator [SEL_57] (rows=500/500 width=91)
+                            Output:["_col0"]
+                            Filter Operator [FIL_116] (rows=500/500 width=91)
+                              predicate:value is not null
+                              TableScan [TS_55] (rows=500/500 width=91)
+                                Output:["value"]
+                      <-Map 22 [CONTAINS] llap
+                        Reduce Output Operator [RS_70]
+                          PartitionCols:_col0
+                          Select Operator [SEL_61] (rows=500/500 width=91)
+                            Output:["_col0"]
+                            Filter Operator [FIL_117] (rows=500/500 width=91)
+                              predicate:value is not null
+                              TableScan [TS_59] (rows=500/500 width=91)
+                                Output:["value"]
+                      <-Map 23 [CONTAINS] llap
+                        Reduce Output Operator [RS_70]
+                          PartitionCols:_col0
+                          Select Operator [SEL_64] (rows=500/500 width=91)
+                            Output:["_col0"]
+                            Filter Operator [FIL_118] (rows=500/500 width=91)
+                              predicate:value is not null
+                              TableScan [TS_62] (rows=500/500 width=91)
+                                Output:["value"]
+                File Output Operator [FS_77]
+                  table:{"name:":"default.b"}
+                   Please refer to the previous Select Operator [SEL_72]
+                File Output Operator [FS_79]
+                  table:{"name:":"default.c"}
+                   Please refer to the previous Select Operator [SEL_72]
+Stage-6
+  Stats Work{}
+    Stage-1
+      Move Operator
+        table:{"name:":"default.b"}
+         Please refer to the previous Stage-4
+Stage-7
+  Stats Work{}
+    Stage-2
+      Move Operator
+        table:{"name:":"default.c"}
+         Please refer to the previous Stage-4
+
+PREHOOK: query: FROM
+( 
+SELECT x.key as key, y.value as value from src1 x JOIN src y ON (x.key = 
y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value) 
+union
+SELECT x.key as key, y.value as value from src x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src)z ON (x.value = z.value)
+union
+SELECT x.key as key, y.value as value from src1 x JOIN src1 y ON (x.key = 
y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src union select key, value from src)z ON (x.value = 
z.value)
+) tmp
+INSERT OVERWRITE TABLE a SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE b SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE c SELECT tmp.key, tmp.value
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Input: default@src1
+PREHOOK: Output: default@a
+PREHOOK: Output: default@b
+PREHOOK: Output: default@c
+POSTHOOK: query: FROM
+( 
+SELECT x.key as key, y.value as value from src1 x JOIN src y ON (x.key = 
y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value) 
+union
+SELECT x.key as key, y.value as value from src x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src)z ON (x.value = z.value)
+union
+SELECT x.key as key, y.value as value from src1 x JOIN src1 y ON (x.key = 
y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src union select key, value from src)z ON (x.value = 
z.value)
+) tmp
+INSERT OVERWRITE TABLE a SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE b SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE c SELECT tmp.key, tmp.value
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@src1
+POSTHOOK: Output: default@a
+POSTHOOK: Output: default@b
+POSTHOOK: Output: default@c
+PREHOOK: query: explain analyze
+FROM
+( 
+SELECT x.key as key, y.value as value from src1 x JOIN src y ON (x.key = 
y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value) 
+union
+SELECT x.key as key, y.value as value from src x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src)z ON (x.value = z.value)
+union
+SELECT x.key as key, y.value as value from src1 x JOIN src1 y ON (x.key = 
y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src union select key, value from src)z ON (x.value = 
z.value)
+) tmp
+INSERT OVERWRITE TABLE a SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE b SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE c SELECT tmp.key, tmp.value
+PREHOOK: type: QUERY
+POSTHOOK: query: explain analyze
+FROM
+( 
+SELECT x.key as key, y.value as value from src1 x JOIN src y ON (x.key = 
y.key) 
+JOIN (select * from src1 union select * from src)z ON (x.value = z.value) 
+union
+SELECT x.key as key, y.value as value from src x JOIN src y ON (x.key = y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src)z ON (x.value = z.value)
+union
+SELECT x.key as key, y.value as value from src1 x JOIN src1 y ON (x.key = 
y.key) 
+JOIN (select key, value from src1 union select key, value from src union 
select key, value from src union select key, value from src)z ON (x.value = 
z.value)
+) tmp
+INSERT OVERWRITE TABLE a SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE b SELECT tmp.key, tmp.value
+INSERT OVERWRITE TABLE c SELECT tmp.key, tmp.value
+POSTHOOK: type: QUERY
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Map 1 <- Union 2 (CONTAINS)
+Map 10 <- Union 2 (CONTAINS)
+Map 17 <- Union 18 (CONTAINS)
+Map 22 <- Union 18 (CONTAINS)
+Map 23 <- Union 20 (CONTAINS)
+Map 26 <- Union 27 (CONTAINS)
+Map 33 <- Union 27 (CONTAINS)
+Map 34 <- Union 29 (CONTAINS)
+Map 35 <- Union 31 (CONTAINS)
+Reducer 12 <- Map 11 (SIMPLE_EDGE), Map 25 (SIMPLE_EDGE)
+Reducer 13 <- Reducer 12 (SIMPLE_EDGE), Reducer 32 (SIMPLE_EDGE), Union 8 
(CONTAINS)
+Reducer 15 <- Map 14 (SIMPLE_EDGE), Reducer 21 (SIMPLE_EDGE)
+Reducer 16 <- Map 24 (SIMPLE_EDGE), Reducer 15 (SIMPLE_EDGE), Union 6 
(CONTAINS)
+Reducer 19 <- Union 18 (SIMPLE_EDGE), Union 20 (CONTAINS)
+Reducer 21 <- Union 20 (SIMPLE_EDGE)
+Reducer 28 <- Union 27 (SIMPLE_EDGE), Union 29 (CONTAINS)
+Reducer 3 <- Union 2 (SIMPLE_EDGE)
+Reducer 30 <- Union 29 (SIMPLE_EDGE), Union 31 (CONTAINS)
+Reducer 32 <- Union 31 (SIMPLE_EDGE)
+Reducer 4 <- Map 11 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
+Reducer 5 <- Map 14 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE), Union 6 (CONTAINS)
+Reducer 7 <- Union 6 (SIMPLE_EDGE), Union 8 (CONTAINS)
+Reducer 9 <- Union 8 (SIMPLE_EDGE)
+
+Stage-5
+  Stats Work{}
+    Stage-0
+      Move Operator
+        table:{"name:":"default.a"}
+        Stage-4
+          Dependency Collection{}
+            Stage-3
+              Reducer 9 llap
+              File Output Operator [FS_115]
+                table:{"name:":"default.a"}
+                Group By Operator [GBY_112] (rows=2941/319 width=178)
+                  Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                <-Union 8 [SIMPLE_EDGE]
+                  <-Reducer 13 [CONTAINS] llap
+                    Reduce Output Operator [RS_111]
+                      PartitionCols:_col0, _col1
+                      Select Operator [SEL_107] (rows=192/304 width=175)
+                        Output:["_col0","_col1"]
+                        Merge Join Operator [MERGEJOIN_164] (rows=192/304 
width=175)
+                          
Conds:RS_104._col1=RS_105._col1(Inner),Output:["_col0","_col3"]
+                        <-Reducer 12 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_104]
+                            PartitionCols:_col1
+                            Merge Join Operator [MERGEJOIN_163] (rows=39/115 
width=264)
+                              
Conds:RS_101._col0=RS_102._col0(Inner),Output:["_col0","_col1","_col3"]
+                            <-Map 11 [SIMPLE_EDGE] llap
+                              SHUFFLE [RS_101]
+                                PartitionCols:_col0
+                                Select Operator [SEL_14] (rows=25/25 width=175)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_146] (rows=25/25 
width=175)
+                                    predicate:(key is not null and value is 
not null)
+                                    TableScan [TS_12] (rows=25/25 width=175)
+                                      
default@src1,x,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                            <-Map 25 [SIMPLE_EDGE] llap
+                              SHUFFLE [RS_102]
+                                PartitionCols:_col0
+                                Select Operator [SEL_70] (rows=25/25 width=175)
+                                  Output:["_col0","_col1"]
+                                  Filter Operator [FIL_154] (rows=25/25 
width=175)
+                                    predicate:key is not null
+                                    TableScan [TS_68] (rows=25/25 width=175)
+                                      
default@src1,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                        <-Reducer 32 [SIMPLE_EDGE] llap
+                          SHUFFLE [RS_105]
+                            PartitionCols:_col1
+                            Select Operator [SEL_100] (rows=1525/319 width=178)
+                              Output:["_col1"]
+                              Group By Operator [GBY_99] (rows=1525/319 
width=178)
+                                Output:["_col0","_col1"],keys:KEY._col0, 
KEY._col1
+                              <-Union 31 [SIMPLE_EDGE]
+                                <-Map 35 [CONTAINS] llap
+                                  Reduce Output Operator [RS_98]
+                                    PartitionCols:_col1, _col0
+                                    Select Operator [SEL_94] (rows=500/500 
width=178)
+                                      Output:["_col0","_col1"]
+                                      Filter Operator [FIL_158] (rows=500/500 
width=178)
+                                        predicate:value is not null
+                                        TableScan [TS_92] (rows=500/500 
width=178)
+                                          Output:["key","value"]
+                                <-Reducer 30 [CONTAINS] llap
+                                  Reduce Output Operator [RS_98]
+                                    PartitionCols:_col1, _col0
+                                    Select Operator [SEL_91] (rows=1025/319 
width=178)
+                                      Output:["_col0","_col1"]
+                                      Group By Operator [GBY_90] 
(rows=1025/319 width=178)
+                                        
Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                      <-Union 29 [SIMPLE_EDGE]
+                                        <-Map 34 [CONTAINS] llap
+                                          Reduce Output Operator [RS_89]
+                                            PartitionCols:_col1, _col0
+                                            Select Operator [SEL_85] 
(rows=500/500 width=178)
+                                              Output:["_col0","_col1"]
+                                              Filter Operator [FIL_157] 
(rows=500/500 width=178)
+                                                predicate:value is not null
+                                                TableScan [TS_83] 
(rows=500/500 width=178)
+                                                  Output:["key","value"]
+                                        <-Reducer 28 [CONTAINS] llap
+                                          Reduce Output Operator [RS_89]
+                                            PartitionCols:_col1, _col0
+                                            Select Operator [SEL_82] 
(rows=525/319 width=178)
+                                              Output:["_col0","_col1"]
+                                              Group By Operator [GBY_81] 
(rows=525/319 width=178)
+                                                
Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                              <-Union 27 [SIMPLE_EDGE]
+                                                <-Map 26 [CONTAINS] llap
+                                                  Reduce Output Operator 
[RS_80]
+                                                    PartitionCols:_col1, _col0
+                                                    Select Operator [SEL_73] 
(rows=25/25 width=175)
+                                                      Output:["_col0","_col1"]
+                                                      Filter Operator 
[FIL_155] (rows=25/25 width=175)
+                                                        predicate:value is not 
null
+                                                        TableScan [TS_71] 
(rows=25/25 width=175)
+                                                          
Output:["key","value"]
+                                                <-Map 33 [CONTAINS] llap
+                                                  Reduce Output Operator 
[RS_80]
+                                                    PartitionCols:_col1, _col0
+                                                    Select Operator [SEL_76] 
(rows=500/500 width=178)
+                                                      Output:["_col0","_col1"]
+                                                      Filter Operator 
[FIL_156] (rows=500/500 width=178)
+                                                        predicate:value is not 
null
+                                                        TableScan [TS_74] 
(rows=500/500 width=178)
+                                                          
Output:["key","value"]
+                  <-Reducer 7 [CONTAINS] llap
+                    Reduce Output Operator [RS_111]
+                      PartitionCols:_col0, _col1
+                      Group By Operator [GBY_63] (rows=2749/309 width=178)
+                        Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                      <-Union 6 [SIMPLE_EDGE]
+                        <-Reducer 16 [CONTAINS] llap
+                          Reduce Output Operator [RS_62]
+                            PartitionCols:_col0, _col1
+                            Select Operator [SEL_58] (rows=2682/1056 width=178)
+                              Output:["_col0","_col1"]
+                              Merge Join Operator [MERGEJOIN_162] 
(rows=2682/1056 width=178)
+                                
Conds:RS_55._col2=RS_56._col0(Inner),Output:["_col2","_col5"]
+                              <-Map 24 [SIMPLE_EDGE] llap
+                                SHUFFLE [RS_56]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_51] (rows=500/500 
width=178)
+                                    Output:["_col0","_col1"]
+                                    Filter Operator [FIL_152] (rows=500/500 
width=178)
+                                      predicate:key is not null
+                                      TableScan [TS_49] (rows=500/500 
width=178)
+                                        
default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                              <-Reducer 15 [SIMPLE_EDGE] llap
+                                SHUFFLE [RS_55]
+                                  PartitionCols:_col2
+                                  Merge Join Operator [MERGEJOIN_161] 
(rows=1658/512 width=87)
+                                    
Conds:RS_52._col1=RS_53._col1(Inner),Output:["_col2"]
+                                  <-Map 14 [SIMPLE_EDGE] llap
+                                    SHUFFLE [RS_53]
+                                      PartitionCols:_col1
+                                      Select Operator [SEL_48] (rows=500/500 
width=178)
+                                        Output:["_col0","_col1"]
+                                        Filter Operator [FIL_151] 
(rows=500/500 width=178)
+                                          predicate:(key is not null and value 
is not null)
+                                          TableScan [TS_15] (rows=500/500 
width=178)
+                                            
default@src,y,Tbl:COMPLETE,Col:COMPLETE,Output:["key","value"]
+                                  <-Reducer 21 [SIMPLE_EDGE] llap
+                                    SHUFFLE [RS_52]
+                                      PartitionCols:_col1
+                                      Select Operator [SEL_45] (rows=1025/319 
width=178)
+                                        Output:["_col1"]
+                                        Group By Operator [GBY_44] 
(rows=1025/319 width=178)
+                                          
Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                        <-Union 20 [SIMPLE_EDGE]
+                                          <-Map 23 [CONTAINS] llap
+                                            Reduce Output Operator [RS_43]
+                                              PartitionCols:_col1, _col0
+                                              Select Operator [SEL_39] 
(rows=500/500 width=178)
+                                                Output:["_col0","_col1"]
+                                                Filter Operator [FIL_150] 
(rows=500/500 width=178)
+                                                  predicate:value is not null
+                                                  TableScan [TS_37] 
(rows=500/500 width=178)
+                                                    Output:["key","value"]
+                                          <-Reducer 19 [CONTAINS] llap
+                                            Reduce Output Operator [RS_43]
+                                              PartitionCols:_col1, _col0
+                                              Select Operator [SEL_36] 
(rows=525/319 width=178)
+                                                Output:["_col0","_col1"]
+                                                Group By Operator [GBY_35] 
(rows=525/319 width=178)
+                                                  
Output:["_col0","_col1"],keys:KEY._col0, KEY._col1
+                                                <-Union 18 [SIMPLE_EDGE]
+                                                  <-Map 17 [CONTAINS] llap
+                                                    Reduce Output Operator 
[RS_34]
+                                                      PartitionCols:_col1, 
_col0
+                                                      Select Operator [SEL_27] 
(rows=25/25 width=175)
+                                                        
Output:["_col0","_col1"]
+                                                        Filter Operator 
[FIL_148] (rows=25/25 width=175)
+                                                          predicate:value is 
not null
+                                                          TableScan [TS_25] 
(rows=25/25 width=175)
+                                                            
Output:["key","value"]
+                 

<TRUNCATED>

Reply via email to