You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kg...@apache.org on 2019/07/15 10:41:13 UTC

[hive] 02/05: HIVE-21923: Vectorized MapJoin may miss results when only the join key is selected (Zoltan Haindrich reviewed by Jesus Camacho Rodriguez)

This is an automated email from the ASF dual-hosted git repository.

kgyrtkirk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git

commit 96e8e78e8f7dadbb8527f054c21e2bb5c90fc8c9
Author: Zoltan Haindrich <ki...@rxd.hu>
AuthorDate: Mon Jul 15 11:32:04 2019 +0200

    HIVE-21923: Vectorized MapJoin may miss results when only the join key is selected (Zoltan Haindrich reviewed by Jesus Camacho Rodriguez)
    
    Signed-off-by: Zoltan Haindrich <ki...@rxd.hu>
---
 .../hive/common/format/datetime/package-info.java  |   22 -
 ...rMapJoinInnerBigOnlyGenerateResultOperator.java |    6 +-
 .../clientpositive/hybridgrace_hashjoin_2.q        |   24 +-
 .../llap/correlationoptimizer4.q.out               |    2 +-
 .../llap/hybridgrace_hashjoin_2.q.out              |  228 +-
 .../results/clientpositive/spark/auto_join14.q.out |    2 +-
 .../spark/bucket_map_join_tez1.q.out               | 3056 ++++++++++----------
 .../tez/hybridgrace_hashjoin_2.q.out               |  227 +-
 8 files changed, 1960 insertions(+), 1607 deletions(-)

diff --git a/common/src/test/org/apache/hadoop/hive/common/format/datetime/package-info.java b/common/src/test/org/apache/hadoop/hive/common/format/datetime/package-info.java
deleted file mode 100644
index 70ee426..0000000
--- a/common/src/test/org/apache/hadoop/hive/common/format/datetime/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Tests formatting and parsing of datetime objects.
- */
-package org.apache.hadoop.hive.common.format.datetime;
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyGenerateResultOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyGenerateResultOperator.java
index 35ddddd..ef6ad69 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyGenerateResultOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinInnerBigOnlyGenerateResultOperator.java
@@ -252,12 +252,16 @@ public abstract class VectorMapJoinInnerBigOnlyGenerateResultOperator
 
       for (long l = 0; l < count; l++) {
 
-        // Copy the BigTable values into the overflow batch. Since the overflow batch may
+        // Copy the values into the overflow batch. Since the overflow batch may
         // not get flushed here, we must copy by value.
         if (bigTableRetainedVectorCopy != null) {
           bigTableRetainedVectorCopy.copyByValue(batch, batchIndex,
                                                  overflowBatch, overflowBatch.size);
         }
+        if (nonOuterSmallTableKeyVectorCopy != null) {
+          nonOuterSmallTableKeyVectorCopy.copyByValue(batch, batchIndex,
+              overflowBatch, overflowBatch.size);
+        }
 
         overflowBatch.size++;
         if (overflowBatch.size == overflowBatch.DEFAULT_SIZE) {
diff --git a/ql/src/test/queries/clientpositive/hybridgrace_hashjoin_2.q b/ql/src/test/queries/clientpositive/hybridgrace_hashjoin_2.q
index d989ca7..6ed771b 100644
--- a/ql/src/test/queries/clientpositive/hybridgrace_hashjoin_2.q
+++ b/ql/src/test/queries/clientpositive/hybridgrace_hashjoin_2.q
@@ -4,8 +4,7 @@
 set hive.mapred.mode=nonstrict;
 set hive.explain.user=false;
 -- Hybrid Grace Hash Join
--- Test n-way join
-SELECT 1;
+SELECT 'Test n-way join';
 
 set hive.auto.convert.join=true;
 set hive.auto.convert.join.noconditionaltask=true;
@@ -13,8 +12,7 @@ set hive.auto.convert.join.noconditionaltask.size=10000000;
 set hive.cbo.enable=false;
 
 
--- 3-way mapjoin (1 big table, 2 small tables)
-SELECT 1;
+SELECT '3-way mapjoin (1 big table, 2 small tables)';
 
 set hive.mapjoin.hybridgrace.hashtable=false;
 
@@ -34,13 +32,17 @@ SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN src y ON (y.key = x.key);
 
+EXPLAIN  ANALYZE SELECT COUNT(*)
+FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key);
+
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN src y ON (y.key = x.key);
 
 
--- 4-way mapjoin (1 big table, 3 small tables)
-SELECT 1;
+SELECT '4-way mapjoin (1 big table, 3 small tables)';
 
 set hive.mapjoin.hybridgrace.hashtable=false;
 
@@ -50,7 +52,7 @@ FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key);
 
-SELECT COUNT(*)
+SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key);
@@ -63,14 +65,13 @@ FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key);
 
-SELECT COUNT(*)
+SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key);
 
 
--- 2 sets of 3-way mapjoin under 2 different tasks
-SELECT 1;
+SELECT '2 sets of 3-way mapjoin under 2 different tasks';
 
 set hive.mapjoin.hybridgrace.hashtable=false;
 
@@ -111,8 +112,7 @@ FROM src1 x JOIN srcpart z ON (x.value = z.value)
 JOIN src y ON (y.value = x.value);
 
 
--- A chain of 2 sets of 3-way mapjoin under the same task
-SELECT 1;
+SELECT 'A chain of 2 sets of 3-way mapjoin under the same task';
 
 set hive.mapjoin.hybridgrace.hashtable=false;
 
diff --git a/ql/src/test/results/clientpositive/llap/correlationoptimizer4.q.out b/ql/src/test/results/clientpositive/llap/correlationoptimizer4.q.out
index 45a646c..71aaa10 100644
--- a/ql/src/test/results/clientpositive/llap/correlationoptimizer4.q.out
+++ b/ql/src/test/results/clientpositive/llap/correlationoptimizer4.q.out
@@ -721,7 +721,7 @@ POSTHOOK: Input: default@t1_n146
 POSTHOOK: Input: default@t2_n86
 POSTHOOK: Input: default@t3_n34
 #### A masked pattern was here ####
-5	2
+13	10
 PREHOOK: query: EXPLAIN VECTORIZATION
 SELECT SUM(HASH(tmp.key)), SUM(HASH(tmp.cnt))
 FROM (SELECT x.key AS key, count(1) AS cnt
diff --git a/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_2.q.out b/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_2.q.out
index 1ddc1ea..44c4568 100644
--- a/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_2.q.out
+++ b/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_2.q.out
@@ -1,21 +1,21 @@
-PREHOOK: query: SELECT 1
+PREHOOK: query: SELECT 'Test n-way join'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT 'Test n-way join'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-1
-PREHOOK: query: SELECT 1
+Test n-way join
+PREHOOK: query: SELECT '3-way mapjoin (1 big table, 2 small tables)'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT '3-way mapjoin (1 big table, 2 small tables)'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-1
+3-way mapjoin (1 big table, 2 small tables)
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
@@ -309,6 +309,192 @@ STAGE PLANS:
 
 PREHOOK: query: SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Input: default@src1
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT COUNT(*)
+FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@src1
+POSTHOOK: Input: default@srcpart
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+PREHOOK: query: EXPLAIN  ANALYZE SELECT COUNT(*)
+FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Input: default@src1
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+POSTHOOK: query: EXPLAIN  ANALYZE SELECT COUNT(*)
+FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@src1
+POSTHOOK: Input: default@srcpart
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+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 (BROADCAST_EDGE)
+        Map 3 <- Map 2 (BROADCAST_EDGE), Map 5 (BROADCAST_EDGE)
+        Reducer 4 <- Map 3 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: x
+                  filterExpr: key is not null (type: boolean)
+                  Statistics: Num rows: 25/25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 25/25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
+                    Reduce Output Operator
+                      key expressions: key (type: string)
+                      sort order: +
+                      Map-reduce partition columns: key (type: string)
+                      Statistics: Num rows: 25/25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
+            Execution mode: vectorized, llap
+            LLAP IO: no inputs
+        Map 2 
+            Map Operator Tree:
+                TableScan
+                  alias: z
+                  filterExpr: key is not null (type: boolean)
+                  Statistics: Num rows: 2000/2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 2000/2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
+                    Map Join Operator
+                      condition map:
+                           Inner Join 0 to 1
+                      keys:
+                        0 key (type: string)
+                        1 key (type: string)
+                      outputColumnNames: _col0
+                      input vertices:
+                        0 Map 1
+                      Statistics: Num rows: 158/148 Data size: 13588 Basic stats: COMPLETE Column stats: COMPLETE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: string)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: string)
+                        Statistics: Num rows: 158/148 Data size: 13588 Basic stats: COMPLETE Column stats: COMPLETE
+            Execution mode: vectorized, llap
+            LLAP IO: no inputs
+        Map 3 
+            Map Operator Tree:
+                TableScan
+                  alias: w
+                  filterExpr: key is not null (type: boolean)
+                  Statistics: Num rows: 2000/2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 2000/2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
+                    Map Join Operator
+                      condition map:
+                           Inner Join 0 to 1
+                      keys:
+                        0 _col0 (type: string)
+                        1 key (type: string)
+                      outputColumnNames: _col0
+                      input vertices:
+                        0 Map 2
+                      Statistics: Num rows: 1000/1712 Data size: 86000 Basic stats: COMPLETE Column stats: COMPLETE
+                      Map Join Operator
+                        condition map:
+                             Inner Join 0 to 1
+                        keys:
+                          0 _col0 (type: string)
+                          1 key (type: string)
+                        input vertices:
+                          1 Map 5
+                        Statistics: Num rows: 1582/5680 Data size: 12656 Basic stats: COMPLETE Column stats: COMPLETE
+                        Group By Operator
+                          aggregations: count()
+                          minReductionHashAggr: 0.99
+                          mode: hash
+                          outputColumnNames: _col0
+                          Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                          Reduce Output Operator
+                            sort order: 
+                            Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                            value expressions: _col0 (type: bigint)
+            Execution mode: vectorized, llap
+            LLAP IO: no inputs
+        Map 5 
+            Map Operator Tree:
+                TableScan
+                  alias: y
+                  filterExpr: key is not null (type: boolean)
+                  Statistics: Num rows: 500/500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500/500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+                    Reduce Output Operator
+                      key expressions: key (type: string)
+                      sort order: +
+                      Map-reduce partition columns: key (type: string)
+                      Statistics: Num rows: 500/500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+            Execution mode: vectorized, llap
+            LLAP IO: no inputs
+        Reducer 4 
+            Execution mode: vectorized, llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1/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 src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN src y ON (y.key = x.key)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src
@@ -332,15 +518,15 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 #### A masked pattern was here ####
 428
-PREHOOK: query: SELECT 1
+PREHOOK: query: SELECT '4-way mapjoin (1 big table, 3 small tables)'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT '4-way mapjoin (1 big table, 3 small tables)'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-1
+4-way mapjoin (1 big table, 3 small tables)
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
@@ -503,7 +689,7 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: SELECT COUNT(*)
+PREHOOK: query: SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key)
@@ -516,7 +702,7 @@ PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
 PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT COUNT(*)
+POSTHOOK: query: SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key)
@@ -529,7 +715,7 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 #### A masked pattern was here ####
-0
+NULL
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
@@ -692,7 +878,7 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: SELECT COUNT(*)
+PREHOOK: query: SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key)
@@ -705,7 +891,7 @@ PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
 PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT COUNT(*)
+POSTHOOK: query: SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key)
@@ -718,16 +904,16 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 #### A masked pattern was here ####
-0
-PREHOOK: query: SELECT 1
+NULL
+PREHOOK: query: SELECT '2 sets of 3-way mapjoin under 2 different tasks'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT '2 sets of 3-way mapjoin under 2 different tasks'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-1
+2 sets of 3-way mapjoin under 2 different tasks
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
@@ -1308,15 +1494,15 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 #### A masked pattern was here ####
 452
 428
-PREHOOK: query: SELECT 1
+PREHOOK: query: SELECT 'A chain of 2 sets of 3-way mapjoin under the same task'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT 'A chain of 2 sets of 3-way mapjoin under the same task'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 #### A masked pattern was here ####
-1
+A chain of 2 sets of 3-way mapjoin under the same task
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x
diff --git a/ql/src/test/results/clientpositive/spark/auto_join14.q.out b/ql/src/test/results/clientpositive/spark/auto_join14.q.out
index 0c80c13..64ddc35 100644
--- a/ql/src/test/results/clientpositive/spark/auto_join14.q.out
+++ b/ql/src/test/results/clientpositive/spark/auto_join14.q.out
@@ -139,4 +139,4 @@ POSTHOOK: query: SELECT sum(hash(dest1_n83.c1,dest1_n83.c2)) FROM dest1_n83
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@dest1_n83
 #### A masked pattern was here ####
-404540072956
+404554174174
diff --git a/ql/src/test/results/clientpositive/spark/bucket_map_join_tez1.q.out b/ql/src/test/results/clientpositive/spark/bucket_map_join_tez1.q.out
index 4ee669f..e026131 100644
--- a/ql/src/test/results/clientpositive/spark/bucket_map_join_tez1.q.out
+++ b/ql/src/test/results/clientpositive/spark/bucket_map_join_tez1.q.out
@@ -5146,404 +5146,120 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 0	val_0	val_0
 0	val_0	val_0
 0	val_0	val_0
-0	val_103	val_103
-0	val_103	val_103
-0	val_103	val_103
-0	val_103	val_103
-0	val_118	val_118
-0	val_118	val_118
-0	val_118	val_118
-0	val_118	val_118
-0	val_125	val_125
-0	val_125	val_125
-0	val_125	val_125
-0	val_125	val_125
-0	val_129	val_129
-0	val_129	val_129
-0	val_129	val_129
-0	val_129	val_129
-0	val_134	val_134
-0	val_134	val_134
-0	val_134	val_134
-0	val_134	val_134
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_149	val_149
-0	val_149	val_149
-0	val_149	val_149
-0	val_149	val_149
-0	val_15	val_15
-0	val_15	val_15
-0	val_15	val_15
-0	val_15	val_15
-0	val_152	val_152
-0	val_152	val_152
-0	val_152	val_152
-0	val_152	val_152
-0	val_165	val_165
-0	val_165	val_165
-0	val_165	val_165
-0	val_165	val_165
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_172	val_172
-0	val_172	val_172
-0	val_172	val_172
-0	val_172	val_172
-0	val_174	val_174
-0	val_174	val_174
-0	val_174	val_174
-0	val_174	val_174
-0	val_176	val_176
-0	val_176	val_176
-0	val_176	val_176
-0	val_176	val_176
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_200	val_200
-0	val_200	val_200
-0	val_200	val_200
-0	val_200	val_200
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_213	val_213
-0	val_213	val_213
-0	val_213	val_213
-0	val_213	val_213
-0	val_217	val_217
-0	val_217	val_217
-0	val_217	val_217
-0	val_217	val_217
-0	val_219	val_219
-0	val_219	val_219
-0	val_219	val_219
-0	val_219	val_219
-0	val_224	val_224
-0	val_224	val_224
-0	val_224	val_224
-0	val_224	val_224
-0	val_233	val_233
-0	val_233	val_233
-0	val_233	val_233
-0	val_233	val_233
-0	val_237	val_237
-0	val_237	val_237
-0	val_237	val_237
-0	val_237	val_237
-0	val_239	val_239
-0	val_239	val_239
-0	val_239	val_239
-0	val_239	val_239
-0	val_24	val_24
-0	val_24	val_24
-0	val_24	val_24
-0	val_24	val_24
-0	val_242	val_242
-0	val_242	val_242
-0	val_242	val_242
-0	val_242	val_242
-0	val_255	val_255
-0	val_255	val_255
-0	val_255	val_255
-0	val_255	val_255
-0	val_26	val_26
-0	val_26	val_26
-0	val_26	val_26
-0	val_26	val_26
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_280	val_280
-0	val_280	val_280
-0	val_280	val_280
-0	val_280	val_280
-0	val_282	val_282
-0	val_282	val_282
-0	val_282	val_282
-0	val_282	val_282
-0	val_288	val_288
-0	val_288	val_288
-0	val_288	val_288
-0	val_288	val_288
-0	val_307	val_307
-0	val_307	val_307
-0	val_307	val_307
-0	val_307	val_307
-0	val_309	val_309
-0	val_309	val_309
-0	val_309	val_309
-0	val_309	val_309
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_321	val_321
-0	val_321	val_321
-0	val_321	val_321
-0	val_321	val_321
-0	val_325	val_325
-0	val_325	val_325
-0	val_325	val_325
-0	val_325	val_325
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_367	val_367
-0	val_367	val_367
-0	val_367	val_367
-0	val_367	val_367
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_37	val_37
-0	val_37	val_37
-0	val_37	val_37
-0	val_37	val_37
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_404	val_404
-0	val_404	val_404
-0	val_404	val_404
-0	val_404	val_404
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_413	val_413
-0	val_413	val_413
-0	val_413	val_413
-0	val_413	val_413
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_42	val_42
-0	val_42	val_42
-0	val_42	val_42
-0	val_42	val_42
-0	val_424	val_424
-0	val_424	val_424
-0	val_424	val_424
-0	val_424	val_424
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_439	val_439
-0	val_439	val_439
-0	val_439	val_439
-0	val_439	val_439
-0	val_459	val_459
-0	val_459	val_459
-0	val_459	val_459
-0	val_459	val_459
-0	val_462	val_462
-0	val_462	val_462
-0	val_462	val_462
-0	val_462	val_462
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_51	val_51
-0	val_51	val_51
-0	val_51	val_51
-0	val_51	val_51
-0	val_84	val_84
-0	val_84	val_84
-0	val_84	val_84
-0	val_84	val_84
-0	val_95	val_95
-0	val_95	val_95
-0	val_95	val_95
-0	val_95	val_95
-0	val_97	val_97
-0	val_97	val_97
-0	val_97	val_97
-0	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
 11	val_11	val_11
 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
+15	val_15	val_15
+15	val_15	val_15
+15	val_15	val_15
+15	val_15	val_15
 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
 17	val_17	val_17
 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
 19	val_19	val_19
 190	val_190	val_190
@@ -5552,45 +5268,271 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 196	val_196	val_196
 2	val_2	val_2
 20	val_20	val_20
+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
+24	val_24	val_24
+24	val_24	val_24
+24	val_24	val_24
+24	val_24	val_24
+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
+26	val_26	val_26
+26	val_26	val_26
+26	val_26	val_26
+26	val_26	val_26
 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
 28	val_28	val_28
+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
 33	val_33	val_33
 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
+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
 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
+37	val_37	val_37
+37	val_37	val_37
+37	val_37	val_37
+37	val_37	val_37
 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
 4	val_4	val_4
 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
+42	val_42	val_42
+42	val_42	val_42
+42	val_42	val_42
+42	val_42	val_42
+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
 44	val_44	val_44
 444	val_444	val_444
 446	val_446	val_446
@@ -5598,16 +5540,62 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 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
+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
@@ -5616,7 +5604,19 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 8	val_8	val_8
 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
 PREHOOK: query: explain select a.key, a.value, b.value
         from tab_n8 a join tab_part_n9 b on a.key = b.key and a.value = b.value
 PREHOOK: type: QUERY
@@ -5739,404 +5739,120 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 0	val_0	val_0
 0	val_0	val_0
 0	val_0	val_0
-0	val_103	val_103
-0	val_103	val_103
-0	val_103	val_103
-0	val_103	val_103
-0	val_118	val_118
-0	val_118	val_118
-0	val_118	val_118
-0	val_118	val_118
-0	val_125	val_125
-0	val_125	val_125
-0	val_125	val_125
-0	val_125	val_125
-0	val_129	val_129
-0	val_129	val_129
-0	val_129	val_129
-0	val_129	val_129
-0	val_134	val_134
-0	val_134	val_134
-0	val_134	val_134
-0	val_134	val_134
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_149	val_149
-0	val_149	val_149
-0	val_149	val_149
-0	val_149	val_149
-0	val_15	val_15
-0	val_15	val_15
-0	val_15	val_15
-0	val_15	val_15
-0	val_152	val_152
-0	val_152	val_152
-0	val_152	val_152
-0	val_152	val_152
-0	val_165	val_165
-0	val_165	val_165
-0	val_165	val_165
-0	val_165	val_165
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_172	val_172
-0	val_172	val_172
-0	val_172	val_172
-0	val_172	val_172
-0	val_174	val_174
-0	val_174	val_174
-0	val_174	val_174
-0	val_174	val_174
-0	val_176	val_176
-0	val_176	val_176
-0	val_176	val_176
-0	val_176	val_176
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_200	val_200
-0	val_200	val_200
-0	val_200	val_200
-0	val_200	val_200
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_213	val_213
-0	val_213	val_213
-0	val_213	val_213
-0	val_213	val_213
-0	val_217	val_217
-0	val_217	val_217
-0	val_217	val_217
-0	val_217	val_217
-0	val_219	val_219
-0	val_219	val_219
-0	val_219	val_219
-0	val_219	val_219
-0	val_224	val_224
-0	val_224	val_224
-0	val_224	val_224
-0	val_224	val_224
-0	val_233	val_233
-0	val_233	val_233
-0	val_233	val_233
-0	val_233	val_233
-0	val_237	val_237
-0	val_237	val_237
-0	val_237	val_237
-0	val_237	val_237
-0	val_239	val_239
-0	val_239	val_239
-0	val_239	val_239
-0	val_239	val_239
-0	val_24	val_24
-0	val_24	val_24
-0	val_24	val_24
-0	val_24	val_24
-0	val_242	val_242
-0	val_242	val_242
-0	val_242	val_242
-0	val_242	val_242
-0	val_255	val_255
-0	val_255	val_255
-0	val_255	val_255
-0	val_255	val_255
-0	val_26	val_26
-0	val_26	val_26
-0	val_26	val_26
-0	val_26	val_26
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_280	val_280
-0	val_280	val_280
-0	val_280	val_280
-0	val_280	val_280
-0	val_282	val_282
-0	val_282	val_282
-0	val_282	val_282
-0	val_282	val_282
-0	val_288	val_288
-0	val_288	val_288
-0	val_288	val_288
-0	val_288	val_288
-0	val_307	val_307
-0	val_307	val_307
-0	val_307	val_307
-0	val_307	val_307
-0	val_309	val_309
-0	val_309	val_309
-0	val_309	val_309
-0	val_309	val_309
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_321	val_321
-0	val_321	val_321
-0	val_321	val_321
-0	val_321	val_321
-0	val_325	val_325
-0	val_325	val_325
-0	val_325	val_325
-0	val_325	val_325
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_367	val_367
-0	val_367	val_367
-0	val_367	val_367
-0	val_367	val_367
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_37	val_37
-0	val_37	val_37
-0	val_37	val_37
-0	val_37	val_37
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_404	val_404
-0	val_404	val_404
-0	val_404	val_404
-0	val_404	val_404
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_413	val_413
-0	val_413	val_413
-0	val_413	val_413
-0	val_413	val_413
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_42	val_42
-0	val_42	val_42
-0	val_42	val_42
-0	val_42	val_42
-0	val_424	val_424
-0	val_424	val_424
-0	val_424	val_424
-0	val_424	val_424
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_439	val_439
-0	val_439	val_439
-0	val_439	val_439
-0	val_439	val_439
-0	val_459	val_459
-0	val_459	val_459
-0	val_459	val_459
-0	val_459	val_459
-0	val_462	val_462
-0	val_462	val_462
-0	val_462	val_462
-0	val_462	val_462
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_51	val_51
-0	val_51	val_51
-0	val_51	val_51
-0	val_51	val_51
-0	val_84	val_84
-0	val_84	val_84
-0	val_84	val_84
-0	val_84	val_84
-0	val_95	val_95
-0	val_95	val_95
-0	val_95	val_95
-0	val_95	val_95
-0	val_97	val_97
-0	val_97	val_97
-0	val_97	val_97
-0	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
 11	val_11	val_11
 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
+15	val_15	val_15
+15	val_15	val_15
+15	val_15	val_15
+15	val_15	val_15
 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
 17	val_17	val_17
 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
 19	val_19	val_19
 190	val_190	val_190
@@ -6145,45 +5861,271 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 196	val_196	val_196
 2	val_2	val_2
 20	val_20	val_20
+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
+24	val_24	val_24
+24	val_24	val_24
+24	val_24	val_24
+24	val_24	val_24
+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
+26	val_26	val_26
+26	val_26	val_26
+26	val_26	val_26
+26	val_26	val_26
 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
 28	val_28	val_28
+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
 33	val_33	val_33
 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
+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
 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
+37	val_37	val_37
+37	val_37	val_37
+37	val_37	val_37
+37	val_37	val_37
 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
 4	val_4	val_4
 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
+42	val_42	val_42
+42	val_42	val_42
+42	val_42	val_42
+42	val_42	val_42
+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
 44	val_44	val_44
 444	val_444	val_444
 446	val_446	val_446
@@ -6191,16 +6133,62 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 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
+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
@@ -6209,7 +6197,19 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 8	val_8	val_8
 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
 PREHOOK: query: CREATE TABLE tab2_n4(key int, value string) PARTITIONED BY(ds STRING) STORED AS TEXTFILE
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
@@ -6368,404 +6368,120 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 0	val_0	val_0
 0	val_0	val_0
 0	val_0	val_0
-0	val_103	val_103
-0	val_103	val_103
-0	val_103	val_103
-0	val_103	val_103
-0	val_118	val_118
-0	val_118	val_118
-0	val_118	val_118
-0	val_118	val_118
-0	val_125	val_125
-0	val_125	val_125
-0	val_125	val_125
-0	val_125	val_125
-0	val_129	val_129
-0	val_129	val_129
-0	val_129	val_129
-0	val_129	val_129
-0	val_134	val_134
-0	val_134	val_134
-0	val_134	val_134
-0	val_134	val_134
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_149	val_149
-0	val_149	val_149
-0	val_149	val_149
-0	val_149	val_149
-0	val_15	val_15
-0	val_15	val_15
-0	val_15	val_15
-0	val_15	val_15
-0	val_152	val_152
-0	val_152	val_152
-0	val_152	val_152
-0	val_152	val_152
-0	val_165	val_165
-0	val_165	val_165
-0	val_165	val_165
-0	val_165	val_165
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_172	val_172
-0	val_172	val_172
-0	val_172	val_172
-0	val_172	val_172
-0	val_174	val_174
-0	val_174	val_174
-0	val_174	val_174
-0	val_174	val_174
-0	val_176	val_176
-0	val_176	val_176
-0	val_176	val_176
-0	val_176	val_176
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_200	val_200
-0	val_200	val_200
-0	val_200	val_200
-0	val_200	val_200
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_213	val_213
-0	val_213	val_213
-0	val_213	val_213
-0	val_213	val_213
-0	val_217	val_217
-0	val_217	val_217
-0	val_217	val_217
-0	val_217	val_217
-0	val_219	val_219
-0	val_219	val_219
-0	val_219	val_219
-0	val_219	val_219
-0	val_224	val_224
-0	val_224	val_224
-0	val_224	val_224
-0	val_224	val_224
-0	val_233	val_233
-0	val_233	val_233
-0	val_233	val_233
-0	val_233	val_233
-0	val_237	val_237
-0	val_237	val_237
-0	val_237	val_237
-0	val_237	val_237
-0	val_239	val_239
-0	val_239	val_239
-0	val_239	val_239
-0	val_239	val_239
-0	val_24	val_24
-0	val_24	val_24
-0	val_24	val_24
-0	val_24	val_24
-0	val_242	val_242
-0	val_242	val_242
-0	val_242	val_242
-0	val_242	val_242
-0	val_255	val_255
-0	val_255	val_255
-0	val_255	val_255
-0	val_255	val_255
-0	val_26	val_26
-0	val_26	val_26
-0	val_26	val_26
-0	val_26	val_26
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_280	val_280
-0	val_280	val_280
-0	val_280	val_280
-0	val_280	val_280
-0	val_282	val_282
-0	val_282	val_282
-0	val_282	val_282
-0	val_282	val_282
-0	val_288	val_288
-0	val_288	val_288
-0	val_288	val_288
-0	val_288	val_288
-0	val_307	val_307
-0	val_307	val_307
-0	val_307	val_307
-0	val_307	val_307
-0	val_309	val_309
-0	val_309	val_309
-0	val_309	val_309
-0	val_309	val_309
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_321	val_321
-0	val_321	val_321
-0	val_321	val_321
-0	val_321	val_321
-0	val_325	val_325
-0	val_325	val_325
-0	val_325	val_325
-0	val_325	val_325
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_367	val_367
-0	val_367	val_367
-0	val_367	val_367
-0	val_367	val_367
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_37	val_37
-0	val_37	val_37
-0	val_37	val_37
-0	val_37	val_37
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_404	val_404
-0	val_404	val_404
-0	val_404	val_404
-0	val_404	val_404
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_413	val_413
-0	val_413	val_413
-0	val_413	val_413
-0	val_413	val_413
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_42	val_42
-0	val_42	val_42
-0	val_42	val_42
-0	val_42	val_42
-0	val_424	val_424
-0	val_424	val_424
-0	val_424	val_424
-0	val_424	val_424
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_439	val_439
-0	val_439	val_439
-0	val_439	val_439
-0	val_439	val_439
-0	val_459	val_459
-0	val_459	val_459
-0	val_459	val_459
-0	val_459	val_459
-0	val_462	val_462
-0	val_462	val_462
-0	val_462	val_462
-0	val_462	val_462
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_51	val_51
-0	val_51	val_51
-0	val_51	val_51
-0	val_51	val_51
-0	val_84	val_84
-0	val_84	val_84
-0	val_84	val_84
-0	val_84	val_84
-0	val_95	val_95
-0	val_95	val_95
-0	val_95	val_95
-0	val_95	val_95
-0	val_97	val_97
-0	val_97	val_97
-0	val_97	val_97
-0	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
 11	val_11	val_11
 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
+15	val_15	val_15
+15	val_15	val_15
+15	val_15	val_15
+15	val_15	val_15
 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
 17	val_17	val_17
 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
 19	val_19	val_19
 190	val_190	val_190
@@ -6774,45 +6490,271 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 196	val_196	val_196
 2	val_2	val_2
 20	val_20	val_20
+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
+24	val_24	val_24
+24	val_24	val_24
+24	val_24	val_24
+24	val_24	val_24
+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
+26	val_26	val_26
+26	val_26	val_26
+26	val_26	val_26
+26	val_26	val_26
 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
 28	val_28	val_28
+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
 33	val_33	val_33
 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
+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
 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
+37	val_37	val_37
+37	val_37	val_37
+37	val_37	val_37
+37	val_37	val_37
 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
 4	val_4	val_4
 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
+42	val_42	val_42
+42	val_42	val_42
+42	val_42	val_42
+42	val_42	val_42
+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
 44	val_44	val_44
 444	val_444	val_444
 446	val_446	val_446
@@ -6820,16 +6762,62 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 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
+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
@@ -6838,7 +6826,19 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 8	val_8	val_8
 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
 PREHOOK: query: explain select a.key, a.value, b.value
         from tab2_n4 a join tab_part_n9 b on a.key = b.key and a.value = b.value
 PREHOOK: type: QUERY
@@ -6961,404 +6961,120 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 0	val_0	val_0
 0	val_0	val_0
 0	val_0	val_0
-0	val_103	val_103
-0	val_103	val_103
-0	val_103	val_103
-0	val_103	val_103
-0	val_118	val_118
-0	val_118	val_118
-0	val_118	val_118
-0	val_118	val_118
-0	val_125	val_125
-0	val_125	val_125
-0	val_125	val_125
-0	val_125	val_125
-0	val_129	val_129
-0	val_129	val_129
-0	val_129	val_129
-0	val_129	val_129
-0	val_134	val_134
-0	val_134	val_134
-0	val_134	val_134
-0	val_134	val_134
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_138	val_138
-0	val_149	val_149
-0	val_149	val_149
-0	val_149	val_149
-0	val_149	val_149
-0	val_15	val_15
-0	val_15	val_15
-0	val_15	val_15
-0	val_15	val_15
-0	val_152	val_152
-0	val_152	val_152
-0	val_152	val_152
-0	val_152	val_152
-0	val_165	val_165
-0	val_165	val_165
-0	val_165	val_165
-0	val_165	val_165
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_167	val_167
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_169	val_169
-0	val_172	val_172
-0	val_172	val_172
-0	val_172	val_172
-0	val_172	val_172
-0	val_174	val_174
-0	val_174	val_174
-0	val_174	val_174
-0	val_174	val_174
-0	val_176	val_176
-0	val_176	val_176
-0	val_176	val_176
-0	val_176	val_176
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_187	val_187
-0	val_200	val_200
-0	val_200	val_200
-0	val_200	val_200
-0	val_200	val_200
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_208	val_208
-0	val_213	val_213
-0	val_213	val_213
-0	val_213	val_213
-0	val_213	val_213
-0	val_217	val_217
-0	val_217	val_217
-0	val_217	val_217
-0	val_217	val_217
-0	val_219	val_219
-0	val_219	val_219
-0	val_219	val_219
-0	val_219	val_219
-0	val_224	val_224
-0	val_224	val_224
-0	val_224	val_224
-0	val_224	val_224
-0	val_233	val_233
-0	val_233	val_233
-0	val_233	val_233
-0	val_233	val_233
-0	val_237	val_237
-0	val_237	val_237
-0	val_237	val_237
-0	val_237	val_237
-0	val_239	val_239
-0	val_239	val_239
-0	val_239	val_239
-0	val_239	val_239
-0	val_24	val_24
-0	val_24	val_24
-0	val_24	val_24
-0	val_24	val_24
-0	val_242	val_242
-0	val_242	val_242
-0	val_242	val_242
-0	val_242	val_242
-0	val_255	val_255
-0	val_255	val_255
-0	val_255	val_255
-0	val_255	val_255
-0	val_26	val_26
-0	val_26	val_26
-0	val_26	val_26
-0	val_26	val_26
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_273	val_273
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_277	val_277
-0	val_280	val_280
-0	val_280	val_280
-0	val_280	val_280
-0	val_280	val_280
-0	val_282	val_282
-0	val_282	val_282
-0	val_282	val_282
-0	val_282	val_282
-0	val_288	val_288
-0	val_288	val_288
-0	val_288	val_288
-0	val_288	val_288
-0	val_307	val_307
-0	val_307	val_307
-0	val_307	val_307
-0	val_307	val_307
-0	val_309	val_309
-0	val_309	val_309
-0	val_309	val_309
-0	val_309	val_309
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_316	val_316
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_318	val_318
-0	val_321	val_321
-0	val_321	val_321
-0	val_321	val_321
-0	val_321	val_321
-0	val_325	val_325
-0	val_325	val_325
-0	val_325	val_325
-0	val_325	val_325
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_327	val_327
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_35	val_35
-0	val_367	val_367
-0	val_367	val_367
-0	val_367	val_367
-0	val_367	val_367
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_369	val_369
-0	val_37	val_37
-0	val_37	val_37
-0	val_37	val_37
-0	val_37	val_37
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_396	val_396
-0	val_404	val_404
-0	val_404	val_404
-0	val_404	val_404
-0	val_404	val_404
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_406	val_406
-0	val_413	val_413
-0	val_413	val_413
-0	val_413	val_413
-0	val_413	val_413
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_417	val_417
-0	val_42	val_42
-0	val_42	val_42
-0	val_42	val_42
-0	val_42	val_42
-0	val_424	val_424
-0	val_424	val_424
-0	val_424	val_424
-0	val_424	val_424
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_431	val_431
-0	val_439	val_439
-0	val_439	val_439
-0	val_439	val_439
-0	val_439	val_439
-0	val_459	val_459
-0	val_459	val_459
-0	val_459	val_459
-0	val_459	val_459
-0	val_462	val_462
-0	val_462	val_462
-0	val_462	val_462
-0	val_462	val_462
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_466	val_466
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_468	val_468
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_480	val_480
-0	val_51	val_51
-0	val_51	val_51
-0	val_51	val_51
-0	val_51	val_51
-0	val_84	val_84
-0	val_84	val_84
-0	val_84	val_84
-0	val_84	val_84
-0	val_95	val_95
-0	val_95	val_95
-0	val_95	val_95
-0	val_95	val_95
-0	val_97	val_97
-0	val_97	val_97
-0	val_97	val_97
-0	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
 11	val_11	val_11
 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
+15	val_15	val_15
+15	val_15	val_15
+15	val_15	val_15
+15	val_15	val_15
 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
 17	val_17	val_17
 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
 19	val_19	val_19
 190	val_190	val_190
@@ -7367,45 +7083,271 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 196	val_196	val_196
 2	val_2	val_2
 20	val_20	val_20
+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
+24	val_24	val_24
+24	val_24	val_24
+24	val_24	val_24
+24	val_24	val_24
+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
+26	val_26	val_26
+26	val_26	val_26
+26	val_26	val_26
+26	val_26	val_26
 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
 28	val_28	val_28
+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
 33	val_33	val_33
 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
+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
 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
+37	val_37	val_37
+37	val_37	val_37
+37	val_37	val_37
+37	val_37	val_37
 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
 4	val_4	val_4
 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
+42	val_42	val_42
+42	val_42	val_42
+42	val_42	val_42
+42	val_42	val_42
+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
 44	val_44	val_44
 444	val_444	val_444
 446	val_446	val_446
@@ -7413,16 +7355,62 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 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
+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
@@ -7431,4 +7419,16 @@ POSTHOOK: Input: default@tab_part_n9@ds=2008-04-08
 8	val_8	val_8
 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
diff --git a/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_2.q.out b/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_2.q.out
index 8e9bd05..d5f2e1e 100644
--- a/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_2.q.out
+++ b/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_2.q.out
@@ -1,21 +1,21 @@
-PREHOOK: query: SELECT 1
+PREHOOK: query: SELECT 'Test n-way join'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT 'Test n-way join'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: hdfs://### HDFS PATH ###
-1
-PREHOOK: query: SELECT 1
+Test n-way join
+PREHOOK: query: SELECT '3-way mapjoin (1 big table, 2 small tables)'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT '3-way mapjoin (1 big table, 2 small tables)'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: hdfs://### HDFS PATH ###
-1
+3-way mapjoin (1 big table, 2 small tables)
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
@@ -305,6 +305,191 @@ STAGE PLANS:
 
 PREHOOK: query: SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Input: default@src1
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: SELECT COUNT(*)
+FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@src1
+POSTHOOK: Input: default@srcpart
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+PREHOOK: query: EXPLAIN  ANALYZE SELECT COUNT(*)
+FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Input: default@src1
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: EXPLAIN  ANALYZE SELECT COUNT(*)
+FROM src1 x JOIN srcpart z ON (x.key = z.key)
+JOIN srcpart w ON (x.key = w.key)
+JOIN src y ON (y.key = x.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@src1
+POSTHOOK: Input: default@srcpart
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+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 (BROADCAST_EDGE)
+        Map 3 <- Map 2 (BROADCAST_EDGE), Map 5 (BROADCAST_EDGE)
+        Reducer 4 <- Map 3 (CUSTOM_SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: x
+                  filterExpr: key is not null (type: boolean)
+                  Statistics: Num rows: 25/25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 25/25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
+                    Reduce Output Operator
+                      key expressions: key (type: string)
+                      sort order: +
+                      Map-reduce partition columns: key (type: string)
+                      Statistics: Num rows: 25/25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
+            Execution mode: vectorized
+        Map 2 
+            Map Operator Tree:
+                TableScan
+                  alias: z
+                  filterExpr: key is not null (type: boolean)
+                  Statistics: Num rows: 2000/2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 2000/2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
+                    Map Join Operator
+                      condition map:
+                           Inner Join 0 to 1
+                      keys:
+                        0 key (type: string)
+                        1 key (type: string)
+                      outputColumnNames: _col0
+                      input vertices:
+                        0 Map 1
+                      Statistics: Num rows: 158/148 Data size: 13588 Basic stats: COMPLETE Column stats: COMPLETE
+                      HybridGraceHashJoin: true
+                      Reduce Output Operator
+                        key expressions: _col0 (type: string)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: string)
+                        Statistics: Num rows: 158/148 Data size: 13588 Basic stats: COMPLETE Column stats: COMPLETE
+            Execution mode: vectorized
+        Map 3 
+            Map Operator Tree:
+                TableScan
+                  alias: w
+                  filterExpr: key is not null (type: boolean)
+                  Statistics: Num rows: 2000/2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 2000/2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
+                    Map Join Operator
+                      condition map:
+                           Inner Join 0 to 1
+                      keys:
+                        0 _col0 (type: string)
+                        1 key (type: string)
+                      outputColumnNames: _col0
+                      input vertices:
+                        0 Map 2
+                      Statistics: Num rows: 1000/1712 Data size: 86000 Basic stats: COMPLETE Column stats: COMPLETE
+                      HybridGraceHashJoin: true
+                      Map Join Operator
+                        condition map:
+                             Inner Join 0 to 1
+                        keys:
+                          0 _col0 (type: string)
+                          1 key (type: string)
+                        input vertices:
+                          1 Map 5
+                        Statistics: Num rows: 1582/5680 Data size: 12656 Basic stats: COMPLETE Column stats: COMPLETE
+                        HybridGraceHashJoin: true
+                        Group By Operator
+                          aggregations: count()
+                          minReductionHashAggr: 0.99
+                          mode: hash
+                          outputColumnNames: _col0
+                          Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                          Reduce Output Operator
+                            sort order: 
+                            Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                            value expressions: _col0 (type: bigint)
+            Execution mode: vectorized
+        Map 5 
+            Map Operator Tree:
+                TableScan
+                  alias: y
+                  filterExpr: key is not null (type: boolean)
+                  Statistics: Num rows: 500/500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: key is not null (type: boolean)
+                    Statistics: Num rows: 500/500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+                    Reduce Output Operator
+                      key expressions: key (type: string)
+                      sort order: +
+                      Map-reduce partition columns: key (type: string)
+                      Statistics: Num rows: 500/500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
+            Execution mode: vectorized
+        Reducer 4 
+            Execution mode: vectorized
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1/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 src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN src y ON (y.key = x.key)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@src
@@ -328,15 +513,15 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 POSTHOOK: Output: hdfs://### HDFS PATH ###
 428
-PREHOOK: query: SELECT 1
+PREHOOK: query: SELECT '4-way mapjoin (1 big table, 3 small tables)'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT '4-way mapjoin (1 big table, 3 small tables)'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: hdfs://### HDFS PATH ###
-1
+4-way mapjoin (1 big table, 3 small tables)
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
@@ -495,7 +680,7 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: SELECT COUNT(*)
+PREHOOK: query: SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key)
@@ -508,7 +693,7 @@ PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
 PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: SELECT COUNT(*)
+POSTHOOK: query: SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key)
@@ -521,7 +706,7 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 POSTHOOK: Output: hdfs://### HDFS PATH ###
-0
+NULL
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
@@ -683,7 +868,7 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: SELECT COUNT(*)
+PREHOOK: query: SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key)
@@ -696,7 +881,7 @@ PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
 PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: SELECT COUNT(*)
+POSTHOOK: query: SELECT assert_true(5680 = COUNT(*))
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
 JOIN srcpart w ON (x.key = w.key)
 JOIN src y ON (y.key = x.key)
@@ -709,16 +894,16 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
 POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 POSTHOOK: Output: hdfs://### HDFS PATH ###
-0
-PREHOOK: query: SELECT 1
+NULL
+PREHOOK: query: SELECT '2 sets of 3-way mapjoin under 2 different tasks'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT '2 sets of 3-way mapjoin under 2 different tasks'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: hdfs://### HDFS PATH ###
-1
+2 sets of 3-way mapjoin under 2 different tasks
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x JOIN srcpart z ON (x.key = z.key)
@@ -1291,15 +1476,15 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
 POSTHOOK: Output: hdfs://### HDFS PATH ###
 428
 452
-PREHOOK: query: SELECT 1
+PREHOOK: query: SELECT 'A chain of 2 sets of 3-way mapjoin under the same task'
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: SELECT 1
+POSTHOOK: query: SELECT 'A chain of 2 sets of 3-way mapjoin under the same task'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: hdfs://### HDFS PATH ###
-1
+A chain of 2 sets of 3-way mapjoin under the same task
 PREHOOK: query: EXPLAIN
 SELECT COUNT(*)
 FROM src1 x