HIVE-20612: Create new join multi-key correlation flag for CBO (Jesus Camacho 
Rodriguez, reviewed by Ashutosh Chauhan)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0f7163fa
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0f7163fa
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0f7163fa

Branch: refs/heads/master
Commit: 0f7163fad61745276f5b8e1eaa797ba297810780
Parents: 3a26cd9
Author: Jesus Camacho Rodriguez <[email protected]>
Authored: Sat Sep 22 12:50:10 2018 -0700
Committer: Jesus Camacho Rodriguez <[email protected]>
Committed: Sun Sep 23 13:05:38 2018 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/conf/HiveConf.java   |    4 +
 .../hadoop/hive/ql/parse/CalcitePlanner.java    |    2 +-
 .../clientpositive/join_alt_syntax.q.out        |  280 +++--
 .../clientpositive/join_cond_pushdown_2.q.out   |  116 +-
 .../clientpositive/join_cond_pushdown_4.q.out   |  116 +-
 .../join_cond_pushdown_unqual2.q.out            |  116 +-
 .../join_cond_pushdown_unqual4.q.out            |  116 +-
 .../clientpositive/perf/spark/query17.q.out     |  306 ++---
 .../clientpositive/perf/spark/query24.q.out     |  282 ++---
 .../clientpositive/perf/spark/query25.q.out     |  270 ++---
 .../clientpositive/perf/spark/query29.q.out     |  184 +--
 .../clientpositive/perf/spark/query50.q.out     |  120 +-
 .../clientpositive/perf/spark/query54.q.out     |  226 ++--
 .../clientpositive/perf/spark/query72.q.out     |  362 +++---
 .../clientpositive/perf/spark/query85.q.out     |  240 ++--
 .../clientpositive/perf/tez/query17.q.out       |  401 +++----
 .../clientpositive/perf/tez/query24.q.out       |  384 +++----
 .../clientpositive/perf/tez/query25.q.out       |  407 +++----
 .../clientpositive/perf/tez/query29.q.out       |  406 +++----
 .../clientpositive/perf/tez/query50.q.out       |  212 ++--
 .../clientpositive/perf/tez/query54.q.out       |  553 ++++-----
 .../clientpositive/perf/tez/query64.q.out       | 1084 +++++++++---------
 .../clientpositive/perf/tez/query72.q.out       |  286 ++---
 .../clientpositive/perf/tez/query85.q.out       |  272 ++---
 .../clientpositive/spark/join_alt_syntax.q.out  |  232 ++--
 .../spark/join_cond_pushdown_2.q.out            |   96 +-
 .../spark/join_cond_pushdown_4.q.out            |   96 +-
 .../spark/join_cond_pushdown_unqual2.q.out      |  102 +-
 .../spark/join_cond_pushdown_unqual4.q.out      |  102 +-
 29 files changed, 3678 insertions(+), 3695 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/0f7163fa/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java 
b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index 8a561e5..348e07b 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -1628,6 +1628,10 @@ public class HiveConf extends Configuration {
                                                                  + " expressed 
as multiple of Local FS read cost"),
     HIVE_CBO_SHOW_WARNINGS("hive.cbo.show.warnings", true,
          "Toggle display of CBO warnings like missing column stats"),
+    
HIVE_CBO_STATS_CORRELATED_MULTI_KEY_JOINS("hive.cbo.stats.correlated.multi.key.joins",
 false,
+        "When CBO estimates output rows for a join involving multiple columns, 
the default behavior assumes" +
+            "the columns are independent. Setting this flag to true will cause 
the estimator to assume" +
+            "the columns are correlated."),
     AGGR_JOIN_TRANSPOSE("hive.transpose.aggr.join", false, "push aggregates 
through join"),
     SEMIJOIN_CONVERSION("hive.optimize.semijoin.conversion", true, "convert 
group by followed by inner equi join into semijoin"),
     HIVE_COLUMN_ALIGNMENT("hive.order.columnalignment", true, "Flag to control 
whether we want to try to align" +

http://git-wip-us.apache.org/repos/asf/hive/blob/0f7163fa/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java 
b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
index ab5848a..5cd6a5d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
@@ -412,7 +412,7 @@ public class CalcitePlanner extends SemanticAnalyzer {
         CalciteConnectionProperty.MATERIALIZATIONS_ENABLED.camelName(),
         Boolean.FALSE.toString());
     CalciteConnectionConfig calciteConfig = new 
CalciteConnectionConfigImpl(calciteConfigProperties);
-    boolean isCorrelatedColumns = HiveConf.getBoolVar(conf, 
HiveConf.ConfVars.HIVE_STATS_CORRELATED_MULTI_KEY_JOINS);
+    boolean isCorrelatedColumns = HiveConf.getBoolVar(conf, 
HiveConf.ConfVars.HIVE_CBO_STATS_CORRELATED_MULTI_KEY_JOINS);
     boolean heuristicMaterializationStrategy = HiveConf.getVar(conf,
         
HiveConf.ConfVars.HIVE_MATERIALIZED_VIEW_REWRITING_SELECTION_STRATEGY).equals("heuristic");
     HivePlannerContext confContext = new HivePlannerContext(algorithmsConf, 
registry, calciteConfig,

http://git-wip-us.apache.org/repos/asf/hive/blob/0f7163fa/ql/src/test/results/clientpositive/join_alt_syntax.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/join_alt_syntax.q.out 
b/ql/src/test/results/clientpositive/join_alt_syntax.q.out
index 57a9109..20a0ebc 100644
--- a/ql/src/test/results/clientpositive/join_alt_syntax.q.out
+++ b/ql/src/test/results/clientpositive/join_alt_syntax.q.out
@@ -364,9 +364,9 @@ where p2.p_name = p3.p_name and p1.p_partkey = p4.p_partkey
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-2 depends on stages: Stage-1, Stage-4
-  Stage-4 is a root stage
-  Stage-0 depends on stages: Stage-2
+  Stage-2 depends on stages: Stage-1
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-3
 
 STAGE PLANS:
   Stage: Stage-1
@@ -384,35 +384,33 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col0 (type: int)
-                  sort order: +
-                  Map-reduce partition columns: _col0 (type: int)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col1 (type: string)
           TableScan
-            alias: p4
-            filterExpr: p_partkey is not null (type: boolean)
+            alias: p2
+            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
             Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: p_partkey is not null (type: boolean)
+              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
               Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: p_partkey (type: int), p_name (type: string)
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col0 (type: int)
-                  sort order: +
-                  Map-reduce partition columns: _col0 (type: int)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col1 (type: string)
       Reduce Operator Tree:
         Join Operator
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col0 (type: int)
-            1 _col0 (type: int)
+            0 _col1 (type: string), _col0 (type: int)
+            1 _col1 (type: string), _col0 (type: int)
           outputColumnNames: _col0, _col1, _col3
           Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
           File Output Operator
@@ -427,59 +425,11 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
-              key expressions: _col0 (type: int), _col1 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col0 (type: int), _col1 (type: 
string)
-              Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
-              value expressions: _col3 (type: string)
-          TableScan
-            Reduce Output Operator
-              key expressions: _col0 (type: int), _col1 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col0 (type: int), _col1 (type: 
string)
+              key expressions: _col3 (type: string)
+              sort order: +
+              Map-reduce partition columns: _col3 (type: string)
               Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
-              value expressions: _col2 (type: string)
-      Reduce Operator Tree:
-        Join Operator
-          condition map:
-               Inner Join 0 to 1
-          keys:
-            0 _col0 (type: int), _col1 (type: string)
-            1 _col0 (type: int), _col1 (type: string)
-          outputColumnNames: _col1, _col3, _col5, _col6
-          Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-          Select Operator
-            expressions: _col1 (type: string), _col5 (type: string), _col6 
(type: string), _col3 (type: string)
-            outputColumnNames: _col0, _col1, _col2, _col3
-            Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-            File Output Operator
-              compressed: false
-              Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-              table:
-                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
-                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
-
-  Stage: Stage-4
-    Map Reduce
-      Map Operator Tree:
-          TableScan
-            alias: p2
-            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
-            Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
-            Filter Operator
-              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
-              Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
-              Select Operator
-                expressions: p_partkey (type: int), p_name (type: string)
-                outputColumnNames: _col0, _col1
-                Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
-                Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
-                  Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col0 (type: int)
+              value expressions: _col0 (type: int), _col1 (type: string)
           TableScan
             alias: p3
             filterExpr: p_name is not null (type: boolean)
@@ -501,10 +451,10 @@ STAGE PLANS:
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col1 (type: string)
+            0 _col3 (type: string)
             1 _col0 (type: string)
-          outputColumnNames: _col0, _col1, _col2
-          Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
+          outputColumnNames: _col0, _col1, _col3, _col4
+          Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
           File Output Operator
             compressed: false
             table:
@@ -512,6 +462,54 @@ STAGE PLANS:
                 output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
                 serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
 
+  Stage: Stage-3
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: int)
+              sort order: +
+              Map-reduce partition columns: _col0 (type: int)
+              Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
+              value expressions: _col1 (type: string), _col3 (type: string), 
_col4 (type: string)
+          TableScan
+            alias: p4
+            filterExpr: p_partkey is not null (type: boolean)
+            Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+            Filter Operator
+              predicate: p_partkey is not null (type: boolean)
+              Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+              Select Operator
+                expressions: p_partkey (type: int), p_name (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: int)
+                  sort order: +
+                  Map-reduce partition columns: _col0 (type: int)
+                  Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
+                  value expressions: _col1 (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 _col0 (type: int)
+            1 _col0 (type: int)
+          outputColumnNames: _col1, _col3, _col4, _col6
+          Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
+          Select Operator
+            expressions: _col1 (type: string), _col3 (type: string), _col4 
(type: string), _col6 (type: string)
+            outputColumnNames: _col0, _col1, _col2, _col3
+            Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
+              table:
+                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
   Stage: Stage-0
     Fetch Operator
       limit: -1
@@ -530,9 +528,9 @@ where p2.p_name = p3.p_name and p1.p_partkey = p4.p_partkey
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-2 depends on stages: Stage-1, Stage-4
-  Stage-4 is a root stage
-  Stage-0 depends on stages: Stage-2
+  Stage-2 depends on stages: Stage-1
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-3
 
 STAGE PLANS:
   Stage: Stage-1
@@ -550,35 +548,33 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col0 (type: int)
-                  sort order: +
-                  Map-reduce partition columns: _col0 (type: int)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col1 (type: string)
           TableScan
-            alias: p4
-            filterExpr: p_partkey is not null (type: boolean)
+            alias: p2
+            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
             Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: p_partkey is not null (type: boolean)
+              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
               Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: p_partkey (type: int), p_name (type: string)
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col0 (type: int)
-                  sort order: +
-                  Map-reduce partition columns: _col0 (type: int)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col1 (type: string)
       Reduce Operator Tree:
         Join Operator
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col0 (type: int)
-            1 _col0 (type: int)
+            0 _col1 (type: string), _col0 (type: int)
+            1 _col1 (type: string), _col0 (type: int)
           outputColumnNames: _col0, _col1, _col3
           Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
           File Output Operator
@@ -593,59 +589,11 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
-              key expressions: _col0 (type: int), _col1 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col0 (type: int), _col1 (type: 
string)
-              Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
-              value expressions: _col3 (type: string)
-          TableScan
-            Reduce Output Operator
-              key expressions: _col0 (type: int), _col1 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col0 (type: int), _col1 (type: 
string)
+              key expressions: _col3 (type: string)
+              sort order: +
+              Map-reduce partition columns: _col3 (type: string)
               Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
-              value expressions: _col2 (type: string)
-      Reduce Operator Tree:
-        Join Operator
-          condition map:
-               Inner Join 0 to 1
-          keys:
-            0 _col0 (type: int), _col1 (type: string)
-            1 _col0 (type: int), _col1 (type: string)
-          outputColumnNames: _col1, _col3, _col5, _col6
-          Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-          Select Operator
-            expressions: _col1 (type: string), _col5 (type: string), _col6 
(type: string), _col3 (type: string)
-            outputColumnNames: _col0, _col1, _col2, _col3
-            Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-            File Output Operator
-              compressed: false
-              Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-              table:
-                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
-                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
-
-  Stage: Stage-4
-    Map Reduce
-      Map Operator Tree:
-          TableScan
-            alias: p2
-            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
-            Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
-            Filter Operator
-              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
-              Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
-              Select Operator
-                expressions: p_partkey (type: int), p_name (type: string)
-                outputColumnNames: _col0, _col1
-                Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
-                Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
-                  Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col0 (type: int)
+              value expressions: _col0 (type: int), _col1 (type: string)
           TableScan
             alias: p3
             filterExpr: p_name is not null (type: boolean)
@@ -667,10 +615,10 @@ STAGE PLANS:
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col1 (type: string)
+            0 _col3 (type: string)
             1 _col0 (type: string)
-          outputColumnNames: _col0, _col1, _col2
-          Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
+          outputColumnNames: _col0, _col1, _col3, _col4
+          Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
           File Output Operator
             compressed: false
             table:
@@ -678,6 +626,54 @@ STAGE PLANS:
                 output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
                 serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
 
+  Stage: Stage-3
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: int)
+              sort order: +
+              Map-reduce partition columns: _col0 (type: int)
+              Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
+              value expressions: _col1 (type: string), _col3 (type: string), 
_col4 (type: string)
+          TableScan
+            alias: p4
+            filterExpr: p_partkey is not null (type: boolean)
+            Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+            Filter Operator
+              predicate: p_partkey is not null (type: boolean)
+              Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+              Select Operator
+                expressions: p_partkey (type: int), p_name (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: int)
+                  sort order: +
+                  Map-reduce partition columns: _col0 (type: int)
+                  Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
+                  value expressions: _col1 (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 _col0 (type: int)
+            1 _col0 (type: int)
+          outputColumnNames: _col1, _col3, _col4, _col6
+          Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
+          Select Operator
+            expressions: _col1 (type: string), _col3 (type: string), _col4 
(type: string), _col6 (type: string)
+            outputColumnNames: _col0, _col1, _col2, _col3
+            Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
+              table:
+                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
   Stage: Stage-0
     Fetch Operator
       limit: -1

http://git-wip-us.apache.org/repos/asf/hive/blob/0f7163fa/ql/src/test/results/clientpositive/join_cond_pushdown_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/join_cond_pushdown_2.q.out 
b/ql/src/test/results/clientpositive/join_cond_pushdown_2.q.out
index 741b11f..e1a4c99 100644
--- a/ql/src/test/results/clientpositive/join_cond_pushdown_2.q.out
+++ b/ql/src/test/results/clientpositive/join_cond_pushdown_2.q.out
@@ -146,31 +146,31 @@ from part p1 join part p2 join part p3 on p2.p_name = 
p1.p_name join part p4 on
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-2 depends on stages: Stage-1, Stage-4
-  Stage-4 is a root stage
-  Stage-0 depends on stages: Stage-2
+  Stage-2 depends on stages: Stage-1
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-3
 
 STAGE PLANS:
   Stage: Stage-1
     Map Reduce
       Map Operator Tree:
           TableScan
-            alias: p3
-            filterExpr: p_name is not null (type: boolean)
+            alias: p1
+            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
             Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: p_name is not null (type: boolean)
+              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
               Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: p_partkey (type: int), p_name (type: string), 
p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size 
(type: int), p_container (type: string), p_retailprice (type: double), 
p_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
           TableScan
             alias: p2
             filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
@@ -183,18 +183,18 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
       Reduce Operator Tree:
         Join Operator
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col1 (type: string)
-            1 _col1 (type: string)
+            0 _col1 (type: string), _col0 (type: int)
+            1 _col1 (type: string), _col0 (type: int)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17
           Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
           File Output Operator
@@ -209,59 +209,54 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
-              key expressions: _col9 (type: int), _col10 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col9 (type: int), _col10 (type: 
string)
+              key expressions: _col10 (type: string)
+              sort order: +
+              Map-reduce partition columns: _col10 (type: string)
               Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
-              value expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: 
int), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col11 
(type: string), _col12 (type: string), _col13 (type: string), _col14 (type: 
int), _col15 (type: string), _col16 (type: double), _col17 (type: string)
+              value expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: 
int), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col9 
(type: int), _col11 (type: string), _col12 (type: string), _col13 (type: 
string), _col14 (type: int), _col15 (type: string), _col16 (type: double), 
_col17 (type: string)
           TableScan
-            Reduce Output Operator
-              key expressions: _col0 (type: int), _col1 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col0 (type: int), _col1 (type: 
string)
-              Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
-              value expressions: _col2 (type: string), _col3 (type: string), 
_col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: 
double), _col8 (type: string), _col9 (type: int), _col10 (type: string), _col11 
(type: string), _col12 (type: string), _col13 (type: string), _col14 (type: 
int), _col15 (type: string), _col16 (type: double), _col17 (type: string)
-      Reduce Operator Tree:
-        Join Operator
-          condition map:
-               Inner Join 0 to 1
-          keys:
-            0 _col9 (type: int), _col10 (type: string)
-            1 _col0 (type: int), _col1 (type: string)
-          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, 
_col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
-          Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-          Select Operator
-            expressions: _col18 (type: int), _col19 (type: string), _col20 
(type: string), _col21 (type: string), _col22 (type: string), _col23 (type: 
int), _col24 (type: string), _col25 (type: double), _col26 (type: string), 
_col9 (type: int), _col10 (type: string), _col11 (type: string), _col12 (type: 
string), _col13 (type: string), _col14 (type: int), _col15 (type: string), 
_col16 (type: double), _col17 (type: string), _col0 (type: int), _col1 (type: 
string), _col2 (type: string), _col3 (type: string), _col4 (type: string), 
_col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: 
string), _col27 (type: int), _col28 (type: string), _col29 (type: string), 
_col30 (type: string), _col31 (type: string), _col32 (type: int), _col33 (type: 
string), _col34 (type: double), _col35 (type: string)
-            outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, 
_col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, 
_col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
-            Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-            File Output Operator
-              compressed: false
-              Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-              table:
-                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
-                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
-
-  Stage: Stage-4
-    Map Reduce
-      Map Operator Tree:
-          TableScan
-            alias: p1
-            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
+            alias: p3
+            filterExpr: p_name is not null (type: boolean)
             Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
+              predicate: p_name is not null (type: boolean)
               Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: p_partkey (type: int), p_name (type: string), 
p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size 
(type: int), p_container (type: string), p_retailprice (type: double), 
p_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col0 (type: int)
+                  key expressions: _col1 (type: string)
                   sort order: +
-                  Map-reduce partition columns: _col0 (type: int)
+                  Map-reduce partition columns: _col1 (type: string)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col1 (type: string), _col2 (type: 
string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 
(type: string), _col7 (type: double), _col8 (type: string)
+                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 _col10 (type: string)
+            1 _col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26
+          Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-3
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: int)
+              sort order: +
+              Map-reduce partition columns: _col0 (type: int)
+              Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
+              value expressions: _col1 (type: string), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string), _col9 (type: int), _col10 
(type: string), _col11 (type: string), _col12 (type: string), _col13 (type: 
string), _col14 (type: int), _col15 (type: string), _col16 (type: double), 
_col17 (type: string), _col18 (type: int), _col19 (type: string), _col20 (type: 
string), _col21 (type: string), _col22 (type: string), _col23 (type: int), 
_col24 (type: string), _col25 (type: double), _col26 (type: string)
           TableScan
             alias: p4
             filterExpr: p_partkey is not null (type: boolean)
@@ -286,14 +281,15 @@ STAGE PLANS:
           keys:
             0 _col0 (type: int)
             1 _col0 (type: int)
-          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17
-          Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, 
_col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
+          Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
           File Output Operator
             compressed: false
+            Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
             table:
                 input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                 output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
 
   Stage: Stage-0
     Fetch Operator

http://git-wip-us.apache.org/repos/asf/hive/blob/0f7163fa/ql/src/test/results/clientpositive/join_cond_pushdown_4.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/join_cond_pushdown_4.q.out 
b/ql/src/test/results/clientpositive/join_cond_pushdown_4.q.out
index f35d397..b12f0b4 100644
--- a/ql/src/test/results/clientpositive/join_cond_pushdown_4.q.out
+++ b/ql/src/test/results/clientpositive/join_cond_pushdown_4.q.out
@@ -150,31 +150,31 @@ where p2.p_name = p3.p_name and p1.p_partkey = 
p4.p_partkey
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-2 depends on stages: Stage-1, Stage-4
-  Stage-4 is a root stage
-  Stage-0 depends on stages: Stage-2
+  Stage-2 depends on stages: Stage-1
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-3
 
 STAGE PLANS:
   Stage: Stage-1
     Map Reduce
       Map Operator Tree:
           TableScan
-            alias: p3
-            filterExpr: p_name is not null (type: boolean)
+            alias: p1
+            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
             Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: p_name is not null (type: boolean)
+              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
               Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: p_partkey (type: int), p_name (type: string), 
p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size 
(type: int), p_container (type: string), p_retailprice (type: double), 
p_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
           TableScan
             alias: p2
             filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
@@ -187,18 +187,18 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
       Reduce Operator Tree:
         Join Operator
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col1 (type: string)
-            1 _col1 (type: string)
+            0 _col1 (type: string), _col0 (type: int)
+            1 _col1 (type: string), _col0 (type: int)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17
           Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
           File Output Operator
@@ -213,59 +213,54 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
-              key expressions: _col9 (type: int), _col10 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col9 (type: int), _col10 (type: 
string)
+              key expressions: _col10 (type: string)
+              sort order: +
+              Map-reduce partition columns: _col10 (type: string)
               Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
-              value expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: 
int), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col11 
(type: string), _col12 (type: string), _col13 (type: string), _col14 (type: 
int), _col15 (type: string), _col16 (type: double), _col17 (type: string)
+              value expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: 
int), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col9 
(type: int), _col11 (type: string), _col12 (type: string), _col13 (type: 
string), _col14 (type: int), _col15 (type: string), _col16 (type: double), 
_col17 (type: string)
           TableScan
-            Reduce Output Operator
-              key expressions: _col0 (type: int), _col1 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col0 (type: int), _col1 (type: 
string)
-              Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
-              value expressions: _col2 (type: string), _col3 (type: string), 
_col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: 
double), _col8 (type: string), _col9 (type: int), _col10 (type: string), _col11 
(type: string), _col12 (type: string), _col13 (type: string), _col14 (type: 
int), _col15 (type: string), _col16 (type: double), _col17 (type: string)
-      Reduce Operator Tree:
-        Join Operator
-          condition map:
-               Inner Join 0 to 1
-          keys:
-            0 _col9 (type: int), _col10 (type: string)
-            1 _col0 (type: int), _col1 (type: string)
-          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, 
_col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
-          Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-          Select Operator
-            expressions: _col18 (type: int), _col19 (type: string), _col20 
(type: string), _col21 (type: string), _col22 (type: string), _col23 (type: 
int), _col24 (type: string), _col25 (type: double), _col26 (type: string), 
_col9 (type: int), _col10 (type: string), _col11 (type: string), _col12 (type: 
string), _col13 (type: string), _col14 (type: int), _col15 (type: string), 
_col16 (type: double), _col17 (type: string), _col0 (type: int), _col1 (type: 
string), _col2 (type: string), _col3 (type: string), _col4 (type: string), 
_col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: 
string), _col27 (type: int), _col28 (type: string), _col29 (type: string), 
_col30 (type: string), _col31 (type: string), _col32 (type: int), _col33 (type: 
string), _col34 (type: double), _col35 (type: string)
-            outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, 
_col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, 
_col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
-            Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-            File Output Operator
-              compressed: false
-              Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
-              table:
-                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
-                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
-
-  Stage: Stage-4
-    Map Reduce
-      Map Operator Tree:
-          TableScan
-            alias: p1
-            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
+            alias: p3
+            filterExpr: p_name is not null (type: boolean)
             Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
+              predicate: p_name is not null (type: boolean)
               Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: p_partkey (type: int), p_name (type: string), 
p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size 
(type: int), p_container (type: string), p_retailprice (type: double), 
p_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
                 Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col0 (type: int)
+                  key expressions: _col1 (type: string)
                   sort order: +
-                  Map-reduce partition columns: _col0 (type: int)
+                  Map-reduce partition columns: _col1 (type: string)
                   Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col1 (type: string), _col2 (type: 
string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 
(type: string), _col7 (type: double), _col8 (type: string)
+                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 _col10 (type: string)
+            1 _col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26
+          Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-3
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: int)
+              sort order: +
+              Map-reduce partition columns: _col0 (type: int)
+              Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE 
Column stats: NONE
+              value expressions: _col1 (type: string), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string), _col9 (type: int), _col10 
(type: string), _col11 (type: string), _col12 (type: string), _col13 (type: 
string), _col14 (type: int), _col15 (type: string), _col16 (type: double), 
_col17 (type: string), _col18 (type: int), _col19 (type: string), _col20 (type: 
string), _col21 (type: string), _col22 (type: string), _col23 (type: int), 
_col24 (type: string), _col25 (type: double), _col26 (type: string)
           TableScan
             alias: p4
             filterExpr: p_partkey is not null (type: boolean)
@@ -290,14 +285,15 @@ STAGE PLANS:
           keys:
             0 _col0 (type: int)
             1 _col0 (type: int)
-          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17
-          Statistics: Num rows: 28 Data size: 3461 Basic stats: COMPLETE 
Column stats: NONE
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, 
_col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
+          Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
           File Output Operator
             compressed: false
+            Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE 
Column stats: NONE
             table:
                 input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                 output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
 
   Stage: Stage-0
     Fetch Operator

http://git-wip-us.apache.org/repos/asf/hive/blob/0f7163fa/ql/src/test/results/clientpositive/join_cond_pushdown_unqual2.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/join_cond_pushdown_unqual2.q.out 
b/ql/src/test/results/clientpositive/join_cond_pushdown_unqual2.q.out
index 3d6af2d..536390b 100644
--- a/ql/src/test/results/clientpositive/join_cond_pushdown_unqual2.q.out
+++ b/ql/src/test/results/clientpositive/join_cond_pushdown_unqual2.q.out
@@ -186,48 +186,48 @@ STAGE PLANS:
     Map Reduce
       Map Operator Tree:
           TableScan
-            alias: p2
-            filterExpr: (p2_name is not null and p2_partkey is not null) 
(type: boolean)
-            Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+            alias: p1
+            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
+            Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: (p2_name is not null and p2_partkey is not null) 
(type: boolean)
-              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
+              Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
-                expressions: p2_partkey (type: int), p2_name (type: string), 
p2_mfgr (type: string), p2_brand (type: string), p2_type (type: string), 
p2_size (type: int), p2_container (type: string), p2_retailprice (type: 
double), p2_comment (type: string)
+                expressions: p_partkey (type: int), p_name (type: string), 
p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size 
(type: int), p_container (type: string), p_retailprice (type: double), 
p_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
-                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
-                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
-                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
+                  Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
+                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
           TableScan
-            alias: p3
-            filterExpr: p3_name is not null (type: boolean)
+            alias: p2
+            filterExpr: (p2_name is not null and p2_partkey is not null) 
(type: boolean)
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: p3_name is not null (type: boolean)
+              predicate: (p2_name is not null and p2_partkey is not null) 
(type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
-                expressions: p3_partkey (type: int), p3_name (type: string), 
p3_mfgr (type: string), p3_brand (type: string), p3_type (type: string), 
p3_size (type: int), p3_container (type: string), p3_retailprice (type: 
double), p3_comment (type: string)
+                expressions: p2_partkey (type: int), p2_name (type: string), 
p2_mfgr (type: string), p2_brand (type: string), p2_type (type: string), 
p2_size (type: int), p2_container (type: string), p2_retailprice (type: 
double), p2_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
                 Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
-                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
       Reduce Operator Tree:
         Join Operator
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col1 (type: string)
-            1 _col1 (type: string)
+            0 _col1 (type: string), _col0 (type: int)
+            1 _col1 (type: string), _col0 (type: int)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17
-          Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+          Statistics: Num rows: 28 Data size: 3461 Basic stats: PARTIAL Column 
stats: NONE
           File Output Operator
             compressed: false
             table:
@@ -240,37 +240,37 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
-              key expressions: _col0 (type: int), _col1 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col0 (type: int), _col1 (type: 
string)
-              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
-              value expressions: _col2 (type: string), _col3 (type: string), 
_col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: 
double), _col8 (type: string), _col9 (type: int), _col10 (type: string), _col11 
(type: string), _col12 (type: string), _col13 (type: string), _col14 (type: 
int), _col15 (type: string), _col16 (type: double), _col17 (type: string)
+              key expressions: _col10 (type: string)
+              sort order: +
+              Map-reduce partition columns: _col10 (type: string)
+              Statistics: Num rows: 28 Data size: 3461 Basic stats: PARTIAL 
Column stats: NONE
+              value expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: 
int), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col9 
(type: int), _col11 (type: string), _col12 (type: string), _col13 (type: 
string), _col14 (type: int), _col15 (type: string), _col16 (type: double), 
_col17 (type: string)
           TableScan
-            alias: p1
-            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
-            Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+            alias: p3
+            filterExpr: p3_name is not null (type: boolean)
+            Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
-              Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+              predicate: p3_name is not null (type: boolean)
+              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
-                expressions: p_partkey (type: int), p_name (type: string), 
p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size 
(type: int), p_container (type: string), p_retailprice (type: double), 
p_comment (type: string)
+                expressions: p3_partkey (type: int), p3_name (type: string), 
p3_mfgr (type: string), p3_brand (type: string), p3_type (type: string), 
p3_size (type: int), p3_container (type: string), p3_retailprice (type: 
double), p3_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
-                Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col0 (type: int), _col1 (type: string)
-                  sort order: ++
-                  Map-reduce partition columns: _col0 (type: int), _col1 
(type: string)
-                  Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
+                  key expressions: _col1 (type: string)
+                  sort order: +
+                  Map-reduce partition columns: _col1 (type: string)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
       Reduce Operator Tree:
         Join Operator
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col0 (type: int), _col1 (type: string)
-            1 _col0 (type: int), _col1 (type: string)
+            0 _col10 (type: string)
+            1 _col1 (type: string)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26
-          Statistics: Num rows: 28 Data size: 3461 Basic stats: PARTIAL Column 
stats: NONE
+          Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL Column 
stats: NONE
           File Output Operator
             compressed: false
             table:
@@ -283,11 +283,11 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
-              key expressions: _col18 (type: int)
+              key expressions: _col0 (type: int)
               sort order: +
-              Map-reduce partition columns: _col18 (type: int)
-              Statistics: Num rows: 28 Data size: 3461 Basic stats: PARTIAL 
Column stats: NONE
-              value expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: 
int), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col9 
(type: int), _col10 (type: string), _col11 (type: string), _col12 (type: 
string), _col13 (type: string), _col14 (type: int), _col15 (type: string), 
_col16 (type: double), _col17 (type: string), _col19 (type: string), _col20 
(type: string), _col21 (type: string), _col22 (type: string), _col23 (type: 
int), _col24 (type: string), _col25 (type: double), _col26 (type: string)
+              Map-reduce partition columns: _col0 (type: int)
+              Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL 
Column stats: NONE
+              value expressions: _col1 (type: string), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string), _col9 (type: int), _col10 
(type: string), _col11 (type: string), _col12 (type: string), _col13 (type: 
string), _col14 (type: int), _col15 (type: string), _col16 (type: double), 
_col17 (type: string), _col18 (type: int), _col19 (type: string), _col20 (type: 
string), _col21 (type: string), _col22 (type: string), _col23 (type: int), 
_col24 (type: string), _col25 (type: double), _col26 (type: string)
           TableScan
             alias: p4
             filterExpr: p_partkey is not null (type: boolean)
@@ -310,21 +310,17 @@ STAGE PLANS:
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col18 (type: int)
+            0 _col0 (type: int)
             1 _col0 (type: int)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, 
_col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
-          Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL Column 
stats: NONE
-          Select Operator
-            expressions: _col18 (type: int), _col19 (type: string), _col20 
(type: string), _col21 (type: string), _col22 (type: string), _col23 (type: 
int), _col24 (type: string), _col25 (type: double), _col26 (type: string), 
_col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string), _col9 (type: int), _col10 (type: string), 
_col11 (type: string), _col12 (type: string), _col13 (type: string), _col14 
(type: int), _col15 (type: string), _col16 (type: double), _col17 (type: 
string), _col27 (type: int), _col28 (type: string), _col29 (type: string), 
_col30 (type: string), _col31 (type: string), _col32 (type: int), _col33 (type: 
string), _col34 (type: double), _col35 (type: string)
-            outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, 
_col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, 
_col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
-            Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL 
Column stats: NONE
-            File Output Operator
-              compressed: false
-              Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL 
Column stats: NONE
-              table:
-                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
-                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+          Statistics: Num rows: 33 Data size: 4187 Basic stats: PARTIAL Column 
stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 33 Data size: 4187 Basic stats: PARTIAL 
Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
 
   Stage: Stage-0
     Fetch Operator

http://git-wip-us.apache.org/repos/asf/hive/blob/0f7163fa/ql/src/test/results/clientpositive/join_cond_pushdown_unqual4.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/join_cond_pushdown_unqual4.q.out 
b/ql/src/test/results/clientpositive/join_cond_pushdown_unqual4.q.out
index a7dfc2c..b9327e3 100644
--- a/ql/src/test/results/clientpositive/join_cond_pushdown_unqual4.q.out
+++ b/ql/src/test/results/clientpositive/join_cond_pushdown_unqual4.q.out
@@ -190,48 +190,48 @@ STAGE PLANS:
     Map Reduce
       Map Operator Tree:
           TableScan
-            alias: p2
-            filterExpr: (p2_name is not null and p2_partkey is not null) 
(type: boolean)
-            Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+            alias: p1
+            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
+            Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: (p2_name is not null and p2_partkey is not null) 
(type: boolean)
-              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
+              Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
-                expressions: p2_partkey (type: int), p2_name (type: string), 
p2_mfgr (type: string), p2_brand (type: string), p2_type (type: string), 
p2_size (type: int), p2_container (type: string), p2_retailprice (type: 
double), p2_comment (type: string)
+                expressions: p_partkey (type: int), p_name (type: string), 
p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size 
(type: int), p_container (type: string), p_retailprice (type: double), 
p_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
-                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
-                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
-                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
+                  Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
+                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
           TableScan
-            alias: p3
-            filterExpr: p3_name is not null (type: boolean)
+            alias: p2
+            filterExpr: (p2_name is not null and p2_partkey is not null) 
(type: boolean)
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: p3_name is not null (type: boolean)
+              predicate: (p2_name is not null and p2_partkey is not null) 
(type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
-                expressions: p3_partkey (type: int), p3_name (type: string), 
p3_mfgr (type: string), p3_brand (type: string), p3_type (type: string), 
p3_size (type: int), p3_container (type: string), p3_retailprice (type: 
double), p3_comment (type: string)
+                expressions: p2_partkey (type: int), p2_name (type: string), 
p2_mfgr (type: string), p2_brand (type: string), p2_type (type: string), 
p2_size (type: int), p2_container (type: string), p2_retailprice (type: 
double), p2_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
                 Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col1 (type: string)
-                  sort order: +
-                  Map-reduce partition columns: _col1 (type: string)
+                  key expressions: _col1 (type: string), _col0 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: string), _col0 
(type: int)
                   Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
-                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
+                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
       Reduce Operator Tree:
         Join Operator
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col1 (type: string)
-            1 _col1 (type: string)
+            0 _col1 (type: string), _col0 (type: int)
+            1 _col1 (type: string), _col0 (type: int)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17
-          Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+          Statistics: Num rows: 28 Data size: 3461 Basic stats: PARTIAL Column 
stats: NONE
           File Output Operator
             compressed: false
             table:
@@ -244,37 +244,37 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
-              key expressions: _col0 (type: int), _col1 (type: string)
-              sort order: ++
-              Map-reduce partition columns: _col0 (type: int), _col1 (type: 
string)
-              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
-              value expressions: _col2 (type: string), _col3 (type: string), 
_col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: 
double), _col8 (type: string), _col9 (type: int), _col10 (type: string), _col11 
(type: string), _col12 (type: string), _col13 (type: string), _col14 (type: 
int), _col15 (type: string), _col16 (type: double), _col17 (type: string)
+              key expressions: _col10 (type: string)
+              sort order: +
+              Map-reduce partition columns: _col10 (type: string)
+              Statistics: Num rows: 28 Data size: 3461 Basic stats: PARTIAL 
Column stats: NONE
+              value expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: 
int), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col9 
(type: int), _col11 (type: string), _col12 (type: string), _col13 (type: 
string), _col14 (type: int), _col15 (type: string), _col16 (type: double), 
_col17 (type: string)
           TableScan
-            alias: p1
-            filterExpr: (p_name is not null and p_partkey is not null) (type: 
boolean)
-            Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+            alias: p3
+            filterExpr: p3_name is not null (type: boolean)
+            Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: (p_name is not null and p_partkey is not null) (type: 
boolean)
-              Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+              predicate: p3_name is not null (type: boolean)
+              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
-                expressions: p_partkey (type: int), p_name (type: string), 
p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size 
(type: int), p_container (type: string), p_retailprice (type: double), 
p_comment (type: string)
+                expressions: p3_partkey (type: int), p3_name (type: string), 
p3_mfgr (type: string), p3_brand (type: string), p3_type (type: string), 
p3_size (type: int), p3_container (type: string), p3_retailprice (type: 
double), p3_comment (type: string)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8
-                Statistics: Num rows: 26 Data size: 3147 Basic stats: COMPLETE 
Column stats: NONE
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
                 Reduce Output Operator
-                  key expressions: _col0 (type: int), _col1 (type: string)
-                  sort order: ++
-                  Map-reduce partition columns: _col0 (type: int), _col1 
(type: string)
-                  Statistics: Num rows: 26 Data size: 3147 Basic stats: 
COMPLETE Column stats: NONE
-                  value expressions: _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string)
+                  key expressions: _col1 (type: string)
+                  sort order: +
+                  Map-reduce partition columns: _col1 (type: string)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  value expressions: _col0 (type: int), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string)
       Reduce Operator Tree:
         Join Operator
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col0 (type: int), _col1 (type: string)
-            1 _col0 (type: int), _col1 (type: string)
+            0 _col10 (type: string)
+            1 _col1 (type: string)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26
-          Statistics: Num rows: 28 Data size: 3461 Basic stats: PARTIAL Column 
stats: NONE
+          Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL Column 
stats: NONE
           File Output Operator
             compressed: false
             table:
@@ -287,11 +287,11 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
-              key expressions: _col18 (type: int)
+              key expressions: _col0 (type: int)
               sort order: +
-              Map-reduce partition columns: _col18 (type: int)
-              Statistics: Num rows: 28 Data size: 3461 Basic stats: PARTIAL 
Column stats: NONE
-              value expressions: _col0 (type: int), _col1 (type: string), 
_col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: 
int), _col6 (type: string), _col7 (type: double), _col8 (type: string), _col9 
(type: int), _col10 (type: string), _col11 (type: string), _col12 (type: 
string), _col13 (type: string), _col14 (type: int), _col15 (type: string), 
_col16 (type: double), _col17 (type: string), _col19 (type: string), _col20 
(type: string), _col21 (type: string), _col22 (type: string), _col23 (type: 
int), _col24 (type: string), _col25 (type: double), _col26 (type: string)
+              Map-reduce partition columns: _col0 (type: int)
+              Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL 
Column stats: NONE
+              value expressions: _col1 (type: string), _col2 (type: string), 
_col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: 
string), _col7 (type: double), _col8 (type: string), _col9 (type: int), _col10 
(type: string), _col11 (type: string), _col12 (type: string), _col13 (type: 
string), _col14 (type: int), _col15 (type: string), _col16 (type: double), 
_col17 (type: string), _col18 (type: int), _col19 (type: string), _col20 (type: 
string), _col21 (type: string), _col22 (type: string), _col23 (type: int), 
_col24 (type: string), _col25 (type: double), _col26 (type: string)
           TableScan
             alias: p4
             filterExpr: p_partkey is not null (type: boolean)
@@ -314,21 +314,17 @@ STAGE PLANS:
           condition map:
                Inner Join 0 to 1
           keys:
-            0 _col18 (type: int)
+            0 _col0 (type: int)
             1 _col0 (type: int)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, 
_col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, _col16, 
_col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, _col26, 
_col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
-          Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL Column 
stats: NONE
-          Select Operator
-            expressions: _col18 (type: int), _col19 (type: string), _col20 
(type: string), _col21 (type: string), _col22 (type: string), _col23 (type: 
int), _col24 (type: string), _col25 (type: double), _col26 (type: string), 
_col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: 
string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 
(type: double), _col8 (type: string), _col9 (type: int), _col10 (type: string), 
_col11 (type: string), _col12 (type: string), _col13 (type: string), _col14 
(type: int), _col15 (type: string), _col16 (type: double), _col17 (type: 
string), _col27 (type: int), _col28 (type: string), _col29 (type: string), 
_col30 (type: string), _col31 (type: string), _col32 (type: int), _col33 (type: 
string), _col34 (type: double), _col35 (type: string)
-            outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, 
_col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, _col15, 
_col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23, _col24, _col25, 
_col26, _col27, _col28, _col29, _col30, _col31, _col32, _col33, _col34, _col35
-            Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL 
Column stats: NONE
-            File Output Operator
-              compressed: false
-              Statistics: Num rows: 30 Data size: 3807 Basic stats: PARTIAL 
Column stats: NONE
-              table:
-                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
-                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+          Statistics: Num rows: 33 Data size: 4187 Basic stats: PARTIAL Column 
stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 33 Data size: 4187 Basic stats: PARTIAL 
Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
 
   Stage: Stage-0
     Fetch Operator

Reply via email to