http://git-wip-us.apache.org/repos/asf/hive/blob/8cdee629/ql/src/test/results/clientpositive/llap/bucket_map_join_tez1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/bucket_map_join_tez1.q.out 
b/ql/src/test/results/clientpositive/llap/bucket_map_join_tez1.q.out
index f763566..36cb4ac 100644
--- a/ql/src/test/results/clientpositive/llap/bucket_map_join_tez1.q.out
+++ b/ql/src/test/results/clientpositive/llap/bucket_map_join_tez1.q.out
@@ -108,13 +108,69 @@ 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: analyze table srcbucket_mapjoin compute statistics for columns
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcbucket_mapjoin
+PREHOOK: Input: default@srcbucket_mapjoin@ds=2008-04-08
+PREHOOK: Output: default@srcbucket_mapjoin
+PREHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: analyze table srcbucket_mapjoin compute statistics for columns
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcbucket_mapjoin
+POSTHOOK: Input: default@srcbucket_mapjoin@ds=2008-04-08
+POSTHOOK: Output: default@srcbucket_mapjoin
+POSTHOOK: Output: default@srcbucket_mapjoin@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: analyze table srcbucket_mapjoin_part compute statistics for 
columns
+PREHOOK: type: QUERY
+PREHOOK: Input: default@srcbucket_mapjoin_part
+PREHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08
+PREHOOK: Output: default@srcbucket_mapjoin_part
+PREHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: analyze table srcbucket_mapjoin_part compute statistics for 
columns
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@srcbucket_mapjoin_part
+POSTHOOK: Input: default@srcbucket_mapjoin_part@ds=2008-04-08
+POSTHOOK: Output: default@srcbucket_mapjoin_part
+POSTHOOK: Output: default@srcbucket_mapjoin_part@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: analyze table tab compute statistics for columns
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tab
+PREHOOK: Input: default@tab@ds=2008-04-08
+PREHOOK: Output: default@tab
+PREHOOK: Output: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: analyze table tab compute statistics for columns
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tab
+POSTHOOK: Input: default@tab@ds=2008-04-08
+POSTHOOK: Output: default@tab
+POSTHOOK: Output: default@tab@ds=2008-04-08
+#### A masked pattern was here ####
+PREHOOK: query: analyze table tab_part compute statistics for columns
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tab_part
+PREHOOK: Input: default@tab_part@ds=2008-04-08
+PREHOOK: Output: default@tab_part
+PREHOOK: Output: default@tab_part@ds=2008-04-08
+#### A masked pattern was here ####
+POSTHOOK: query: analyze table tab_part compute statistics for columns
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tab_part
+POSTHOOK: Input: default@tab_part@ds=2008-04-08
+POSTHOOK: Output: default@tab_part
+POSTHOOK: Output: default@tab_part@ds=2008-04-08
+#### A masked pattern was here ####
 PREHOOK: query: explain
 select a.key, a.value, b.value
-from tab a join tab_part b on a.key = b.key
+from tab a join tab_part b on a.key = b.key order by a.key, a.value, b.value
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
 select a.key, a.value, b.value
-from tab a join tab_part b on a.key = b.key
+from tab a join tab_part b on a.key = b.key order by a.key, a.value, b.value
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -125,46 +181,47 @@ STAGE PLANS:
     Tez
 #### A masked pattern was here ####
       Edges:
-        Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE)
+        Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
 #### A masked pattern was here ####
       Vertices:
         Map 1 
             Map Operator Tree:
                 TableScan
                   alias: a
-                  Statistics: Num rows: 242 Data size: 45994 Basic stats: 
COMPLETE Column stats: NONE
+                  Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
                   Filter Operator
                     predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 230 Data size: 43713 Basic stats: 
COMPLETE Column stats: NONE
+                    Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
                     Select Operator
                       expressions: key (type: int), value (type: string)
                       outputColumnNames: _col0, _col1
-                      Statistics: Num rows: 230 Data size: 43713 Basic stats: 
COMPLETE Column stats: NONE
+                      Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
-                        Statistics: Num rows: 230 Data size: 43713 Basic 
stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 242 Data size: 22990 Basic 
stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col1 (type: string)
             Execution mode: llap
             LLAP IO: no inputs
-        Map 3 
+        Map 4 
             Map Operator Tree:
                 TableScan
                   alias: b
-                  Statistics: Num rows: 500 Data size: 94800 Basic stats: 
COMPLETE Column stats: NONE
+                  Statistics: Num rows: 500 Data size: 47500 Basic stats: 
COMPLETE Column stats: COMPLETE
                   Filter Operator
                     predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 475 Data size: 90060 Basic stats: 
COMPLETE Column stats: NONE
+                    Statistics: Num rows: 500 Data size: 47500 Basic stats: 
COMPLETE Column stats: COMPLETE
                     Select Operator
                       expressions: key (type: int), value (type: string)
                       outputColumnNames: _col0, _col1
-                      Statistics: Num rows: 475 Data size: 90060 Basic stats: 
COMPLETE Column stats: NONE
+                      Statistics: Num rows: 500 Data size: 47500 Basic stats: 
COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
-                        Statistics: Num rows: 475 Data size: 90060 Basic 
stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 500 Data size: 47500 Basic 
stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col1 (type: string)
             Execution mode: llap
             LLAP IO: no inputs
@@ -178,18 +235,29 @@ STAGE PLANS:
                   0 _col0 (type: int)
                   1 _col0 (type: int)
                 outputColumnNames: _col0, _col1, _col3
-                Statistics: Num rows: 522 Data size: 99066 Basic stats: 
COMPLETE Column stats: NONE
+                Statistics: Num rows: 391 Data size: 72726 Basic stats: 
COMPLETE Column stats: COMPLETE
                 Select Operator
                   expressions: _col0 (type: int), _col1 (type: string), _col3 
(type: string)
                   outputColumnNames: _col0, _col1, _col2
-                  Statistics: Num rows: 522 Data size: 99066 Basic stats: 
COMPLETE Column stats: NONE
-                  File Output Operator
-                    compressed: false
-                    Statistics: Num rows: 522 Data size: 99066 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
+                  Statistics: Num rows: 391 Data size: 72726 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string)
+                    sort order: +++
+                    Statistics: Num rows: 391 Data size: 72726 Basic stats: 
COMPLETE Column stats: COMPLETE
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: int), 
KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string)
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 391 Data size: 72726 Basic stats: 
COMPLETE Column stats: COMPLETE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 391 Data size: 72726 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  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
@@ -197,15 +265,509 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
+PREHOOK: query: select a.key, a.value, b.value
+from tab a join tab_part b on a.key = b.key order by a.key, a.value, b.value
+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 a.key, a.value, b.value
+from tab a join tab_part b on a.key = b.key order by a.key, a.value, b.value
+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 ####
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+2      val_2   val_2
+4      val_4   val_4
+8      val_8   val_8
+11     val_11  val_11
+15     val_15  val_15
+15     val_15  val_15
+15     val_15  val_15
+15     val_15  val_15
+17     val_17  val_17
+19     val_19  val_19
+20     val_20  val_20
+24     val_24  val_24
+24     val_24  val_24
+24     val_24  val_24
+24     val_24  val_24
+26     val_26  val_26
+26     val_26  val_26
+26     val_26  val_26
+26     val_26  val_26
+28     val_28  val_28
+33     val_33  val_33
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+37     val_37  val_37
+37     val_37  val_37
+37     val_37  val_37
+37     val_37  val_37
+42     val_42  val_42
+42     val_42  val_42
+42     val_42  val_42
+42     val_42  val_42
+44     val_44  val_44
+51     val_51  val_51
+51     val_51  val_51
+51     val_51  val_51
+51     val_51  val_51
+53     val_53  val_53
+57     val_57  val_57
+64     val_64  val_64
+66     val_66  val_66
+77     val_77  val_77
+80     val_80  val_80
+82     val_82  val_82
+84     val_84  val_84
+84     val_84  val_84
+84     val_84  val_84
+84     val_84  val_84
+86     val_86  val_86
+95     val_95  val_95
+95     val_95  val_95
+95     val_95  val_95
+95     val_95  val_95
+97     val_97  val_97
+97     val_97  val_97
+97     val_97  val_97
+97     val_97  val_97
+103    val_103 val_103
+103    val_103 val_103
+103    val_103 val_103
+103    val_103 val_103
+105    val_105 val_105
+114    val_114 val_114
+116    val_116 val_116
+118    val_118 val_118
+118    val_118 val_118
+118    val_118 val_118
+118    val_118 val_118
+125    val_125 val_125
+125    val_125 val_125
+125    val_125 val_125
+125    val_125 val_125
+129    val_129 val_129
+129    val_129 val_129
+129    val_129 val_129
+129    val_129 val_129
+134    val_134 val_134
+134    val_134 val_134
+134    val_134 val_134
+134    val_134 val_134
+136    val_136 val_136
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+143    val_143 val_143
+145    val_145 val_145
+149    val_149 val_149
+149    val_149 val_149
+149    val_149 val_149
+149    val_149 val_149
+150    val_150 val_150
+152    val_152 val_152
+152    val_152 val_152
+152    val_152 val_152
+152    val_152 val_152
+156    val_156 val_156
+158    val_158 val_158
+163    val_163 val_163
+165    val_165 val_165
+165    val_165 val_165
+165    val_165 val_165
+165    val_165 val_165
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+170    val_170 val_170
+172    val_172 val_172
+172    val_172 val_172
+172    val_172 val_172
+172    val_172 val_172
+174    val_174 val_174
+174    val_174 val_174
+174    val_174 val_174
+174    val_174 val_174
+176    val_176 val_176
+176    val_176 val_176
+176    val_176 val_176
+176    val_176 val_176
+178    val_178 val_178
+181    val_181 val_181
+183    val_183 val_183
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+189    val_189 val_189
+190    val_190 val_190
+192    val_192 val_192
+194    val_194 val_194
+196    val_196 val_196
+200    val_200 val_200
+200    val_200 val_200
+200    val_200 val_200
+200    val_200 val_200
+202    val_202 val_202
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+213    val_213 val_213
+213    val_213 val_213
+213    val_213 val_213
+213    val_213 val_213
+217    val_217 val_217
+217    val_217 val_217
+217    val_217 val_217
+217    val_217 val_217
+219    val_219 val_219
+219    val_219 val_219
+219    val_219 val_219
+219    val_219 val_219
+222    val_222 val_222
+224    val_224 val_224
+224    val_224 val_224
+224    val_224 val_224
+224    val_224 val_224
+226    val_226 val_226
+228    val_228 val_228
+233    val_233 val_233
+233    val_233 val_233
+233    val_233 val_233
+233    val_233 val_233
+235    val_235 val_235
+237    val_237 val_237
+237    val_237 val_237
+237    val_237 val_237
+237    val_237 val_237
+239    val_239 val_239
+239    val_239 val_239
+239    val_239 val_239
+239    val_239 val_239
+242    val_242 val_242
+242    val_242 val_242
+242    val_242 val_242
+242    val_242 val_242
+244    val_244 val_244
+248    val_248 val_248
+255    val_255 val_255
+255    val_255 val_255
+255    val_255 val_255
+255    val_255 val_255
+257    val_257 val_257
+260    val_260 val_260
+262    val_262 val_262
+266    val_266 val_266
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+275    val_275 val_275
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+280    val_280 val_280
+280    val_280 val_280
+280    val_280 val_280
+280    val_280 val_280
+282    val_282 val_282
+282    val_282 val_282
+282    val_282 val_282
+282    val_282 val_282
+284    val_284 val_284
+286    val_286 val_286
+288    val_288 val_288
+288    val_288 val_288
+288    val_288 val_288
+288    val_288 val_288
+291    val_291 val_291
+305    val_305 val_305
+307    val_307 val_307
+307    val_307 val_307
+307    val_307 val_307
+307    val_307 val_307
+309    val_309 val_309
+309    val_309 val_309
+309    val_309 val_309
+309    val_309 val_309
+310    val_310 val_310
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+321    val_321 val_321
+321    val_321 val_321
+321    val_321 val_321
+321    val_321 val_321
+323    val_323 val_323
+325    val_325 val_325
+325    val_325 val_325
+325    val_325 val_325
+325    val_325 val_325
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+332    val_332 val_332
+336    val_336 val_336
+338    val_338 val_338
+341    val_341 val_341
+345    val_345 val_345
+356    val_356 val_356
+365    val_365 val_365
+367    val_367 val_367
+367    val_367 val_367
+367    val_367 val_367
+367    val_367 val_367
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+374    val_374 val_374
+378    val_378 val_378
+389    val_389 val_389
+392    val_392 val_392
+394    val_394 val_394
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+400    val_400 val_400
+402    val_402 val_402
+404    val_404 val_404
+404    val_404 val_404
+404    val_404 val_404
+404    val_404 val_404
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+411    val_411 val_411
+413    val_413 val_413
+413    val_413 val_413
+413    val_413 val_413
+413    val_413 val_413
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+419    val_419 val_419
+424    val_424 val_424
+424    val_424 val_424
+424    val_424 val_424
+424    val_424 val_424
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+435    val_435 val_435
+437    val_437 val_437
+439    val_439 val_439
+439    val_439 val_439
+439    val_439 val_439
+439    val_439 val_439
+444    val_444 val_444
+446    val_446 val_446
+448    val_448 val_448
+453    val_453 val_453
+455    val_455 val_455
+457    val_457 val_457
+459    val_459 val_459
+459    val_459 val_459
+459    val_459 val_459
+459    val_459 val_459
+460    val_460 val_460
+462    val_462 val_462
+462    val_462 val_462
+462    val_462 val_462
+462    val_462 val_462
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+475    val_475 val_475
+477    val_477 val_477
+479    val_479 val_479
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+482    val_482 val_482
+484    val_484 val_484
+491    val_491 val_491
+493    val_493 val_493
+495    val_495 val_495
+497    val_497 val_497
 PREHOOK: query: explain
-select count(*)
-from 
-(select distinct key, value from tab_part) a join tab b on a.key = b.key
+select a.key, a.value, b.value
+from tab a join tab_part b on a.key = b.key order by a.key, a.value, b.value
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
-select count(*)
-from 
-(select distinct key, value from tab_part) a join tab b on a.key = b.key
+select a.key, a.value, b.value
+from tab a join tab_part b on a.key = b.key order by a.key, a.value, b.value
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -216,90 +778,72 @@ STAGE PLANS:
     Tez
 #### A masked pattern was here ####
       Edges:
-        Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (BROADCAST_EDGE)
-        Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+        Map 2 <- Map 1 (CUSTOM_EDGE)
+        Reducer 3 <- Map 2 (SIMPLE_EDGE)
 #### A masked pattern was here ####
       Vertices:
         Map 1 
             Map Operator Tree:
                 TableScan
-                  alias: tab_part
-                  Statistics: Num rows: 500 Data size: 94800 Basic stats: 
COMPLETE Column stats: NONE
+                  alias: a
+                  Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
                   Filter Operator
                     predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 475 Data size: 90060 Basic stats: 
COMPLETE Column stats: NONE
-                    Group By Operator
-                      keys: key (type: int), value (type: string)
-                      mode: hash
+                    Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int), value (type: string)
                       outputColumnNames: _col0, _col1
-                      Statistics: Num rows: 475 Data size: 90060 Basic stats: 
COMPLETE Column stats: NONE
+                      Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
-                        key expressions: _col0 (type: int), _col1 (type: 
string)
-                        sort order: ++
-                        Map-reduce partition columns: _col0 (type: int), _col1 
(type: string)
-                        Statistics: Num rows: 475 Data size: 90060 Basic 
stats: COMPLETE Column stats: NONE
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 242 Data size: 22990 Basic 
stats: COMPLETE Column stats: COMPLETE
+                        value expressions: _col1 (type: string)
             Execution mode: llap
             LLAP IO: no inputs
-        Map 4 
+        Map 2 
             Map Operator Tree:
                 TableScan
                   alias: b
-                  Statistics: Num rows: 242 Data size: 3490 Basic stats: 
COMPLETE Column stats: NONE
+                  Statistics: Num rows: 500 Data size: 47500 Basic stats: 
COMPLETE Column stats: COMPLETE
                   Filter Operator
                     predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 230 Data size: 3316 Basic stats: 
COMPLETE Column stats: NONE
+                    Statistics: Num rows: 500 Data size: 47500 Basic stats: 
COMPLETE Column stats: COMPLETE
                     Select Operator
-                      expressions: key (type: int)
-                      outputColumnNames: _col0
-                      Statistics: Num rows: 230 Data size: 3316 Basic stats: 
COMPLETE Column stats: NONE
-                      Reduce Output Operator
-                        key expressions: _col0 (type: int)
-                        sort order: +
-                        Map-reduce partition columns: _col0 (type: int)
-                        Statistics: Num rows: 230 Data size: 3316 Basic stats: 
COMPLETE Column stats: NONE
+                      expressions: key (type: int), value (type: string)
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 500 Data size: 47500 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Map Join Operator
+                        condition map:
+                             Inner Join 0 to 1
+                        keys:
+                          0 _col0 (type: int)
+                          1 _col0 (type: int)
+                        outputColumnNames: _col0, _col1, _col3
+                        input vertices:
+                          0 Map 1
+                        Statistics: Num rows: 391 Data size: 72726 Basic 
stats: COMPLETE Column stats: COMPLETE
+                        Select Operator
+                          expressions: _col0 (type: int), _col1 (type: 
string), _col3 (type: string)
+                          outputColumnNames: _col0, _col1, _col2
+                          Statistics: Num rows: 391 Data size: 72726 Basic 
stats: COMPLETE Column stats: COMPLETE
+                          Reduce Output Operator
+                            key expressions: _col0 (type: int), _col1 (type: 
string), _col2 (type: string)
+                            sort order: +++
+                            Statistics: Num rows: 391 Data size: 72726 Basic 
stats: COMPLETE Column stats: COMPLETE
             Execution mode: llap
             LLAP IO: no inputs
-        Reducer 2 
-            Execution mode: llap
-            Reduce Operator Tree:
-              Group By Operator
-                keys: KEY._col0 (type: int), KEY._col1 (type: string)
-                mode: mergepartial
-                outputColumnNames: _col0, _col1
-                Statistics: Num rows: 237 Data size: 44935 Basic stats: 
COMPLETE Column stats: NONE
-                Select Operator
-                  expressions: _col0 (type: int)
-                  outputColumnNames: _col0
-                  Statistics: Num rows: 237 Data size: 44935 Basic stats: 
COMPLETE Column stats: NONE
-                  Map Join Operator
-                    condition map:
-                         Inner Join 0 to 1
-                    keys:
-                      0 _col0 (type: int)
-                      1 _col0 (type: int)
-                    input vertices:
-                      1 Map 4
-                    Statistics: Num rows: 260 Data size: 49428 Basic stats: 
COMPLETE Column stats: NONE
-                    Group By Operator
-                      aggregations: count()
-                      mode: hash
-                      outputColumnNames: _col0
-                      Statistics: Num rows: 1 Data size: 8 Basic stats: 
COMPLETE Column stats: NONE
-                      Reduce Output Operator
-                        sort order: 
-                        Statistics: Num rows: 1 Data size: 8 Basic stats: 
COMPLETE Column stats: NONE
-                        value expressions: _col0 (type: bigint)
         Reducer 3 
             Execution mode: llap
             Reduce Operator Tree:
-              Group By Operator
-                aggregations: count(VALUE._col0)
-                mode: mergepartial
-                outputColumnNames: _col0
-                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: NONE
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: int), 
KEY.reducesinkkey1 (type: string), KEY.reducesinkkey2 (type: string)
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 391 Data size: 72726 Basic stats: 
COMPLETE Column stats: COMPLETE
                 File Output Operator
                   compressed: false
-                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: NONE
+                  Statistics: Num rows: 391 Data size: 72726 Basic stats: 
COMPLETE Column stats: COMPLETE
                   table:
                       input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
                       output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -311,38 +855,511 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select count(*)
-from 
-(select distinct key, value from tab_part) a join tab b on a.key = b.key
+PREHOOK: query: select a.key, a.value, b.value
+from tab a join tab_part b on a.key = b.key order by a.key, a.value, b.value
 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 distinct key, value from tab_part) a join tab b on a.key = b.key
+POSTHOOK: query: select a.key, a.value, b.value
+from tab a join tab_part b on a.key = b.key order by a.key, a.value, b.value
 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 ####
-242
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+0      val_0   val_0
+2      val_2   val_2
+4      val_4   val_4
+8      val_8   val_8
+11     val_11  val_11
+15     val_15  val_15
+15     val_15  val_15
+15     val_15  val_15
+15     val_15  val_15
+17     val_17  val_17
+19     val_19  val_19
+20     val_20  val_20
+24     val_24  val_24
+24     val_24  val_24
+24     val_24  val_24
+24     val_24  val_24
+26     val_26  val_26
+26     val_26  val_26
+26     val_26  val_26
+26     val_26  val_26
+28     val_28  val_28
+33     val_33  val_33
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+35     val_35  val_35
+37     val_37  val_37
+37     val_37  val_37
+37     val_37  val_37
+37     val_37  val_37
+42     val_42  val_42
+42     val_42  val_42
+42     val_42  val_42
+42     val_42  val_42
+44     val_44  val_44
+51     val_51  val_51
+51     val_51  val_51
+51     val_51  val_51
+51     val_51  val_51
+53     val_53  val_53
+57     val_57  val_57
+64     val_64  val_64
+66     val_66  val_66
+77     val_77  val_77
+80     val_80  val_80
+82     val_82  val_82
+84     val_84  val_84
+84     val_84  val_84
+84     val_84  val_84
+84     val_84  val_84
+86     val_86  val_86
+95     val_95  val_95
+95     val_95  val_95
+95     val_95  val_95
+95     val_95  val_95
+97     val_97  val_97
+97     val_97  val_97
+97     val_97  val_97
+97     val_97  val_97
+103    val_103 val_103
+103    val_103 val_103
+103    val_103 val_103
+103    val_103 val_103
+105    val_105 val_105
+114    val_114 val_114
+116    val_116 val_116
+118    val_118 val_118
+118    val_118 val_118
+118    val_118 val_118
+118    val_118 val_118
+125    val_125 val_125
+125    val_125 val_125
+125    val_125 val_125
+125    val_125 val_125
+129    val_129 val_129
+129    val_129 val_129
+129    val_129 val_129
+129    val_129 val_129
+134    val_134 val_134
+134    val_134 val_134
+134    val_134 val_134
+134    val_134 val_134
+136    val_136 val_136
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+138    val_138 val_138
+143    val_143 val_143
+145    val_145 val_145
+149    val_149 val_149
+149    val_149 val_149
+149    val_149 val_149
+149    val_149 val_149
+150    val_150 val_150
+152    val_152 val_152
+152    val_152 val_152
+152    val_152 val_152
+152    val_152 val_152
+156    val_156 val_156
+158    val_158 val_158
+163    val_163 val_163
+165    val_165 val_165
+165    val_165 val_165
+165    val_165 val_165
+165    val_165 val_165
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+167    val_167 val_167
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+169    val_169 val_169
+170    val_170 val_170
+172    val_172 val_172
+172    val_172 val_172
+172    val_172 val_172
+172    val_172 val_172
+174    val_174 val_174
+174    val_174 val_174
+174    val_174 val_174
+174    val_174 val_174
+176    val_176 val_176
+176    val_176 val_176
+176    val_176 val_176
+176    val_176 val_176
+178    val_178 val_178
+181    val_181 val_181
+183    val_183 val_183
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+187    val_187 val_187
+189    val_189 val_189
+190    val_190 val_190
+192    val_192 val_192
+194    val_194 val_194
+196    val_196 val_196
+200    val_200 val_200
+200    val_200 val_200
+200    val_200 val_200
+200    val_200 val_200
+202    val_202 val_202
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+208    val_208 val_208
+213    val_213 val_213
+213    val_213 val_213
+213    val_213 val_213
+213    val_213 val_213
+217    val_217 val_217
+217    val_217 val_217
+217    val_217 val_217
+217    val_217 val_217
+219    val_219 val_219
+219    val_219 val_219
+219    val_219 val_219
+219    val_219 val_219
+222    val_222 val_222
+224    val_224 val_224
+224    val_224 val_224
+224    val_224 val_224
+224    val_224 val_224
+226    val_226 val_226
+228    val_228 val_228
+233    val_233 val_233
+233    val_233 val_233
+233    val_233 val_233
+233    val_233 val_233
+235    val_235 val_235
+237    val_237 val_237
+237    val_237 val_237
+237    val_237 val_237
+237    val_237 val_237
+239    val_239 val_239
+239    val_239 val_239
+239    val_239 val_239
+239    val_239 val_239
+242    val_242 val_242
+242    val_242 val_242
+242    val_242 val_242
+242    val_242 val_242
+244    val_244 val_244
+248    val_248 val_248
+255    val_255 val_255
+255    val_255 val_255
+255    val_255 val_255
+255    val_255 val_255
+257    val_257 val_257
+260    val_260 val_260
+262    val_262 val_262
+266    val_266 val_266
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+273    val_273 val_273
+275    val_275 val_275
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+277    val_277 val_277
+280    val_280 val_280
+280    val_280 val_280
+280    val_280 val_280
+280    val_280 val_280
+282    val_282 val_282
+282    val_282 val_282
+282    val_282 val_282
+282    val_282 val_282
+284    val_284 val_284
+286    val_286 val_286
+288    val_288 val_288
+288    val_288 val_288
+288    val_288 val_288
+288    val_288 val_288
+291    val_291 val_291
+305    val_305 val_305
+307    val_307 val_307
+307    val_307 val_307
+307    val_307 val_307
+307    val_307 val_307
+309    val_309 val_309
+309    val_309 val_309
+309    val_309 val_309
+309    val_309 val_309
+310    val_310 val_310
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+316    val_316 val_316
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+318    val_318 val_318
+321    val_321 val_321
+321    val_321 val_321
+321    val_321 val_321
+321    val_321 val_321
+323    val_323 val_323
+325    val_325 val_325
+325    val_325 val_325
+325    val_325 val_325
+325    val_325 val_325
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+327    val_327 val_327
+332    val_332 val_332
+336    val_336 val_336
+338    val_338 val_338
+341    val_341 val_341
+345    val_345 val_345
+356    val_356 val_356
+365    val_365 val_365
+367    val_367 val_367
+367    val_367 val_367
+367    val_367 val_367
+367    val_367 val_367
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+369    val_369 val_369
+374    val_374 val_374
+378    val_378 val_378
+389    val_389 val_389
+392    val_392 val_392
+394    val_394 val_394
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+396    val_396 val_396
+400    val_400 val_400
+402    val_402 val_402
+404    val_404 val_404
+404    val_404 val_404
+404    val_404 val_404
+404    val_404 val_404
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+406    val_406 val_406
+411    val_411 val_411
+413    val_413 val_413
+413    val_413 val_413
+413    val_413 val_413
+413    val_413 val_413
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+417    val_417 val_417
+419    val_419 val_419
+424    val_424 val_424
+424    val_424 val_424
+424    val_424 val_424
+424    val_424 val_424
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+431    val_431 val_431
+435    val_435 val_435
+437    val_437 val_437
+439    val_439 val_439
+439    val_439 val_439
+439    val_439 val_439
+439    val_439 val_439
+444    val_444 val_444
+446    val_446 val_446
+448    val_448 val_448
+453    val_453 val_453
+455    val_455 val_455
+457    val_457 val_457
+459    val_459 val_459
+459    val_459 val_459
+459    val_459 val_459
+459    val_459 val_459
+460    val_460 val_460
+462    val_462 val_462
+462    val_462 val_462
+462    val_462 val_462
+462    val_462 val_462
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+466    val_466 val_466
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+468    val_468 val_468
+475    val_475 val_475
+477    val_477 val_477
+479    val_479 val_479
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+480    val_480 val_480
+482    val_482 val_482
+484    val_484 val_484
+491    val_491 val_491
+493    val_493 val_493
+495    val_495 val_495
+497    val_497 val_497
 PREHOOK: query: explain
 select count(*)
-from
-(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
-join
-tab_part d on c.key = d.key
+from 
+(select distinct key from tab_part) a join tab b on a.key = b.key
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
 select count(*)
-from
-(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
-join
-tab_part d on c.key = d.key
+from 
+(select distinct key from tab_part) a join tab b on a.key = b.key
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -353,105 +1370,93 @@ STAGE PLANS:
     Tez
 #### A masked pattern was here ####
       Edges:
-        Map 1 <- Map 3 (CUSTOM_EDGE), Map 4 (CUSTOM_EDGE)
-        Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE)
+        Reducer 2 <- Map 1 (SIMPLE_EDGE)
+        Reducer 3 <- Map 5 (SIMPLE_EDGE), Reducer 2 (ONE_TO_ONE_EDGE)
+        Reducer 4 <- Reducer 3 (CUSTOM_SIMPLE_EDGE)
 #### A masked pattern was here ####
       Vertices:
         Map 1 
             Map Operator Tree:
                 TableScan
-                  alias: b
-                  Statistics: Num rows: 500 Data size: 1904 Basic stats: 
COMPLETE Column stats: NONE
-                  Filter Operator
-                    predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
-                    Select Operator
-                      expressions: key (type: int)
-                      outputColumnNames: _col0
-                      Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
-                      Map Join Operator
-                        condition map:
-                             Inner Join 0 to 1
-                        keys:
-                          0 _col0 (type: int)
-                          1 _col0 (type: int)
-                        outputColumnNames: _col1
-                        input vertices:
-                          1 Map 3
-                        Statistics: Num rows: 522 Data size: 1988 Basic stats: 
COMPLETE Column stats: NONE
-                        Select Operator
-                          expressions: _col1 (type: int)
-                          outputColumnNames: _col0
-                          Statistics: Num rows: 522 Data size: 1988 Basic 
stats: COMPLETE Column stats: NONE
-                          Map Join Operator
-                            condition map:
-                                 Inner Join 0 to 1
-                            keys:
-                              0 _col0 (type: int)
-                              1 _col0 (type: int)
-                            input vertices:
-                              1 Map 4
-                            Statistics: Num rows: 574 Data size: 2186 Basic 
stats: COMPLETE Column stats: NONE
-                            Group By Operator
-                              aggregations: count()
-                              mode: hash
-                              outputColumnNames: _col0
-                              Statistics: Num rows: 1 Data size: 8 Basic 
stats: COMPLETE Column stats: NONE
-                              Reduce Output Operator
-                                sort order: 
-                                Statistics: Num rows: 1 Data size: 8 Basic 
stats: COMPLETE Column stats: NONE
-                                value expressions: _col0 (type: bigint)
-            Execution mode: llap
-            LLAP IO: no inputs
-        Map 3 
-            Map Operator Tree:
-                TableScan
-                  alias: a
-                  Statistics: Num rows: 242 Data size: 924 Basic stats: 
COMPLETE Column stats: NONE
+                  alias: tab_part
+                  Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
                   Filter Operator
                     predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 230 Data size: 878 Basic stats: 
COMPLETE Column stats: NONE
-                    Select Operator
-                      expressions: key (type: int)
+                    Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Group By Operator
+                      keys: key (type: int)
+                      mode: hash
                       outputColumnNames: _col0
-                      Statistics: Num rows: 230 Data size: 878 Basic stats: 
COMPLETE Column stats: NONE
+                      Statistics: Num rows: 250 Data size: 1000 Basic stats: 
COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
-                        Statistics: Num rows: 230 Data size: 878 Basic stats: 
COMPLETE Column stats: NONE
+                        Statistics: Num rows: 250 Data size: 1000 Basic stats: 
COMPLETE Column stats: COMPLETE
             Execution mode: llap
             LLAP IO: no inputs
-        Map 4 
+        Map 5 
             Map Operator Tree:
                 TableScan
-                  alias: d
-                  Statistics: Num rows: 500 Data size: 1904 Basic stats: 
COMPLETE Column stats: NONE
+                  alias: b
+                  Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
                   Filter Operator
                     predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
+                    Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
                     Select Operator
                       expressions: key (type: int)
                       outputColumnNames: _col0
-                      Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
+                      Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
-                        Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
+                        Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
             Execution mode: llap
             LLAP IO: no inputs
         Reducer 2 
             Execution mode: llap
             Reduce Operator Tree:
               Group By Operator
+                keys: KEY._col0 (type: int)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 250 Data size: 1000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                Reduce Output Operator
+                  key expressions: _col0 (type: int)
+                  sort order: +
+                  Map-reduce partition columns: _col0 (type: int)
+                  Statistics: Num rows: 250 Data size: 1000 Basic stats: 
COMPLETE Column stats: COMPLETE
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Merge Join Operator
+                condition map:
+                     Inner Join 0 to 1
+                keys:
+                  0 _col0 (type: int)
+                  1 _col0 (type: int)
+                Statistics: Num rows: 195 Data size: 1560 Basic stats: 
COMPLETE Column stats: COMPLETE
+                Group By Operator
+                  aggregations: count()
+                  mode: hash
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  Reduce Output Operator
+                    sort order: 
+                    Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                    value expressions: _col0 (type: bigint)
+        Reducer 4 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
                 aggregations: count(VALUE._col0)
                 mode: mergepartial
                 outputColumnNames: _col0
-                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: NONE
+                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
                 File Output Operator
                   compressed: false
-                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
                   table:
                       input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
                       output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -464,10 +1469,8 @@ STAGE PLANS:
         ListSink
 
 PREHOOK: query: select count(*)
-from
-(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
-join
-tab_part d on c.key = d.key
+from 
+(select distinct key from tab_part) a join tab b on a.key = b.key
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tab
 PREHOOK: Input: default@tab@ds=2008-04-08
@@ -475,30 +1478,24 @@ 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 a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
-join
-tab_part d on c.key = d.key
+from 
+(select distinct key from tab_part) a join tab 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 ####
-1166
+242
 PREHOOK: query: explain
 select count(*)
 from
-tab_part d
-join
-(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.key
+(select distinct key from tab_part) a join tab b on a.key = b.key
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
 select count(*)
 from
-tab_part d
-join
-(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.key
+(select distinct key from tab_part) a join tab b on a.key = b.key
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -509,22 +1506,329 @@ STAGE PLANS:
     Tez
 #### A masked pattern was here ####
       Edges:
-        Map 1 <- Map 3 (CUSTOM_EDGE), Map 4 (CUSTOM_EDGE)
-        Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE)
+        Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (CUSTOM_SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
 #### A masked pattern was here ####
       Vertices:
         Map 1 
             Map Operator Tree:
                 TableScan
+                  alias: tab_part
+                  Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Group By Operator
+                      keys: key (type: int)
+                      mode: hash
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 250 Data size: 1000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 250 Data size: 1000 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: llap
+            LLAP IO: no inputs
+        Map 4 
+            Map Operator Tree:
+                TableScan
                   alias: b
-                  Statistics: Num rows: 500 Data size: 1904 Basic stats: 
COMPLETE Column stats: NONE
+                  Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
                   Filter Operator
                     predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
+                    Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
                     Select Operator
                       expressions: key (type: int)
                       outputColumnNames: _col0
-                      Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
+                      Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: llap
+            LLAP IO: no inputs
+        Reducer 2 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                keys: KEY._col0 (type: int)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 250 Data size: 1000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                Map Join Operator
+                  condition map:
+                       Inner Join 0 to 1
+                  keys:
+                    0 _col0 (type: int)
+                    1 _col0 (type: int)
+                  input vertices:
+                    1 Map 4
+                  Statistics: Num rows: 195 Data size: 1560 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Group By Operator
+                    aggregations: count()
+                    mode: hash
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                    Reduce Output Operator
+                      sort order: 
+                      Statistics: Num rows: 1 Data size: 8 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      value expressions: _col0 (type: bigint)
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  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 count(*)
+from
+(select distinct key from tab_part) a join tab 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 distinct key from tab_part) a join tab 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 ####
+242
+PREHOOK: query: explain
+select count(*)
+from
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
+join
+tab_part d on c.key = d.key
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select count(*)
+from
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
+join
+tab_part d on c.key = d.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), Reducer 4 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+        Reducer 4 <- Map 1 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: d
+                  Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: llap
+            LLAP IO: no inputs
+        Map 5 
+            Map Operator Tree:
+                TableScan
+                  alias: a
+                  Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+            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 _col0 (type: int)
+                  1 _col0 (type: int)
+                Statistics: Num rows: 632 Data size: 5056 Basic stats: 
COMPLETE Column stats: COMPLETE
+                Group By Operator
+                  aggregations: count()
+                  mode: hash
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  Reduce Output Operator
+                    sort order: 
+                    Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                    value expressions: _col0 (type: bigint)
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  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
+        Reducer 4 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Merge Join Operator
+                condition map:
+                     Inner Join 0 to 1
+                keys:
+                  0 _col0 (type: int)
+                  1 _col0 (type: int)
+                outputColumnNames: _col1
+                Statistics: Num rows: 391 Data size: 1564 Basic stats: 
COMPLETE Column stats: COMPLETE
+                Select Operator
+                  expressions: _col1 (type: int)
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 391 Data size: 1564 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: int)
+                    sort order: +
+                    Map-reduce partition columns: _col0 (type: int)
+                    Statistics: Num rows: 391 Data size: 1564 Basic stats: 
COMPLETE Column stats: COMPLETE
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select count(*)
+from
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
+join
+tab_part d on c.key = d.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 a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
+join
+tab_part d on c.key = d.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 ####
+1166
+PREHOOK: query: explain
+select count(*)
+from
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
+join
+tab_part d on c.key = d.key
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select count(*)
+from
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
+join
+tab_part d on c.key = d.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:
+        Map 2 <- Map 1 (CUSTOM_EDGE), Map 4 (CUSTOM_EDGE)
+        Reducer 3 <- Map 2 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: d
+                  Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: llap
+            LLAP IO: no inputs
+        Map 2 
+            Map Operator Tree:
+                TableScan
+                  alias: b
+                  Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
                       Map Join Operator
                         condition map:
                              Inner Join 0 to 1
@@ -533,12 +1837,12 @@ STAGE PLANS:
                           1 _col0 (type: int)
                         outputColumnNames: _col1
                         input vertices:
-                          1 Map 3
-                        Statistics: Num rows: 522 Data size: 1988 Basic stats: 
COMPLETE Column stats: NONE
+                          1 Map 4
+                        Statistics: Num rows: 391 Data size: 1564 Basic stats: 
COMPLETE Column stats: COMPLETE
                         Select Operator
                           expressions: _col1 (type: int)
                           outputColumnNames: _col0
-                          Statistics: Num rows: 522 Data size: 1988 Basic 
stats: COMPLETE Column stats: NONE
+                          Statistics: Num rows: 391 Data size: 1564 Basic 
stats: COMPLETE Column stats: COMPLETE
                           Map Join Operator
                             condition map:
                                  Inner Join 0 to 1
@@ -546,68 +1850,49 @@ STAGE PLANS:
                               0 _col0 (type: int)
                               1 _col0 (type: int)
                             input vertices:
-                              1 Map 4
-                            Statistics: Num rows: 574 Data size: 2186 Basic 
stats: COMPLETE Column stats: NONE
+                              0 Map 1
+                            Statistics: Num rows: 632 Data size: 5056 Basic 
stats: COMPLETE Column stats: COMPLETE
                             Group By Operator
                               aggregations: count()
                               mode: hash
                               outputColumnNames: _col0
-                              Statistics: Num rows: 1 Data size: 8 Basic 
stats: COMPLETE Column stats: NONE
+                              Statistics: Num rows: 1 Data size: 8 Basic 
stats: COMPLETE Column stats: COMPLETE
                               Reduce Output Operator
                                 sort order: 
-                                Statistics: Num rows: 1 Data size: 8 Basic 
stats: COMPLETE Column stats: NONE
+                                Statistics: Num rows: 1 Data size: 8 Basic 
stats: COMPLETE Column stats: COMPLETE
                                 value expressions: _col0 (type: bigint)
             Execution mode: llap
             LLAP IO: no inputs
-        Map 3 
-            Map Operator Tree:
-                TableScan
-                  alias: a
-                  Statistics: Num rows: 242 Data size: 924 Basic stats: 
COMPLETE Column stats: NONE
-                  Filter Operator
-                    predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 230 Data size: 878 Basic stats: 
COMPLETE Column stats: NONE
-                    Select Operator
-                      expressions: key (type: int)
-                      outputColumnNames: _col0
-                      Statistics: Num rows: 230 Data size: 878 Basic stats: 
COMPLETE Column stats: NONE
-                      Reduce Output Operator
-                        key expressions: _col0 (type: int)
-                        sort order: +
-                        Map-reduce partition columns: _col0 (type: int)
-                        Statistics: Num rows: 230 Data size: 878 Basic stats: 
COMPLETE Column stats: NONE
-            Execution mode: llap
-            LLAP IO: no inputs
         Map 4 
             Map Operator Tree:
                 TableScan
-                  alias: d
-                  Statistics: Num rows: 500 Data size: 1904 Basic stats: 
COMPLETE Column stats: NONE
+                  alias: a
+                  Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
                   Filter Operator
                     predicate: key is not null (type: boolean)
-                    Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
+                    Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
                     Select Operator
                       expressions: key (type: int)
                       outputColumnNames: _col0
-                      Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
+                      Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
-                        Statistics: Num rows: 475 Data size: 1808 Basic stats: 
COMPLETE Column stats: NONE
+                        Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
             Execution mode: llap
             LLAP IO: no inputs
-        Reducer 2 
+        Reducer 3 
             Execution mode: llap
             Reduce Operator Tree:
               Group By Operator
                 aggregations: count(VALUE._col0)
                 mode: mergepartial
                 outputColumnNames: _col0
-                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: NONE
+                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
                 File Output Operator
                   compressed: false
-                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
                   table:
                       input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
                       output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
@@ -621,9 +1906,9 @@ STAGE PLANS:
 
 PREHOOK: query: select count(*)
 from
-tab_part d
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
 join
-(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.key
+tab_part d on c.key = d.key
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tab
 PREHOOK: Input: default@tab@ds=2008-04-08
@@ -632,9 +1917,9 @@ PREHOOK: Input: default@tab_part@ds=2008-04-08
 #### A masked pattern was here ####
 POSTHOOK: query: select count(*)
 from
-tab_part d
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c
 join
-(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.key
+tab_part d on c.key = d.key
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tab
 POSTHOOK: Input: default@tab@ds=2008-04-08
@@ -643,14 +1928,1243 @@ POSTHOOK: Input: default@tab_part@ds=2008-04-08
 #### A masked pattern was here ####
 1166
 PREHOOK: query: explain
-select a.k1, a.v1, b.value
-from (select sum(substr(srcbucket_mapjoin.value,5)) as v1, key as k1 from 
srcbucket_mapjoin GROUP BY srcbucket_mapjoin.key) a
+select count(*)
+from
+tab_part d
+join
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.key
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select count(*)
+from
+tab_part d
+join
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.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), Reducer 4 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+        Reducer 4 <- Map 1 (SIMPLE_EDGE), Map 5 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: d
+                  Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: llap
+            LLAP IO: no inputs
+        Map 5 
+            Map Operator Tree:
+                TableScan
+                  alias: a
+                  Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+            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 _col0 (type: int)
+                  1 _col0 (type: int)
+                Statistics: Num rows: 632 Data size: 5056 Basic stats: 
COMPLETE Column stats: COMPLETE
+                Group By Operator
+                  aggregations: count()
+                  mode: hash
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  Reduce Output Operator
+                    sort order: 
+                    Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                    value expressions: _col0 (type: bigint)
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  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
+        Reducer 4 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Merge Join Operator
+                condition map:
+                     Inner Join 0 to 1
+                keys:
+                  0 _col0 (type: int)
+                  1 _col0 (type: int)
+                outputColumnNames: _col1
+                Statistics: Num rows: 391 Data size: 1564 Basic stats: 
COMPLETE Column stats: COMPLETE
+                Select Operator
+                  expressions: _col1 (type: int)
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 391 Data size: 1564 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: int)
+                    sort order: +
+                    Map-reduce partition columns: _col0 (type: int)
+                    Statistics: Num rows: 391 Data size: 1564 Basic stats: 
COMPLETE Column stats: COMPLETE
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select count(*)
+from
+tab_part d
+join
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.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
+tab_part d
+join
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.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 ####
+1166
+PREHOOK: query: explain
+select count(*)
+from
+tab_part d
+join
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.key
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select count(*)
+from
+tab_part d
+join
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.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:
+        Map 2 <- Map 1 (CUSTOM_EDGE), Map 4 (CUSTOM_EDGE)
+        Reducer 3 <- Map 2 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: d
+                  Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: llap
+            LLAP IO: no inputs
+        Map 2 
+            Map Operator Tree:
+                TableScan
+                  alias: b
+                  Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 500 Data size: 2000 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Map Join Operator
+                        condition map:
+                             Inner Join 0 to 1
+                        keys:
+                          0 _col0 (type: int)
+                          1 _col0 (type: int)
+                        outputColumnNames: _col1
+                        input vertices:
+                          1 Map 4
+                        Statistics: Num rows: 391 Data size: 1564 Basic stats: 
COMPLETE Column stats: COMPLETE
+                        Select Operator
+                          expressions: _col1 (type: int)
+                          outputColumnNames: _col0
+                          Statistics: Num rows: 391 Data size: 1564 Basic 
stats: COMPLETE Column stats: COMPLETE
+                          Map Join Operator
+                            condition map:
+                                 Inner Join 0 to 1
+                            keys:
+                              0 _col0 (type: int)
+                              1 _col0 (type: int)
+                            input vertices:
+                              0 Map 1
+                            Statistics: Num rows: 632 Data size: 5056 Basic 
stats: COMPLETE Column stats: COMPLETE
+                            Group By Operator
+                              aggregations: count()
+                              mode: hash
+                              outputColumnNames: _col0
+                              Statistics: Num rows: 1 Data size: 8 Basic 
stats: COMPLETE Column stats: COMPLETE
+                              Reduce Output Operator
+                                sort order: 
+                                Statistics: Num rows: 1 Data size: 8 Basic 
stats: COMPLETE Column stats: COMPLETE
+                                value expressions: _col0 (type: bigint)
+            Execution mode: llap
+            LLAP IO: no inputs
+        Map 4 
+            Map Operator Tree:
+                TableScan
+                  alias: a
+                  Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 242 Data size: 968 Basic stats: 
COMPLETE Column stats: COMPLETE
+            Execution mode: llap
+            LLAP IO: no inputs
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
+                  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 count(*)
+from
+tab_part d
+join
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.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
+tab_part d
+join
+(select a.key as key, a.value as value from tab a join tab_part b on a.key = 
b.key) c on c.key = d.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 ####
+1166
+PREHOOK: query: explain
+select a.k1, a.v1, b.value
+from (select sum(substr(srcbucket_mapjoin.value,5)) as v1, key as k1 from 
srcbucket_mapjoin GROUP BY srcbucket_mapjoin.key) a
+join tab b on a.k1 = b.key
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select a.k1, a.v1, b.value
+from (select sum(substr(srcbucket_mapjoin.value,5)) as v1, key as k1 from 
srcbucket_mapjoin GROUP BY srcbucket_mapjoin.key) a
+join tab b on a.k1 = b.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)
+        Reducer 3 <- Map 4 (SIMPLE_EDGE), Reducer 2 (ONE_TO_ONE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: srcbucket_mapjoin
+                  Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int), substr(value, 5) (type: 
string)
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Group By Operator
+                        aggregations: sum(_col1)
+                        keys: _col0 (type: int)
+                        mode: hash
+                        outputColumnNames: _col0, _col1
+                        Statistics: Num rows: 121 Data size: 1452 Basic stats: 
COMPLETE Column stats: COMPLETE
+                        Reduce Output Operator
+                          key expressions: _col0 (type: int)
+                          sort order: +
+                          Map-reduce partition columns: _col0 (type: int)
+                          Statistics: Num rows: 121 Data size: 1452 Basic 
stats: COMPLETE Column stats: COMPLETE
+                          value expressions: _col1 (type: double)
+            Execution mode: llap
+            LLAP IO: no inputs
+        Map 4 
+            Map Operator Tree:
+                TableScan
+                  alias: b
+                  Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: key (type: int), value (type: string)
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 242 Data size: 22990 Basic stats: 
COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        St

<TRUNCATED>

Reply via email to