You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2015/08/06 02:50:53 UTC

[47/53] [abbrv] hive git commit: HIVE-11405: Add early termination for recursion in StatsRulesProcFactory.evaluateExpression for OR expression (Prasanth Jayachandran reviewed by Gopal V, Gunther Hagleitner)

HIVE-11405: Add early termination for recursion in StatsRulesProcFactory.evaluateExpression for OR expression (Prasanth Jayachandran reviewed by Gopal V, Gunther Hagleitner)


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

Branch: refs/heads/llap
Commit: 96f5914461e5782a952ec62a3d0bf16037b8cfda
Parents: d3a879a
Author: Prasanth Jayachandran <j....@gmail.com>
Authored: Wed Aug 5 12:43:01 2015 -0700
Committer: Prasanth Jayachandran <j....@gmail.com>
Committed: Wed Aug 5 12:43:01 2015 -0700

----------------------------------------------------------------------
 .../stats/annotation/StatsRulesProcFactory.java |  46 ++--
 .../annotate_stats_deep_filters.q               |  66 +++++
 .../annotate_stats_deep_filters.q.out           | 244 +++++++++++++++++++
 .../test/results/clientpositive/ppd_join2.q.out |  18 +-
 .../test/results/clientpositive/ppd_join3.q.out |  46 ++--
 .../clientpositive/spark/ppd_join2.q.out        |  18 +-
 .../clientpositive/spark/ppd_join3.q.out        |  46 ++--
 .../clientpositive/spark/vectorization_17.q.out |  10 +-
 .../clientpositive/tez/vectorization_17.q.out   |  10 +-
 .../clientpositive/vectorization_17.q.out       |  10 +-
 10 files changed, 415 insertions(+), 99 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
index 1663b88..6b3e715 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
@@ -18,8 +18,13 @@
 
 package org.apache.hadoop.hive.ql.optimizer.stats.annotation;
 
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import java.lang.reflect.Field;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Stack;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -72,14 +77,8 @@ import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPOr;
 import org.apache.hadoop.hive.serde.serdeConstants;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
 
-import java.lang.reflect.Field;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.Stack;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
 public class StatsRulesProcFactory {
 
@@ -259,7 +258,7 @@ public class StatsRulesProcFactory {
 
           // evaluate filter expression and update statistics
           long newNumRows = evaluateExpression(parentStats, pred, aspCtx,
-              neededCols, fop);
+              neededCols, fop, 0);
           Statistics st = parentStats.clone();
 
           if (satisfyPrecondition(parentStats)) {
@@ -297,7 +296,7 @@ public class StatsRulesProcFactory {
 
     private long evaluateExpression(Statistics stats, ExprNodeDesc pred,
         AnnotateStatsProcCtx aspCtx, List<String> neededCols,
-        FilterOperator fop) throws CloneNotSupportedException {
+        FilterOperator fop, long evaluatedRowCount) throws CloneNotSupportedException {
       long newNumRows = 0;
       Statistics andStats = null;
 
@@ -316,7 +315,7 @@ public class StatsRulesProcFactory {
           // evaluate children
           for (ExprNodeDesc child : genFunc.getChildren()) {
             newNumRows = evaluateChildExpr(aspCtx.getAndExprStats(), child,
-                aspCtx, neededCols, fop);
+                aspCtx, neededCols, fop, evaluatedRowCount);
             if (satisfyPrecondition(aspCtx.getAndExprStats())) {
               updateStats(aspCtx.getAndExprStats(), newNumRows, true, fop);
             } else {
@@ -324,17 +323,24 @@ public class StatsRulesProcFactory {
             }
           }
         } else if (udf instanceof GenericUDFOPOr) {
-          // for OR condition independently compute and update stats
+          // for OR condition independently compute and update stats.
           for (ExprNodeDesc child : genFunc.getChildren()) {
-            newNumRows = StatsUtils.safeAdd(
-                evaluateChildExpr(stats, child, aspCtx, neededCols, fop), newNumRows);
+            // early exit if OR evaluation yields more rows than input rows
+            if (evaluatedRowCount >= stats.getNumRows()) {
+              evaluatedRowCount = stats.getNumRows();
+            } else {
+              newNumRows = StatsUtils.safeAdd(
+                  evaluateChildExpr(stats, child, aspCtx, neededCols, fop, evaluatedRowCount),
+                  newNumRows);
+              evaluatedRowCount = newNumRows;
+            }
           }
         } else if (udf instanceof GenericUDFOPNot) {
           newNumRows = evaluateNotExpr(stats, pred, aspCtx, neededCols, fop);
         } else {
 
           // single predicate condition
-          newNumRows = evaluateChildExpr(stats, pred, aspCtx, neededCols, fop);
+          newNumRows = evaluateChildExpr(stats, pred, aspCtx, neededCols, fop, evaluatedRowCount);
         }
       } else if (pred instanceof ExprNodeColumnDesc) {
 
@@ -381,7 +387,7 @@ public class StatsRulesProcFactory {
             long newNumRows = 0;
             for (ExprNodeDesc child : genFunc.getChildren()) {
               newNumRows = evaluateChildExpr(stats, child, aspCtx, neededCols,
-                  fop);
+                  fop, 0);
             }
             return numRows - newNumRows;
           } else if (leaf instanceof ExprNodeConstantDesc) {
@@ -439,7 +445,7 @@ public class StatsRulesProcFactory {
 
     private long evaluateChildExpr(Statistics stats, ExprNodeDesc child,
         AnnotateStatsProcCtx aspCtx, List<String> neededCols,
-        FilterOperator fop) throws CloneNotSupportedException {
+        FilterOperator fop, long evaluatedRowCount) throws CloneNotSupportedException {
 
       long numRows = stats.getNumRows();
 
@@ -525,7 +531,7 @@ public class StatsRulesProcFactory {
           return evaluateColEqualsNullExpr(stats, genFunc);
         } else if (udf instanceof GenericUDFOPAnd || udf instanceof GenericUDFOPOr
             || udf instanceof GenericUDFOPNot) {
-          return evaluateExpression(stats, genFunc, aspCtx, neededCols, fop);
+          return evaluateExpression(stats, genFunc, aspCtx, neededCols, fop, evaluatedRowCount);
         }
       }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/queries/clientpositive/annotate_stats_deep_filters.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/annotate_stats_deep_filters.q b/ql/src/test/queries/clientpositive/annotate_stats_deep_filters.q
new file mode 100644
index 0000000..c027532
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/annotate_stats_deep_filters.q
@@ -0,0 +1,66 @@
+create table over1k(
+t tinyint,
+si smallint,
+i int,
+b bigint,
+f float,
+d double,
+bo boolean,
+s string,
+ts timestamp,
+dec decimal(4,2),
+bin binary)
+ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
+STORED AS TEXTFILE;
+
+load data local inpath '../../data/files/over1k' overwrite into table over1k;
+load data local inpath '../../data/files/over1k' into table over1k;
+
+analyze table over1k compute statistics;
+analyze table over1k compute statistics for columns;
+
+set hive.stats.fetch.column.stats=true;
+explain select count(*) from over1k where (
+(t=1 and si=2)
+or (t=2 and si=3)
+or (t=3 and si=4) 
+or (t=4 and si=5) 
+or (t=5 and si=6) 
+or (t=6 and si=7) 
+or (t=7 and si=8)
+or (t=9 and si=10)
+or (t=10 and si=11)
+or (t=11 and si=12)
+or (t=12 and si=13)
+or (t=13 and si=14) 
+or (t=14 and si=15) 
+or (t=15 and si=16) 
+or (t=16 and si=17) 
+or (t=17 and si=18)
+or (t=27 and si=28)
+or (t=37 and si=38)
+or (t=47 and si=48)
+or (t=52 and si=53));
+
+set hive.stats.fetch.column.stats=false;
+explain select count(*) from over1k where (
+(t=1 and si=2)
+or (t=2 and si=3)
+or (t=3 and si=4) 
+or (t=4 and si=5) 
+or (t=5 and si=6) 
+or (t=6 and si=7) 
+or (t=7 and si=8)
+or (t=9 and si=10)
+or (t=10 and si=11)
+or (t=11 and si=12)
+or (t=12 and si=13)
+or (t=13 and si=14) 
+or (t=14 and si=15) 
+or (t=15 and si=16) 
+or (t=16 and si=17) 
+or (t=17 and si=18)
+or (t=27 and si=28)
+or (t=37 and si=38)
+or (t=47 and si=48)
+or (t=52 and si=53));
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out b/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out
new file mode 100644
index 0000000..788d6c8
--- /dev/null
+++ b/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out
@@ -0,0 +1,244 @@
+PREHOOK: query: create table over1k(
+t tinyint,
+si smallint,
+i int,
+b bigint,
+f float,
+d double,
+bo boolean,
+s string,
+ts timestamp,
+dec decimal(4,2),
+bin binary)
+ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
+STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@over1k
+POSTHOOK: query: create table over1k(
+t tinyint,
+si smallint,
+i int,
+b bigint,
+f float,
+d double,
+bo boolean,
+s string,
+ts timestamp,
+dec decimal(4,2),
+bin binary)
+ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
+STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@over1k
+PREHOOK: query: load data local inpath '../../data/files/over1k' overwrite into table over1k
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@over1k
+POSTHOOK: query: load data local inpath '../../data/files/over1k' overwrite into table over1k
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@over1k
+PREHOOK: query: load data local inpath '../../data/files/over1k' into table over1k
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@over1k
+POSTHOOK: query: load data local inpath '../../data/files/over1k' into table over1k
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@over1k
+PREHOOK: query: analyze table over1k compute statistics
+PREHOOK: type: QUERY
+PREHOOK: Input: default@over1k
+PREHOOK: Output: default@over1k
+POSTHOOK: query: analyze table over1k compute statistics
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@over1k
+POSTHOOK: Output: default@over1k
+PREHOOK: query: analyze table over1k compute statistics for columns
+PREHOOK: type: QUERY
+PREHOOK: Input: default@over1k
+#### A masked pattern was here ####
+POSTHOOK: query: analyze table over1k compute statistics for columns
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@over1k
+#### A masked pattern was here ####
+PREHOOK: query: explain select count(*) from over1k where (
+(t=1 and si=2)
+or (t=2 and si=3)
+or (t=3 and si=4) 
+or (t=4 and si=5) 
+or (t=5 and si=6) 
+or (t=6 and si=7) 
+or (t=7 and si=8)
+or (t=9 and si=10)
+or (t=10 and si=11)
+or (t=11 and si=12)
+or (t=12 and si=13)
+or (t=13 and si=14) 
+or (t=14 and si=15) 
+or (t=15 and si=16) 
+or (t=16 and si=17) 
+or (t=17 and si=18)
+or (t=27 and si=28)
+or (t=37 and si=38)
+or (t=47 and si=48)
+or (t=52 and si=53))
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select count(*) from over1k where (
+(t=1 and si=2)
+or (t=2 and si=3)
+or (t=3 and si=4) 
+or (t=4 and si=5) 
+or (t=5 and si=6) 
+or (t=6 and si=7) 
+or (t=7 and si=8)
+or (t=9 and si=10)
+or (t=10 and si=11)
+or (t=11 and si=12)
+or (t=12 and si=13)
+or (t=13 and si=14) 
+or (t=14 and si=15) 
+or (t=15 and si=16) 
+or (t=16 and si=17) 
+or (t=17 and si=18)
+or (t=27 and si=28)
+or (t=37 and si=38)
+or (t=47 and si=48)
+or (t=52 and si=53))
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: over1k
+            Statistics: Num rows: 2098 Data size: 211174 Basic stats: COMPLETE Column stats: COMPLETE
+            Filter Operator
+              predicate: (((t = 1) and (si = 2)) or (((t = 2) and (si = 3)) or (((t = 3) and (si = 4)) or (((t = 4) and (si = 5)) or (((t = 5) and (si = 6)) or (((t = 6) and (si = 7)) or (((t = 7) and (si = 8)) or (((t = 9) and (si = 10)) or (((t = 10) and (si = 11)) or (((t = 11) and (si = 12)) or (((t = 12) and (si = 13)) or (((t = 13) and (si = 14)) or (((t = 14) and (si = 15)) or (((t = 15) and (si = 16)) or (((t = 16) and (si = 17)) or (((t = 17) and (si = 18)) or (((t = 27) and (si = 28)) or (((t = 37) and (si = 38)) or (((t = 47) and (si = 48)) or ((t = 52) and (si = 53))))))))))))))))))))) (type: boolean)
+              Statistics: Num rows: 280 Data size: 2232 Basic stats: COMPLETE Column stats: COMPLETE
+              Select Operator
+                Statistics: Num rows: 280 Data size: 2232 Basic stats: COMPLETE Column stats: COMPLETE
+                Group By Operator
+                  aggregations: count()
+                  mode: hash
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                  Reduce Output Operator
+                    sort order: 
+                    Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                    value expressions: _col0 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          mode: mergepartial
+          outputColumnNames: _col0
+          Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: explain select count(*) from over1k where (
+(t=1 and si=2)
+or (t=2 and si=3)
+or (t=3 and si=4) 
+or (t=4 and si=5) 
+or (t=5 and si=6) 
+or (t=6 and si=7) 
+or (t=7 and si=8)
+or (t=9 and si=10)
+or (t=10 and si=11)
+or (t=11 and si=12)
+or (t=12 and si=13)
+or (t=13 and si=14) 
+or (t=14 and si=15) 
+or (t=15 and si=16) 
+or (t=16 and si=17) 
+or (t=17 and si=18)
+or (t=27 and si=28)
+or (t=37 and si=38)
+or (t=47 and si=48)
+or (t=52 and si=53))
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select count(*) from over1k where (
+(t=1 and si=2)
+or (t=2 and si=3)
+or (t=3 and si=4) 
+or (t=4 and si=5) 
+or (t=5 and si=6) 
+or (t=6 and si=7) 
+or (t=7 and si=8)
+or (t=9 and si=10)
+or (t=10 and si=11)
+or (t=11 and si=12)
+or (t=12 and si=13)
+or (t=13 and si=14) 
+or (t=14 and si=15) 
+or (t=15 and si=16) 
+or (t=16 and si=17) 
+or (t=17 and si=18)
+or (t=27 and si=28)
+or (t=37 and si=38)
+or (t=47 and si=48)
+or (t=52 and si=53))
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: over1k
+            Statistics: Num rows: 2098 Data size: 211174 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((t = 1) and (si = 2)) or (((t = 2) and (si = 3)) or (((t = 3) and (si = 4)) or (((t = 4) and (si = 5)) or (((t = 5) and (si = 6)) or (((t = 6) and (si = 7)) or (((t = 7) and (si = 8)) or (((t = 9) and (si = 10)) or (((t = 10) and (si = 11)) or (((t = 11) and (si = 12)) or (((t = 12) and (si = 13)) or (((t = 13) and (si = 14)) or (((t = 14) and (si = 15)) or (((t = 15) and (si = 16)) or (((t = 16) and (si = 17)) or (((t = 17) and (si = 18)) or (((t = 27) and (si = 28)) or (((t = 37) and (si = 38)) or (((t = 47) and (si = 48)) or ((t = 52) and (si = 53))))))))))))))))))))) (type: boolean)
+              Statistics: Num rows: 2098 Data size: 211174 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                Statistics: Num rows: 2098 Data size: 211174 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  aggregations: count()
+                  mode: hash
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    sort order: 
+                    Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+                    value expressions: _col0 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          mode: mergepartial
+          outputColumnNames: _col0
+          Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/results/clientpositive/ppd_join2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/ppd_join2.q.out b/ql/src/test/results/clientpositive/ppd_join2.q.out
index 27a8ddf..335d995 100644
--- a/ql/src/test/results/clientpositive/ppd_join2.q.out
+++ b/ql/src/test/results/clientpositive/ppd_join2.q.out
@@ -40,25 +40,25 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: ((((((((key <> '302') and (key <> '311')) and ((value <> 'val_50') or (key > '1'))) and (key < '400')) and (key <> '305')) and (key <> '14')) and key is not null) and value is not null) (type: boolean)
-              Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
                 Filter Operator
                   predicate: ((_col0 <> '311') and (((_col1 <> 'val_50') or (_col0 > '1')) and (_col0 < '400'))) (type: boolean)
-                  Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 14 Data size: 148 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: ((_col0 <> '305') and (_col0 <> '14')) (type: boolean)
-                    Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 14 Data size: 148 Basic stats: COMPLETE Column stats: NONE
                     Filter Operator
                       predicate: _col0 is not null (type: boolean)
-                      Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 7 Data size: 74 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
                         key expressions: _col0 (type: string)
                         sort order: +
                         Map-reduce partition columns: _col0 (type: string)
-                        Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 7 Data size: 74 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: string)
           TableScan
             alias: src
@@ -1755,16 +1755,16 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: ((((((((key <> '302') and (key <> '311')) and ((value <> 'val_50') or (key > '1'))) and (key < '400')) and (key <> '305')) and (key <> '14')) and key is not null) and value is not null) (type: boolean)
-              Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
-                  Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: string)
           TableScan
             alias: src

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/results/clientpositive/ppd_join3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/ppd_join3.q.out b/ql/src/test/results/clientpositive/ppd_join3.q.out
index abc286c..d658cfb 100644
--- a/ql/src/test/results/clientpositive/ppd_join3.q.out
+++ b/ql/src/test/results/clientpositive/ppd_join3.q.out
@@ -40,29 +40,29 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: (((((((((key <> '11') and (key > '0')) and ((value <> 'val_500') or (key > '1'))) and (key < '400')) and (key <> '12')) and (key <> '4')) and key is not null) and (key <> '13')) and (key <> '1')) (type: boolean)
-              Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
                 outputColumnNames: _col0, _col1
-                Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
                 Filter Operator
                   predicate: ((_col0 > '0') and (((_col1 <> 'val_500') or (_col0 > '1')) and (_col0 < '400'))) (type: boolean)
-                  Statistics: Num rows: 5 Data size: 53 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: _col0 (type: string)
                     outputColumnNames: _col0
-                    Statistics: Num rows: 5 Data size: 53 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
                     Filter Operator
                       predicate: ((_col0 <> '12') and (_col0 <> '4')) (type: boolean)
-                      Statistics: Num rows: 5 Data size: 53 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
                       Filter Operator
                         predicate: _col0 is not null (type: boolean)
-                        Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 2 Data size: 20 Basic stats: COMPLETE Column stats: NONE
                         Reduce Output Operator
                           key expressions: _col0 (type: string)
                           sort order: +
                           Map-reduce partition columns: _col0 (type: string)
-                          Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
+                          Statistics: Num rows: 2 Data size: 20 Basic stats: COMPLETE Column stats: NONE
           TableScan
             alias: src
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
@@ -96,20 +96,20 @@ STAGE PLANS:
             0 _col0 (type: string)
             1 _col0 (type: string)
           outputColumnNames: _col0, _col1, _col2
-          Statistics: Num rows: 3 Data size: 34 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
           Filter Operator
             predicate: ((_col1 > '10') or (_col0 <> '10')) (type: boolean)
-            Statistics: Num rows: 3 Data size: 34 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: _col0 (type: string), _col2 (type: string)
               outputColumnNames: _col0, _col2
-              Statistics: Num rows: 3 Data size: 34 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
               Filter Operator
                 predicate: ((_col0 <> '13') and (_col0 <> '1')) (type: boolean)
-                Statistics: Num rows: 3 Data size: 34 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
                 Filter Operator
                   predicate: _col0 is not null (type: boolean)
-                  Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
                     table:
@@ -149,7 +149,7 @@ STAGE PLANS:
               key expressions: _col0 (type: string)
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
-              Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col2 (type: string)
       Reduce Operator Tree:
         Join Operator
@@ -1817,16 +1817,16 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: (((((((((key <> '11') and (key > '0')) and ((value <> 'val_500') or (key > '1'))) and (key < '400')) and (key <> '12')) and (key <> '4')) and key is not null) and (key <> '13')) and (key <> '1')) (type: boolean)
-              Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: key (type: string)
                 outputColumnNames: _col0
-                Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
-                  Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
           TableScan
             alias: src
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
@@ -1851,14 +1851,14 @@ STAGE PLANS:
             0 _col0 (type: string)
             1 _col0 (type: string)
           outputColumnNames: _col0, _col1, _col2
-          Statistics: Num rows: 40 Data size: 432 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 30 Data size: 326 Basic stats: COMPLETE Column stats: NONE
           Filter Operator
             predicate: ((_col1 > '10') or (_col0 <> '10')) (type: boolean)
-            Statistics: Num rows: 40 Data size: 432 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 30 Data size: 326 Basic stats: COMPLETE Column stats: NONE
             Select Operator
               expressions: _col0 (type: string), _col2 (type: string)
               outputColumnNames: _col0, _col2
-              Statistics: Num rows: 40 Data size: 432 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 30 Data size: 326 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
                 table:
@@ -1889,7 +1889,7 @@ STAGE PLANS:
               key expressions: _col0 (type: string)
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
-              Statistics: Num rows: 40 Data size: 432 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 30 Data size: 326 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col2 (type: string)
       Reduce Operator Tree:
         Join Operator
@@ -1899,14 +1899,14 @@ STAGE PLANS:
             0 _col0 (type: string)
             1 _col0 (type: string)
           outputColumnNames: _col1, _col3
-          Statistics: Num rows: 44 Data size: 475 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 33 Data size: 358 Basic stats: COMPLETE Column stats: NONE
           Select Operator
             expressions: _col1 (type: string), _col3 (type: string)
             outputColumnNames: _col0, _col1
-            Statistics: Num rows: 44 Data size: 475 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 33 Data size: 358 Basic stats: COMPLETE Column stats: NONE
             File Output Operator
               compressed: false
-              Statistics: Num rows: 44 Data size: 475 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 33 Data size: 358 Basic stats: COMPLETE Column stats: NONE
               table:
                   input format: org.apache.hadoop.mapred.TextInputFormat
                   output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/results/clientpositive/spark/ppd_join2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/spark/ppd_join2.q.out b/ql/src/test/results/clientpositive/spark/ppd_join2.q.out
index a98ab13..6fed2dc 100644
--- a/ql/src/test/results/clientpositive/spark/ppd_join2.q.out
+++ b/ql/src/test/results/clientpositive/spark/ppd_join2.q.out
@@ -72,25 +72,25 @@ STAGE PLANS:
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: ((((((((key <> '302') and (key <> '311')) and ((value <> 'val_50') or (key > '1'))) and (key < '400')) and (key <> '305')) and (key <> '14')) and key is not null) and value is not null) (type: boolean)
-                    Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string), value (type: string)
                       outputColumnNames: _col0, _col1
-                      Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
                       Filter Operator
                         predicate: ((_col0 <> '311') and (((_col1 <> 'val_50') or (_col0 > '1')) and (_col0 < '400'))) (type: boolean)
-                        Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 14 Data size: 148 Basic stats: COMPLETE Column stats: NONE
                         Filter Operator
                           predicate: ((_col0 <> '305') and (_col0 <> '14')) (type: boolean)
-                          Statistics: Num rows: 24 Data size: 254 Basic stats: COMPLETE Column stats: NONE
+                          Statistics: Num rows: 14 Data size: 148 Basic stats: COMPLETE Column stats: NONE
                           Filter Operator
                             predicate: _col0 is not null (type: boolean)
-                            Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE
+                            Statistics: Num rows: 7 Data size: 74 Basic stats: COMPLETE Column stats: NONE
                             Reduce Output Operator
                               key expressions: _col0 (type: string)
                               sort order: +
                               Map-reduce partition columns: _col0 (type: string)
-                              Statistics: Num rows: 12 Data size: 127 Basic stats: COMPLETE Column stats: NONE
+                              Statistics: Num rows: 7 Data size: 74 Basic stats: COMPLETE Column stats: NONE
                               value expressions: _col1 (type: string)
         Map 5 
             Map Operator Tree:
@@ -1777,16 +1777,16 @@ STAGE PLANS:
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: ((((((((key <> '302') and (key <> '311')) and ((value <> 'val_50') or (key > '1'))) and (key < '400')) and (key <> '305')) and (key <> '14')) and key is not null) and value is not null) (type: boolean)
-                    Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string), value (type: string)
                       outputColumnNames: _col0, _col1
-                      Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
                         key expressions: _col0 (type: string)
                         sort order: +
                         Map-reduce partition columns: _col0 (type: string)
-                        Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 42 Data size: 446 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: string)
         Map 5 
             Map Operator Tree:

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/results/clientpositive/spark/ppd_join3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/spark/ppd_join3.q.out b/ql/src/test/results/clientpositive/spark/ppd_join3.q.out
index 9b5e0af..661d9d1 100644
--- a/ql/src/test/results/clientpositive/spark/ppd_join3.q.out
+++ b/ql/src/test/results/clientpositive/spark/ppd_join3.q.out
@@ -71,29 +71,29 @@ STAGE PLANS:
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: (((((((((key <> '11') and (key > '0')) and ((value <> 'val_500') or (key > '1'))) and (key < '400')) and (key <> '12')) and (key <> '4')) and key is not null) and (key <> '13')) and (key <> '1')) (type: boolean)
-                    Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string), value (type: string)
                       outputColumnNames: _col0, _col1
-                      Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
                       Filter Operator
                         predicate: ((_col0 > '0') and (((_col1 <> 'val_500') or (_col0 > '1')) and (_col0 < '400'))) (type: boolean)
-                        Statistics: Num rows: 5 Data size: 53 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
                         Select Operator
                           expressions: _col0 (type: string)
                           outputColumnNames: _col0
-                          Statistics: Num rows: 5 Data size: 53 Basic stats: COMPLETE Column stats: NONE
+                          Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
                           Filter Operator
                             predicate: ((_col0 <> '12') and (_col0 <> '4')) (type: boolean)
-                            Statistics: Num rows: 5 Data size: 53 Basic stats: COMPLETE Column stats: NONE
+                            Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
                             Filter Operator
                               predicate: _col0 is not null (type: boolean)
-                              Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
+                              Statistics: Num rows: 2 Data size: 20 Basic stats: COMPLETE Column stats: NONE
                               Reduce Output Operator
                                 key expressions: _col0 (type: string)
                                 sort order: +
                                 Map-reduce partition columns: _col0 (type: string)
-                                Statistics: Num rows: 3 Data size: 31 Basic stats: COMPLETE Column stats: NONE
+                                Statistics: Num rows: 2 Data size: 20 Basic stats: COMPLETE Column stats: NONE
         Map 5 
             Map Operator Tree:
                 TableScan
@@ -151,25 +151,25 @@ STAGE PLANS:
                   0 _col0 (type: string)
                   1 _col0 (type: string)
                 outputColumnNames: _col0, _col1, _col2
-                Statistics: Num rows: 3 Data size: 34 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
                 Filter Operator
                   predicate: ((_col1 > '10') or (_col0 <> '10')) (type: boolean)
-                  Statistics: Num rows: 3 Data size: 34 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: _col0 (type: string), _col2 (type: string)
                     outputColumnNames: _col0, _col2
-                    Statistics: Num rows: 3 Data size: 34 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
                     Filter Operator
                       predicate: ((_col0 <> '13') and (_col0 <> '1')) (type: boolean)
-                      Statistics: Num rows: 3 Data size: 34 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
                       Filter Operator
                         predicate: _col0 is not null (type: boolean)
-                        Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE
                         Reduce Output Operator
                           key expressions: _col0 (type: string)
                           sort order: +
                           Map-reduce partition columns: _col0 (type: string)
-                          Statistics: Num rows: 2 Data size: 22 Basic stats: COMPLETE Column stats: NONE
+                          Statistics: Num rows: 1 Data size: 11 Basic stats: COMPLETE Column stats: NONE
                           value expressions: _col2 (type: string)
 
   Stage: Stage-0
@@ -1839,16 +1839,16 @@ STAGE PLANS:
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: (((((((((key <> '11') and (key > '0')) and ((value <> 'val_500') or (key > '1'))) and (key < '400')) and (key <> '12')) and (key <> '4')) and key is not null) and (key <> '13')) and (key <> '1')) (type: boolean)
-                    Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string)
                       outputColumnNames: _col0
-                      Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
                         key expressions: _col0 (type: string)
                         sort order: +
                         Map-reduce partition columns: _col0 (type: string)
-                        Statistics: Num rows: 37 Data size: 393 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 28 Data size: 297 Basic stats: COMPLETE Column stats: NONE
         Map 5 
             Map Operator Tree:
                 TableScan
@@ -1876,14 +1876,14 @@ STAGE PLANS:
                   0 _col0 (type: string)
                   1 _col0 (type: string)
                 outputColumnNames: _col1, _col3
-                Statistics: Num rows: 44 Data size: 475 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 33 Data size: 358 Basic stats: COMPLETE Column stats: NONE
                 Select Operator
                   expressions: _col1 (type: string), _col3 (type: string)
                   outputColumnNames: _col0, _col1
-                  Statistics: Num rows: 44 Data size: 475 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 33 Data size: 358 Basic stats: COMPLETE Column stats: NONE
                   File Output Operator
                     compressed: false
-                    Statistics: Num rows: 44 Data size: 475 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 33 Data size: 358 Basic stats: COMPLETE Column stats: NONE
                     table:
                         input format: org.apache.hadoop.mapred.TextInputFormat
                         output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
@@ -1897,19 +1897,19 @@ STAGE PLANS:
                   0 _col0 (type: string)
                   1 _col0 (type: string)
                 outputColumnNames: _col0, _col1, _col2
-                Statistics: Num rows: 40 Data size: 432 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 30 Data size: 326 Basic stats: COMPLETE Column stats: NONE
                 Filter Operator
                   predicate: ((_col1 > '10') or (_col0 <> '10')) (type: boolean)
-                  Statistics: Num rows: 40 Data size: 432 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 30 Data size: 326 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: _col0 (type: string), _col2 (type: string)
                     outputColumnNames: _col0, _col2
-                    Statistics: Num rows: 40 Data size: 432 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 30 Data size: 326 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
-                      Statistics: Num rows: 40 Data size: 432 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 30 Data size: 326 Basic stats: COMPLETE Column stats: NONE
                       value expressions: _col2 (type: string)
 
   Stage: Stage-0

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/results/clientpositive/spark/vectorization_17.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/spark/vectorization_17.q.out b/ql/src/test/results/clientpositive/spark/vectorization_17.q.out
index 472d98f..ea5b0da 100644
--- a/ql/src/test/results/clientpositive/spark/vectorization_17.q.out
+++ b/ql/src/test/results/clientpositive/spark/vectorization_17.q.out
@@ -68,15 +68,15 @@ STAGE PLANS:
                   Statistics: Num rows: 12288 Data size: 377237 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: (((cbigint > -23) and ((cdouble <> 988888.0) or (UDFToDouble(cint) > -863.257))) and ((ctinyint >= 33) or ((UDFToLong(csmallint) >= cbigint) or (UDFToDouble(cfloat) = cdouble)))) (type: boolean)
-                    Statistics: Num rows: 6370 Data size: 195556 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 4778 Data size: 146682 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: cfloat (type: float), cstring1 (type: string), cint (type: int), ctimestamp1 (type: timestamp), cdouble (type: double), cbigint (type: bigint), (UDFToDouble(cfloat) / UDFToDouble(ctinyint)) (type: double), (UDFToLong(cint) % cbigint) (type: bigint), (- cdouble) (type: double), (cdouble + (UDFToDouble(cfloat) / UDFToDouble(ctinyint))) (type: double), (cdouble / UDFToDouble(cint)) (type: double), (- (- cdouble)) (type: double), (9763215.5639 % UDFToDouble(cbigint)) (type: double), (2563.58 + (- (- cdouble))) (type: double)
                       outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
-                      Statistics: Num rows: 6370 Data size: 195556 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 4778 Data size: 146682 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
                         key expressions: _col5 (type: bigint), _col0 (type: float)
                         sort order: ++
-                        Statistics: Num rows: 6370 Data size: 195556 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 4778 Data size: 146682 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: string), _col2 (type: int), _col3 (type: timestamp), _col4 (type: double), _col6 (type: double), _col7 (type: bigint), _col8 (type: double), _col9 (type: double), _col10 (type: double), _col11 (type: double), _col12 (type: double), _col13 (type: double)
             Execution mode: vectorized
         Reducer 2 
@@ -84,10 +84,10 @@ STAGE PLANS:
               Select Operator
                 expressions: KEY.reducesinkkey1 (type: float), VALUE._col0 (type: string), VALUE._col1 (type: int), VALUE._col2 (type: timestamp), VALUE._col3 (type: double), KEY.reducesinkkey0 (type: bigint), VALUE._col4 (type: double), VALUE._col5 (type: bigint), VALUE._col6 (type: double), VALUE._col7 (type: double), VALUE._col8 (type: double), VALUE._col9 (type: double), VALUE._col10 (type: double), VALUE._col11 (type: double)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
-                Statistics: Num rows: 6370 Data size: 195556 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 4778 Data size: 146682 Basic stats: COMPLETE Column stats: NONE
                 File Output Operator
                   compressed: false
-                  Statistics: Num rows: 6370 Data size: 195556 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 4778 Data size: 146682 Basic stats: COMPLETE Column stats: NONE
                   table:
                       input format: org.apache.hadoop.mapred.TextInputFormat
                       output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/results/clientpositive/tez/vectorization_17.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/vectorization_17.q.out b/ql/src/test/results/clientpositive/tez/vectorization_17.q.out
index 50f7647..b5c71a4 100644
--- a/ql/src/test/results/clientpositive/tez/vectorization_17.q.out
+++ b/ql/src/test/results/clientpositive/tez/vectorization_17.q.out
@@ -68,15 +68,15 @@ STAGE PLANS:
                   Statistics: Num rows: 12288 Data size: 2641964 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: (((cbigint > -23) and ((cdouble <> 988888.0) or (UDFToDouble(cint) > -863.257))) and ((ctinyint >= 33) or ((UDFToLong(csmallint) >= cbigint) or (UDFToDouble(cfloat) = cdouble)))) (type: boolean)
-                    Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+                    Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: cfloat (type: float), cstring1 (type: string), cint (type: int), ctimestamp1 (type: timestamp), cdouble (type: double), cbigint (type: bigint), (UDFToDouble(cfloat) / UDFToDouble(ctinyint)) (type: double), (UDFToLong(cint) % cbigint) (type: bigint), (- cdouble) (type: double), (cdouble + (UDFToDouble(cfloat) / UDFToDouble(ctinyint))) (type: double), (cdouble / UDFToDouble(cint)) (type: double), (- (- cdouble)) (type: double), (9763215.5639 % UDFToDouble(cbigint)) (type: double), (2563.58 + (- (- cdouble))) (type: double)
                       outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
-                      Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
                         key expressions: _col5 (type: bigint), _col0 (type: float)
                         sort order: ++
-                        Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col1 (type: string), _col2 (type: int), _col3 (type: timestamp), _col4 (type: double), _col6 (type: double), _col7 (type: bigint), _col8 (type: double), _col9 (type: double), _col10 (type: double), _col11 (type: double), _col12 (type: double), _col13 (type: double)
             Execution mode: vectorized
         Reducer 2 
@@ -84,10 +84,10 @@ STAGE PLANS:
               Select Operator
                 expressions: KEY.reducesinkkey1 (type: float), VALUE._col0 (type: string), VALUE._col1 (type: int), VALUE._col2 (type: timestamp), VALUE._col3 (type: double), KEY.reducesinkkey0 (type: bigint), VALUE._col4 (type: double), VALUE._col5 (type: bigint), VALUE._col6 (type: double), VALUE._col7 (type: double), VALUE._col8 (type: double), VALUE._col9 (type: double), VALUE._col10 (type: double), VALUE._col11 (type: double)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
-                Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
                 File Output Operator
                   compressed: false
-                  Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
                   table:
                       input format: org.apache.hadoop.mapred.TextInputFormat
                       output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat

http://git-wip-us.apache.org/repos/asf/hive/blob/96f59144/ql/src/test/results/clientpositive/vectorization_17.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vectorization_17.q.out b/ql/src/test/results/clientpositive/vectorization_17.q.out
index b2fe45e..ece918c 100644
--- a/ql/src/test/results/clientpositive/vectorization_17.q.out
+++ b/ql/src/test/results/clientpositive/vectorization_17.q.out
@@ -63,25 +63,25 @@ STAGE PLANS:
             Statistics: Num rows: 12288 Data size: 2641964 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
               predicate: (((cbigint > -23) and ((cdouble <> 988888.0) or (UDFToDouble(cint) > -863.257))) and ((ctinyint >= 33) or ((UDFToLong(csmallint) >= cbigint) or (UDFToDouble(cfloat) = cdouble)))) (type: boolean)
-              Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: cfloat (type: float), cstring1 (type: string), cint (type: int), ctimestamp1 (type: timestamp), cdouble (type: double), cbigint (type: bigint), (UDFToDouble(cfloat) / UDFToDouble(ctinyint)) (type: double), (UDFToLong(cint) % cbigint) (type: bigint), (- cdouble) (type: double), (cdouble + (UDFToDouble(cfloat) / UDFToDouble(ctinyint))) (type: double), (cdouble / UDFToDouble(cint)) (type: double), (- (- cdouble)) (type: double), (9763215.5639 % UDFToDouble(cbigint)) (type: double), (2563.58 + (- (- cdouble))) (type: double)
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
-                Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+                Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col5 (type: bigint), _col0 (type: float)
                   sort order: ++
-                  Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+                  Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col1 (type: string), _col2 (type: int), _col3 (type: timestamp), _col4 (type: double), _col6 (type: double), _col7 (type: bigint), _col8 (type: double), _col9 (type: double), _col10 (type: double), _col11 (type: double), _col12 (type: double), _col13 (type: double)
       Execution mode: vectorized
       Reduce Operator Tree:
         Select Operator
           expressions: KEY.reducesinkkey1 (type: float), VALUE._col0 (type: string), VALUE._col1 (type: int), VALUE._col2 (type: timestamp), VALUE._col3 (type: double), KEY.reducesinkkey0 (type: bigint), VALUE._col4 (type: double), VALUE._col5 (type: bigint), VALUE._col6 (type: double), VALUE._col7 (type: double), VALUE._col8 (type: double), VALUE._col9 (type: double), VALUE._col10 (type: double), VALUE._col11 (type: double)
           outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
-          Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+          Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
           File Output Operator
             compressed: false
-            Statistics: Num rows: 6370 Data size: 1369572 Basic stats: COMPLETE Column stats: NONE
+            Statistics: Num rows: 4778 Data size: 1027287 Basic stats: COMPLETE Column stats: NONE
             table:
                 input format: org.apache.hadoop.mapred.TextInputFormat
                 output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat