You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by go...@apache.org on 2018/02/21 17:27:48 UTC

hive git commit: HIVE-18713: Optimize: Transform IN clauses to = when there's only one element (Gopal V, reviewed by Vineet Garg)

Repository: hive
Updated Branches:
  refs/heads/master 0b03b819f -> 3f2838388


HIVE-18713: Optimize: Transform IN clauses to = when there's only one element (Gopal V, reviewed by Vineet Garg)


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

Branch: refs/heads/master
Commit: 3f2838388d67bcdb67c446cea30da227ba88c8bb
Parents: 0b03b81
Author: Gopal V <go...@apache.org>
Authored: Wed Feb 21 09:27:22 2018 -0800
Committer: Gopal V <go...@apache.org>
Committed: Wed Feb 21 09:27:22 2018 -0800

----------------------------------------------------------------------
 .../calcite/translator/RexNodeConverter.java    |  10 +
 .../clientpositive/cbo_rp_simple_select.q       |  19 +-
 .../queries/clientpositive/cbo_simple_select.q  |  18 ++
 .../clientpositive/cbo_rp_simple_select.q.out   | 234 +++++++++++++++++++
 .../clientpositive/cbo_simple_select.q.out      | 234 +++++++++++++++++++
 .../clientpositive/llap/cbo_simple_select.q.out | 216 +++++++++++++++++
 .../clientpositive/perf/spark/query33.q.out     |   2 +-
 .../clientpositive/perf/spark/query60.q.out     |   2 +-
 .../clientpositive/perf/spark/query89.q.out     |   8 +-
 .../clientpositive/perf/tez/query33.q.out       |   2 +-
 .../clientpositive/perf/tez/query60.q.out       |   2 +-
 .../clientpositive/perf/tez/query89.q.out       |   6 +-
 .../spark/cbo_simple_select.q.out               | 216 +++++++++++++++++
 .../clientpositive/vectorized_mapjoin3.q.out    | 151 +++++-------
 14 files changed, 1013 insertions(+), 107 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java
index 39ff591..7a482d9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/RexNodeConverter.java
@@ -257,6 +257,7 @@ public class RexNodeConverter {
             func.getChildren().size() != 0;
     boolean isBetween = !isNumeric && tgtUdf instanceof GenericUDFBetween;
     boolean isIN = !isNumeric && tgtUdf instanceof GenericUDFIn;
+    boolean isAllPrimitive = true;
 
     if (isNumeric) {
       tgtDT = func.getTypeInfo();
@@ -312,6 +313,8 @@ public class RexNodeConverter {
         }
       }
 
+      isAllPrimitive =
+          isAllPrimitive && tmpExprNode.getTypeInfo().getCategory() == Category.PRIMITIVE;
       argTypeBldr.add(TypeConverter.convert(tmpExprNode.getTypeInfo(), cluster.getTypeFactory()));
       tmpRN = convert(tmpExprNode);
       childRexNodeLst.add(tmpRN);
@@ -336,6 +339,13 @@ public class RexNodeConverter {
       } else if (HiveFloorDate.ALL_FUNCTIONS.contains(calciteOp)) {
         // If it is a floor <date> operator, we need to rewrite it
         childRexNodeLst = rewriteFloorDateChildren(calciteOp, childRexNodeLst);
+      } else if (calciteOp.getKind() == SqlKind.IN && childRexNodeLst.size() == 2 && isAllPrimitive) {
+        // if it is a single item in an IN clause, transform A IN (B) to A = B
+        // from IN [A,B] => EQUALS [A,B]
+        // except complex types
+        calciteOp =
+            SqlFunctionConverter.getCalciteOperator("=", FunctionRegistry.getFunctionInfo("=")
+                .getGenericUDF(), argTypeBldr.build(), retType);
       }
       expr = cluster.getRexBuilder().makeCall(retType, calciteOp, childRexNodeLst);
     } else {

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q b/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q
index 6be2b19..deb0f8f 100644
--- a/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q
+++ b/ql/src/test/queries/clientpositive/cbo_rp_simple_select.q
@@ -45,8 +45,6 @@ select * from (select cbo_t2.key as x, c_int as c_int, (((c_int+c_float)*10)+5)
 select cbo_t1.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t1 where cbo_t1.c_int >= 0;
 select cbo_t2.c_int+c_float as x , c_int as c_int, (((c_int+c_float)*10)+5) as y from (select * from cbo_t1 where cbo_t1.c_int >= 0) as cbo_t2 where cbo_t2.c_int >= 0;
 
-
-
 -- 13. null expr in select list
 select null from cbo_t3;
 
@@ -55,3 +53,20 @@ select key from cbo_t1 where c_int = -6  or c_int = +6;
 
 -- 15. query referencing only partition columns
 select count(cbo_t1.dt) from cbo_t1 join cbo_t2 on cbo_t1.dt  = cbo_t2.dt  where cbo_t1.dt = '2014' ;
+
+
+-- IN expression rewrite
+
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int); -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int); -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int); -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL); -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int); -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0); -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int); -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int); -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int); -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL); -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int); -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0); -- no rewrite

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/queries/clientpositive/cbo_simple_select.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/cbo_simple_select.q b/ql/src/test/queries/clientpositive/cbo_simple_select.q
index 50e57fd..2d95233 100644
--- a/ql/src/test/queries/clientpositive/cbo_simple_select.q
+++ b/ql/src/test/queries/clientpositive/cbo_simple_select.q
@@ -54,3 +54,21 @@ select key from cbo_t1 where c_int = -6  or c_int = +6;
 
 -- 15. query referencing only partition columns
 select count(cbo_t1.dt) from cbo_t1 join cbo_t2 on cbo_t1.dt  = cbo_t2.dt  where cbo_t1.dt = '2014' ;
+
+
+-- IN expression rewrite
+
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int); -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int); -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int); -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL); -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int); -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0); -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int); -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int); -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int); -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL); -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int); -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0); -- no rewrite
+

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out b/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out
index 2e06e61..469fbaa 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_simple_select.q.out
@@ -741,3 +741,237 @@ POSTHOOK: Input: default@cbo_t2
 POSTHOOK: Input: default@cbo_t2@dt=2014
 #### A masked pattern was here ####
 400
+PREHOOK: query: EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int = c_int) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: key, value, c_int, c_float, c_boolean, dt
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int = (2 * c_int)) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: key, value, c_int, c_float, c_boolean, dt
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int = c_int) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: key, value, c_int, c_float, c_boolean, dt
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int = null) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), null (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: key, value, c_int, c_float, c_boolean, dt
+              Statistics: Num rows: 10 Data size: 3624 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int) IN (c_int, (2 * c_int)) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: key, value, c_int, c_float, c_boolean, dt
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int) IN (c_int, 0) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: key, value, c_int, c_float, c_boolean, dt
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/cbo_simple_select.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_simple_select.q.out b/ql/src/test/results/clientpositive/cbo_simple_select.q.out
index 2e06e61..a44388c 100644
--- a/ql/src/test/results/clientpositive/cbo_simple_select.q.out
+++ b/ql/src/test/results/clientpositive/cbo_simple_select.q.out
@@ -741,3 +741,237 @@ POSTHOOK: Input: default@cbo_t2
 POSTHOOK: Input: default@cbo_t2@dt=2014
 #### A masked pattern was here ####
 400
+PREHOOK: query: EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int = c_int) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int = (2 * c_int)) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int = c_int) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int = null) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), null (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 3624 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int) IN (c_int, (2 * c_int)) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Statistics: Num rows: 20 Data size: 7138 Basic stats: COMPLETE Column stats: COMPLETE
+          Filter Operator
+            predicate: (c_int) IN (c_int, 0) (type: boolean)
+            Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 3660 Basic stats: COMPLETE Column stats: COMPLETE
+              ListSink
+
+PREHOOK: query: -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/llap/cbo_simple_select.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/cbo_simple_select.q.out b/ql/src/test/results/clientpositive/llap/cbo_simple_select.q.out
index 2e06e61..f964cb6 100644
--- a/ql/src/test/results/clientpositive/llap/cbo_simple_select.q.out
+++ b/ql/src/test/results/clientpositive/llap/cbo_simple_select.q.out
@@ -741,3 +741,219 @@ POSTHOOK: Input: default@cbo_t2
 POSTHOOK: Input: default@cbo_t2@dt=2014
 #### A masked pattern was here ####
 400
+PREHOOK: query: EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int = c_int) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int = (2 * c_int)) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int = c_int) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int = null) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), null (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int) IN (c_int, (2 * c_int)) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int) IN (c_int, 0) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/perf/spark/query33.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/spark/query33.q.out b/ql/src/test/results/clientpositive/perf/spark/query33.q.out
index dcf2fef..f2a4eb5 100644
--- a/ql/src/test/results/clientpositive/perf/spark/query33.q.out
+++ b/ql/src/test/results/clientpositive/perf/spark/query33.q.out
@@ -232,7 +232,7 @@ STAGE PLANS:
                   alias: item
                   Statistics: Num rows: 462000 Data size: 663560457 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: ((i_category) IN ('Books') and i_manufact_id is not null) (type: boolean)
+                    predicate: ((i_category = 'Books') and i_manufact_id is not null) (type: boolean)
                     Statistics: Num rows: 231000 Data size: 331780228 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: i_manufact_id (type: int)

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/perf/spark/query60.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/spark/query60.q.out b/ql/src/test/results/clientpositive/perf/spark/query60.q.out
index 6f0c9cd..ec69e75 100644
--- a/ql/src/test/results/clientpositive/perf/spark/query60.q.out
+++ b/ql/src/test/results/clientpositive/perf/spark/query60.q.out
@@ -238,7 +238,7 @@ STAGE PLANS:
                   alias: item
                   Statistics: Num rows: 462000 Data size: 663560457 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: ((i_category) IN ('Children') and i_item_id is not null) (type: boolean)
+                    predicate: ((i_category = 'Children') and i_item_id is not null) (type: boolean)
                     Statistics: Num rows: 231000 Data size: 331780228 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: i_item_id (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/perf/spark/query89.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/spark/query89.q.out b/ql/src/test/results/clientpositive/perf/spark/query89.q.out
index ca3a408..baec217 100644
--- a/ql/src/test/results/clientpositive/perf/spark/query89.q.out
+++ b/ql/src/test/results/clientpositive/perf/spark/query89.q.out
@@ -133,17 +133,17 @@ STAGE PLANS:
                   alias: date_dim
                   Statistics: Num rows: 73049 Data size: 81741831 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: ((d_year) IN (2000) and d_date_sk is not null) (type: boolean)
-                    Statistics: Num rows: 36525 Data size: 40871475 Basic stats: COMPLETE Column stats: NONE
+                    predicate: ((d_year = 2000) and d_date_sk is not null) (type: boolean)
+                    Statistics: Num rows: 36524 Data size: 40870356 Basic stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: d_date_sk (type: int), d_moy (type: int)
                       outputColumnNames: _col0, _col2
-                      Statistics: Num rows: 36525 Data size: 40871475 Basic stats: COMPLETE Column stats: NONE
+                      Statistics: Num rows: 36524 Data size: 40870356 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: 36525 Data size: 40871475 Basic stats: COMPLETE Column stats: NONE
+                        Statistics: Num rows: 36524 Data size: 40870356 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col2 (type: int)
         Reducer 2 
             Reduce Operator Tree:

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/perf/tez/query33.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/query33.q.out b/ql/src/test/results/clientpositive/perf/tez/query33.q.out
index a966865..008c7f8 100644
--- a/ql/src/test/results/clientpositive/perf/tez/query33.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/query33.q.out
@@ -222,7 +222,7 @@ Stage-0
                                           Select Operator [SEL_5] (rows=231000 width=1436)
                                             Output:["i_manufact_id"]
                                             Filter Operator [FIL_159] (rows=231000 width=1436)
-                                              predicate:((i_category) IN ('Books') and i_manufact_id is not null)
+                                              predicate:((i_category = 'Books') and i_manufact_id is not null)
                                               TableScan [TS_3] (rows=462000 width=1436)
                                                 default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_category","i_manufact_id"]
                             <-Reducer 21 [SIMPLE_EDGE]

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/perf/tez/query60.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/query60.q.out b/ql/src/test/results/clientpositive/perf/tez/query60.q.out
index 67102b3..42eb8bc 100644
--- a/ql/src/test/results/clientpositive/perf/tez/query60.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/query60.q.out
@@ -228,7 +228,7 @@ Stage-0
                                           Select Operator [SEL_5] (rows=231000 width=1436)
                                             Output:["i_item_id"]
                                             Filter Operator [FIL_159] (rows=231000 width=1436)
-                                              predicate:((i_category) IN ('Children') and i_item_id is not null)
+                                              predicate:((i_category = 'Children') and i_item_id is not null)
                                               TableScan [TS_3] (rows=462000 width=1436)
                                                 default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_id","i_category"]
                             <-Reducer 21 [SIMPLE_EDGE]

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/perf/tez/query89.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/tez/query89.q.out b/ql/src/test/results/clientpositive/perf/tez/query89.q.out
index 7c37909..1beb703 100644
--- a/ql/src/test/results/clientpositive/perf/tez/query89.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/query89.q.out
@@ -115,10 +115,10 @@ Stage-0
                                       <-Map 9 [SIMPLE_EDGE]
                                         SHUFFLE [RS_16]
                                           PartitionCols:_col0
-                                          Select Operator [SEL_8] (rows=36525 width=1119)
+                                          Select Operator [SEL_8] (rows=36524 width=1119)
                                             Output:["_col0","_col2"]
-                                            Filter Operator [FIL_50] (rows=36525 width=1119)
-                                              predicate:((d_year) IN (2000) and d_date_sk is not null)
+                                            Filter Operator [FIL_50] (rows=36524 width=1119)
+                                              predicate:((d_year = 2000) and d_date_sk is not null)
                                               TableScan [TS_6] (rows=73049 width=1119)
                                                 default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_moy"]
                                       <-Reducer 2 [SIMPLE_EDGE]

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/spark/cbo_simple_select.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/spark/cbo_simple_select.q.out b/ql/src/test/results/clientpositive/spark/cbo_simple_select.q.out
index 2e06e61..f964cb6 100644
--- a/ql/src/test/results/clientpositive/spark/cbo_simple_select.q.out
+++ b/ql/src/test/results/clientpositive/spark/cbo_simple_select.q.out
@@ -741,3 +741,219 @@ POSTHOOK: Input: default@cbo_t2
 POSTHOOK: Input: default@cbo_t2@dt=2014
 #### A masked pattern was here ####
 400
+PREHOOK: query: EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int = c_int) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int = (2 * c_int)) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is 0
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int = c_int) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- c_int is not null
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int = null) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), null (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- rewrite to NULL
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int) IN (c_int, (2 * c_int)) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+PREHOOK: type: QUERY
+POSTHOOK: query: -- no rewrite
+EXPLAIN select * from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: cbo_t2
+          Filter Operator
+            predicate: (c_int) IN (c_int, 0) (type: boolean)
+            Select Operator
+              expressions: key (type: string), value (type: string), c_int (type: int), c_float (type: float), c_boolean (type: boolean), dt (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              ListSink
+
+PREHOOK: query: -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- no rewrite
+
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is 0
+select count(*) from cbo_t2 where (cbo_t2.c_int) = (cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- c_int is not null
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (NULL)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+0
+PREHOOK: query: -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- rewrite to NULL
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 2*cbo_t2.c_int)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18
+PREHOOK: query: -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@cbo_t2
+PREHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- no rewrite
+select count(*) from cbo_t2 where (cbo_t2.c_int) IN (cbo_t2.c_int, 0)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@cbo_t2
+POSTHOOK: Input: default@cbo_t2@dt=2014
+#### A masked pattern was here ####
+18

http://git-wip-us.apache.org/repos/asf/hive/blob/3f283838/ql/src/test/results/clientpositive/vectorized_mapjoin3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vectorized_mapjoin3.q.out b/ql/src/test/results/clientpositive/vectorized_mapjoin3.q.out
index fd1179d..3321b09 100644
--- a/ql/src/test/results/clientpositive/vectorized_mapjoin3.q.out
+++ b/ql/src/test/results/clientpositive/vectorized_mapjoin3.q.out
@@ -43,8 +43,6 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: default@table_6
 POSTHOOK: Lineage: table_6.int_col_0 SCRIPT []
-Warning: Map Join MAPJOIN[18][bigTable=?] in task 'Stage-3:MAPRED' is a cross product
-Warning: Shuffle Join JOIN[11][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-1:MAPRED' is a cross product
 PREHOOK: query: SELECT t1.decimal0801_col
 FROM table_19 t1
 WHERE (SELECT max(tt1.int_col_0) AS int_col FROM table_6 tt1) IN (t1.int_col_1) AND decimal0801_col is not null
@@ -90,8 +88,6 @@ POSTHOOK: Input: default@table_19
 POSTHOOK: Input: default@table_6
 #### A masked pattern was here ####
 418.9
-Warning: Map Join MAPJOIN[18][bigTable=?] in task 'Stage-3:MAPRED' is a cross product
-Warning: Shuffle Join JOIN[11][tables = [$hdt$_0, $hdt$_1]] in Stage 'Stage-1:MAPRED' is a cross product
 PREHOOK: query: EXPLAIN VECTORIZATION DETAIL
 SELECT t1.decimal0801_col
 FROM table_19 t1
@@ -108,11 +104,9 @@ PLAN VECTORIZATION:
 
 STAGE DEPENDENCIES:
   Stage-2 is a root stage
-  Stage-4 depends on stages: Stage-2 , consists of Stage-5, Stage-1
-  Stage-5 has a backup stage: Stage-1
-  Stage-3 depends on stages: Stage-5
-  Stage-1
-  Stage-0 depends on stages: Stage-3, Stage-1
+  Stage-4 depends on stages: Stage-2
+  Stage-3 depends on stages: Stage-4
+  Stage-0 depends on stages: Stage-3
 
 STAGE PLANS:
   Stage: Stage-2
@@ -179,119 +173,88 @@ STAGE PLANS:
           mode: mergepartial
           outputColumnNames: _col0
           Statistics: Num rows: 1 Data size: 4 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
+          Filter Operator
+            predicate: _col0 is not null (type: boolean)
+            Statistics: Num rows: 1 Data size: 4 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-4
-    Conditional Operator
-
-  Stage: Stage-5
     Map Reduce Local Work
       Alias -> Map Local Tables:
-        $INTNAME 
+        $hdt$_0:t1 
           Fetch Operator
             limit: -1
       Alias -> Map Local Operator Tree:
-        $INTNAME 
-          TableScan
-            HashTable Sink Operator
-              keys:
-                0 
-                1 
-
-  Stage: Stage-3
-    Map Reduce
-      Map Operator Tree:
+        $hdt$_0:t1 
           TableScan
             alias: t1
             Statistics: Num rows: 5 Data size: 576 Basic stats: COMPLETE Column stats: NONE
             Filter Operator
-              predicate: decimal0801_col is not null (type: boolean)
+              predicate: (decimal0801_col is not null and int_col_1 is not null) (type: boolean)
               Statistics: Num rows: 5 Data size: 576 Basic stats: COMPLETE Column stats: NONE
               Select Operator
                 expressions: decimal0801_col (type: decimal(8,1)), int_col_1 (type: int)
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 5 Data size: 576 Basic stats: COMPLETE Column stats: NONE
-                Map Join Operator
-                  condition map:
-                       Left Outer Join 0 to 1
+                HashTable Sink Operator
                   keys:
-                    0 
-                    1 
-                  outputColumnNames: _col0, _col1, _col2
-                  Statistics: Num rows: 5 Data size: 601 Basic stats: COMPLETE Column stats: NONE
-                  Filter Operator
-                    predicate: (_col2) IN (_col1) (type: boolean)
-                    Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: NONE
-                    Select Operator
-                      expressions: _col0 (type: decimal(8,1))
-                      outputColumnNames: _col0
-                      Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: NONE
-                      File Output Operator
-                        compressed: false
-                        Statistics: Num rows: 2 Data size: 240 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
-      Map Vectorization:
-          enabled: true
-          enabledConditionsMet: hive.vectorized.use.vectorized.input.format IS true
-          inputFileFormats: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
-          notVectorizedReason: FILTER operator: Vectorizing IN expression only supported for constant values
-          vectorized: false
-      Local Work:
-        Map Reduce Local Work
+                    0 _col1 (type: int)
+                    1 _col0 (type: int)
 
-  Stage: Stage-1
+  Stage: Stage-3
     Map Reduce
       Map Operator Tree:
           TableScan
-            alias: t1
-            Statistics: Num rows: 5 Data size: 576 Basic stats: COMPLETE Column stats: NONE
-            Filter Operator
-              predicate: decimal0801_col is not null (type: boolean)
-              Statistics: Num rows: 5 Data size: 576 Basic stats: COMPLETE Column stats: NONE
-              Select Operator
-                expressions: decimal0801_col (type: decimal(8,1)), int_col_1 (type: int)
-                outputColumnNames: _col0, _col1
-                Statistics: Num rows: 5 Data size: 576 Basic stats: COMPLETE Column stats: NONE
-                Reduce Output Operator
-                  sort order: 
-                  Statistics: Num rows: 5 Data size: 576 Basic stats: COMPLETE Column stats: NONE
-                  value expressions: _col0 (type: decimal(8,1)), _col1 (type: int)
-          TableScan
-            Reduce Output Operator
-              sort order: 
-              Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
-              value expressions: _col0 (type: int)
-      Reduce Operator Tree:
-        Join Operator
-          condition map:
-               Left Outer Join 0 to 1
-          keys:
-            0 
-            1 
-          outputColumnNames: _col0, _col1, _col2
-          Statistics: Num rows: 5 Data size: 601 Basic stats: COMPLETE Column stats: NONE
-          Filter Operator
-            predicate: (_col2) IN (_col1) (type: boolean)
-            Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: NONE
-            Select Operator
-              expressions: _col0 (type: decimal(8,1))
+            TableScan Vectorization:
+                native: true
+                vectorizationSchemaColumns: [0:_col0:int]
+            Map Join Operator
+              condition map:
+                   Inner Join 0 to 1
+              keys:
+                0 _col1 (type: int)
+                1 _col0 (type: int)
+              Map Join Vectorization:
+                  bigTableKeyExpressions: col 0:int
+                  className: VectorMapJoinOperator
+                  native: false
+                  nativeConditionsMet: hive.mapjoin.optimized.hashtable IS true, hive.vectorized.execution.mapjoin.native.enabled IS true, One MapJoin Condition IS true, No nullsafe IS true, Small table vectorizes IS true, Optimized Table and Supports Key Types IS true
+                  nativeConditionsNotMet: hive.execution.engine mr IN [tez, spark] IS false
               outputColumnNames: _col0
-              Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: NONE
+              Statistics: Num rows: 5 Data size: 633 Basic stats: COMPLETE Column stats: NONE
               File Output Operator
                 compressed: false
-                Statistics: Num rows: 2 Data size: 240 Basic stats: COMPLETE Column stats: NONE
+                File Sink Vectorization:
+                    className: VectorFileSinkOperator
+                    native: false
+                Statistics: Num rows: 5 Data size: 633 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
+      Execution mode: vectorized
+      Map Vectorization:
+          enabled: true
+          enabledConditionsMet: hive.vectorized.use.vector.serde.deserialize IS true
+          inputFormatFeatureSupport: []
+          featureSupportInUse: []
+          inputFileFormats: org.apache.hadoop.mapred.SequenceFileInputFormat
+          allNative: false
+          usesVectorUDFAdaptor: false
+          vectorized: true
+          rowBatchContext:
+              dataColumnCount: 1
+              includeColumns: [0]
+              dataColumns: _col0:int
+              partitionColumnCount: 0
+              scratchColumnTypeNames: [decimal(8,1)]
+      Local Work:
+        Map Reduce Local Work
 
   Stage: Stage-0
     Fetch Operator