HIVE-16022: BloomFilter check not showing up in MERGE statement queries (Jason 
Dere reviewed by Gunt
her Hagleitner)

Change-Id: Ie773cdb3ac5cac2174b06b7d64f8c72d6a17cb06


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

Branch: refs/heads/branch-2.2
Commit: c3d311f43eee59adaf6806cb366480e39e7cffb0
Parents: 127deb2
Author: Jason Dere <jd...@hortonworks.com>
Authored: Wed Mar 1 11:40:40 2017 -0800
Committer: Owen O'Malley <omal...@apache.org>
Committed: Tue Mar 28 15:27:54 2017 -0700

----------------------------------------------------------------------
 .../test/resources/testconfiguration.properties |   1 +
 .../hadoop/hive/ql/exec/OperatorUtils.java      |   7 +
 .../DynamicPartitionPruningOptimization.java    |  11 +-
 .../dynamic_semijoin_reduction_3.q              |  37 +
 .../llap/dynamic_partition_pruning.q.out        |   4 +-
 .../llap/dynamic_semijoin_reduction.q.out       |  28 +-
 .../llap/dynamic_semijoin_reduction_2.q.out     |   4 +-
 .../llap/dynamic_semijoin_reduction_3.q.out     | 765 +++++++++++++++++++
 .../results/clientpositive/llap/orc_llap.q.out  |   8 +-
 .../vectorized_dynamic_partition_pruning.q.out  |   4 +-
 .../vectorized_dynamic_semijoin_reduction.q.out |  28 +-
 ...vectorized_dynamic_semijoin_reduction2.q.out |  32 +-
 .../tez/dynamic_partition_pruning.q.out         |   4 +-
 .../clientpositive/tez/explainuser_3.q.out      |   4 +-
 .../results/clientpositive/tez/mergejoin.q.out  |  48 +-
 .../vectorized_dynamic_partition_pruning.q.out  |   4 +-
 16 files changed, 900 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties 
b/itests/src/test/resources/testconfiguration.properties
index 9720f76..891bf11 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -510,6 +510,7 @@ minillap.query.files=cross_prod_1.q,\
   cross_prod_3.q,\
   dynamic_semijoin_reduction.q,\
   dynamic_semijoin_reduction_2.q,\
+  dynamic_semijoin_reduction_3.q,\
   except_distinct.q,\
   intersect_all.q,\
   intersect_distinct.q,\

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java
index d294e25..51faf1d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java
@@ -346,4 +346,11 @@ public class OperatorUtils {
       }
     }
   }
+
+  public static String getOpNamePretty(Operator<?> op) {
+    if (op instanceof TableScanOperator) {
+      return op.toString() + " (" + ((TableScanOperator) 
op).getConf().getAlias() + ")";
+    }
+    return op.toString();
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
index 3085f5d..e6f21e9 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
@@ -239,7 +239,6 @@ public class DynamicPartitionPruningOptimization implements 
NodeProcessor {
           betweenArgs.add(new ExprNodeDynamicValueDesc(new 
DynamicValue(keyBaseAlias + "_max", ctx.desc.getTypeInfo())));
           ExprNodeDesc betweenNode = ExprNodeGenericFuncDesc.newInstance(
                   FunctionRegistry.getFunctionInfo("between").getGenericUDF(), 
betweenArgs);
-          replaceExprNode(ctx, desc, betweenNode);
           // add column expression for bloom filter
           List<ExprNodeDesc> bloomFilterArgs = new ArrayList<ExprNodeDesc>();
           bloomFilterArgs.add(ctx.parent.getChildren().get(0));
@@ -249,10 +248,12 @@ public class DynamicPartitionPruningOptimization 
implements NodeProcessor {
           ExprNodeDesc bloomFilterNode = ExprNodeGenericFuncDesc.newInstance(
                   FunctionRegistry.getFunctionInfo("in_bloom_filter").
                           getGenericUDF(), bloomFilterArgs);
-          // ctx may not have the grandparent but it is set in filterDesc by 
now.
-          ExprNodeDesc grandParent = ctx.grandParent == null ?
-                  desc.getPredicate() : ctx.grandParent;
-          grandParent.getChildren().add(bloomFilterNode);
+          List<ExprNodeDesc> andArgs = new ArrayList<ExprNodeDesc>();
+          andArgs.add(betweenNode);
+          andArgs.add(bloomFilterNode);
+          ExprNodeDesc andExpr = ExprNodeGenericFuncDesc.newInstance(
+              FunctionRegistry.getFunctionInfo("and").getGenericUDF(), 
andArgs);
+          replaceExprNode(ctx, desc, andExpr);
         } else {
           ExprNodeDesc replaceNode = new 
ExprNodeConstantDesc(ctx.parent.getTypeInfo(), true);
           replaceExprNode(ctx, desc, replaceNode);

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction_3.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction_3.q 
b/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction_3.q
new file mode 100644
index 0000000..adfc7a6
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/dynamic_semijoin_reduction_3.q
@@ -0,0 +1,37 @@
+set hive.mapred.mode=nonstrict;
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+set hive.explain.user=false;
+set hive.merge.cardinality.check=true;
+
+set hive.compute.query.using.stats=false;
+set hive.mapred.mode=nonstrict;
+set hive.optimize.ppd=true;
+set hive.ppd.remove.duplicatefilters=true;
+set hive.tez.dynamic.partition.pruning=true;
+set hive.tez.dynamic.semijoin.reduction=true;
+set hive.optimize.metadataonly=false;
+set hive.optimize.index.filter=true;
+
+-- Try with merge statements
+create table acidTbl(a int, b int) clustered by (a) into 2 buckets stored as 
orc TBLPROPERTIES ('transactional'='true');
+create table nonAcidOrcTbl(a int, b int) clustered by (a) into 2 buckets 
stored as orc TBLPROPERTIES ('transactional'='false');
+
+--expect a cardinality check because there is update and 
hive.merge.cardinality.check=true by default
+explain merge into acidTbl as t using nonAcidOrcTbl s ON t.a = s.a 
+WHEN MATCHED AND s.a > 8 THEN DELETE
+WHEN MATCHED THEN UPDATE SET b = 7
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b);
+
+--now we expect no cardinality check since only have insert clause
+explain merge into acidTbl as t using nonAcidOrcTbl s ON t.a = s.a
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b);
+
+explain merge into acidTbl as t using (
+  select * from nonAcidOrcTbl where a > 0
+  union all
+  select * from nonAcidOrcTbl where b > 0
+) s ON t.a = s.a
+WHEN MATCHED AND s.a > 8 THEN DELETE
+WHEN MATCHED THEN UPDATE SET b = 7
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b);

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out 
b/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
index b2955ed..d28bafb 100644
--- a/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
+++ b/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
@@ -3187,10 +3187,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart_hour
-                  filterExpr: ((UDFToDouble(hr) = 13.0) and hr BETWEEN 
DynamicValue(RS_12_srcpart_hr_min) AND DynamicValue(RS_12_srcpart_hr_max) and 
in_bloom_filter(hr, DynamicValue(RS_12_srcpart_hr_bloom_filter))) (type: 
boolean)
+                  filterExpr: ((UDFToDouble(hr) = 13.0) and (hr BETWEEN 
DynamicValue(RS_12_srcpart_hr_min) AND DynamicValue(RS_12_srcpart_hr_max) and 
in_bloom_filter(hr, DynamicValue(RS_12_srcpart_hr_bloom_filter)))) (type: 
boolean)
                   Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE 
Column stats: NONE
                   Filter Operator
-                    predicate: ((UDFToDouble(hr) = 13.0) and hr BETWEEN 
DynamicValue(RS_12_srcpart_hr_min) AND DynamicValue(RS_12_srcpart_hr_max) and 
in_bloom_filter(hr, DynamicValue(RS_12_srcpart_hr_bloom_filter))) (type: 
boolean)
+                    predicate: ((UDFToDouble(hr) = 13.0) and (hr BETWEEN 
DynamicValue(RS_12_srcpart_hr_min) AND DynamicValue(RS_12_srcpart_hr_max) and 
in_bloom_filter(hr, DynamicValue(RS_12_srcpart_hr_bloom_filter)))) (type: 
boolean)
                     Statistics: Num rows: 1 Data size: 5 Basic stats: COMPLETE 
Column stats: NONE
                     Select Operator
                       expressions: hr (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out 
b/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out
index 385b5cf..c9cf19a 100644
--- a/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out
+++ b/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction.q.out
@@ -242,10 +242,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart_date
-                  filterExpr: (key is not null and key BETWEEN 
DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter))) (type: boolean)
+                  filterExpr: (key is not null and (key BETWEEN 
DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key is not null and key BETWEEN 
DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter))) (type: boolean)
+                    predicate: (key is not null and (key BETWEEN 
DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string)
@@ -659,10 +659,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart_date
-                  filterExpr: (key is not null and key BETWEEN 
DynamicValue(RS_10_srcpart_small_key_min) AND 
DynamicValue(RS_10_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_10_srcpart_small_key_bloom_filter))) (type: boolean)
+                  filterExpr: (key is not null and (key BETWEEN 
DynamicValue(RS_10_srcpart_small_key_min) AND 
DynamicValue(RS_10_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_10_srcpart_small_key_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key is not null and key BETWEEN 
DynamicValue(RS_10_srcpart_small_key_min) AND 
DynamicValue(RS_10_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_10_srcpart_small_key_bloom_filter))) (type: boolean)
+                    predicate: (key is not null and (key BETWEEN 
DynamicValue(RS_10_srcpart_small_key_min) AND 
DynamicValue(RS_10_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_10_srcpart_small_key_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string)
@@ -738,10 +738,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: alltypesorc_int
-                  filterExpr: (cstring is not null and cstring BETWEEN 
DynamicValue(RS_9_srcpart_date_cstring_min) AND 
DynamicValue(RS_9_srcpart_date_cstring_max) and cstring BETWEEN 
DynamicValue(RS_10_srcpart_small_cstring_min) AND 
DynamicValue(RS_10_srcpart_small_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_9_srcpart_date_cstring_bloom_filter)) and 
in_bloom_filter(cstring, 
DynamicValue(RS_10_srcpart_small_cstring_bloom_filter))) (type: boolean)
+                  filterExpr: (cstring is not null and (cstring BETWEEN 
DynamicValue(RS_9_srcpart_date_cstring_min) AND 
DynamicValue(RS_9_srcpart_date_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_9_srcpart_date_cstring_bloom_filter))) and (cstring BETWEEN 
DynamicValue(RS_10_srcpart_small_cstring_min) AND 
DynamicValue(RS_10_srcpart_small_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_10_srcpart_small_cstring_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 12288 Data size: 926570 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (cstring is not null and cstring BETWEEN 
DynamicValue(RS_9_srcpart_date_cstring_min) AND 
DynamicValue(RS_9_srcpart_date_cstring_max) and cstring BETWEEN 
DynamicValue(RS_10_srcpart_small_cstring_min) AND 
DynamicValue(RS_10_srcpart_small_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_9_srcpart_date_cstring_bloom_filter)) and 
in_bloom_filter(cstring, 
DynamicValue(RS_10_srcpart_small_cstring_bloom_filter))) (type: boolean)
+                    predicate: (cstring is not null and (cstring BETWEEN 
DynamicValue(RS_9_srcpart_date_cstring_min) AND 
DynamicValue(RS_9_srcpart_date_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_9_srcpart_date_cstring_bloom_filter))) and (cstring BETWEEN 
DynamicValue(RS_10_srcpart_small_cstring_min) AND 
DynamicValue(RS_10_srcpart_small_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_10_srcpart_small_cstring_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 12288 Data size: 926570 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: cstring (type: string)
@@ -1014,10 +1014,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart_date
-                  filterExpr: (key is not null and value is not null and key 
BETWEEN DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and value BETWEEN 
DynamicValue(RS_7_srcpart_small_value_min) AND 
DynamicValue(RS_7_srcpart_small_value_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter)) and in_bloom_filter(value, 
DynamicValue(RS_7_srcpart_small_value_bloom_filter))) (type: boolean)
+                  filterExpr: (key is not null and value is not null and (key 
BETWEEN DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter))) and (value BETWEEN 
DynamicValue(RS_7_srcpart_small_value_min) AND 
DynamicValue(RS_7_srcpart_small_value_max) and in_bloom_filter(value, 
DynamicValue(RS_7_srcpart_small_value_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key is not null and value is not null and key 
BETWEEN DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and value BETWEEN 
DynamicValue(RS_7_srcpart_small_value_min) AND 
DynamicValue(RS_7_srcpart_small_value_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter)) and in_bloom_filter(value, 
DynamicValue(RS_7_srcpart_small_value_bloom_filter))) (type: boolean)
+                    predicate: (key is not null and value is not null and (key 
BETWEEN DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter))) and (value BETWEEN 
DynamicValue(RS_7_srcpart_small_value_min) AND 
DynamicValue(RS_7_srcpart_small_value_max) and in_bloom_filter(value, 
DynamicValue(RS_7_srcpart_small_value_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string), value (type: string)
@@ -1324,10 +1324,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart_date
-                  filterExpr: (key is not null and value is not null and key 
BETWEEN DynamicValue(RS_10_srcpart_small_key_min) AND 
DynamicValue(RS_10_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_10_srcpart_small_key_bloom_filter))) (type: boolean)
+                  filterExpr: (key is not null and value is not null and (key 
BETWEEN DynamicValue(RS_10_srcpart_small_key_min) AND 
DynamicValue(RS_10_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_10_srcpart_small_key_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key is not null and value is not null and key 
BETWEEN DynamicValue(RS_10_srcpart_small_key_min) AND 
DynamicValue(RS_10_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_10_srcpart_small_key_bloom_filter))) (type: boolean)
+                    predicate: (key is not null and value is not null and (key 
BETWEEN DynamicValue(RS_10_srcpart_small_key_min) AND 
DynamicValue(RS_10_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_10_srcpart_small_key_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string), value (type: string)
@@ -1378,10 +1378,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: alltypesorc_int
-                  filterExpr: (cstring is not null and cstring BETWEEN 
DynamicValue(RS_12_srcpart_date_cstring_min) AND 
DynamicValue(RS_12_srcpart_date_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_12_srcpart_date_cstring_bloom_filter))) (type: boolean)
+                  filterExpr: (cstring is not null and (cstring BETWEEN 
DynamicValue(RS_12_srcpart_date_cstring_min) AND 
DynamicValue(RS_12_srcpart_date_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_12_srcpart_date_cstring_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 12288 Data size: 926570 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (cstring is not null and cstring BETWEEN 
DynamicValue(RS_12_srcpart_date_cstring_min) AND 
DynamicValue(RS_12_srcpart_date_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_12_srcpart_date_cstring_bloom_filter))) (type: boolean)
+                    predicate: (cstring is not null and (cstring BETWEEN 
DynamicValue(RS_12_srcpart_date_cstring_min) AND 
DynamicValue(RS_12_srcpart_date_cstring_max) and in_bloom_filter(cstring, 
DynamicValue(RS_12_srcpart_date_cstring_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 12288 Data size: 926570 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: cstring (type: string)
@@ -1642,10 +1642,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart_date
-                  filterExpr: (key is not null and key BETWEEN 
DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter))) (type: boolean)
+                  filterExpr: (key is not null and (key BETWEEN 
DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key is not null and key BETWEEN 
DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter))) (type: boolean)
+                    predicate: (key is not null and (key BETWEEN 
DynamicValue(RS_7_srcpart_small_key_min) AND 
DynamicValue(RS_7_srcpart_small_key_max) and in_bloom_filter(key, 
DynamicValue(RS_7_srcpart_small_key_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 2000 Data size: 352000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_2.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_2.q.out 
b/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_2.q.out
index 401e558..e91795b 100644
--- a/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_2.q.out
+++ b/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_2.q.out
@@ -105,10 +105,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: tt2
-                  filterExpr: ((timestamp_col_18 = timestamp_col_18) and 
decimal1911_col_16 is not null and timestamp_col_18 BETWEEN 
DynamicValue(RS_23_t1_timestamp_col_18_min) AND 
DynamicValue(RS_23_t1_timestamp_col_18_max) and 
in_bloom_filter(timestamp_col_18, 
DynamicValue(RS_23_t1_timestamp_col_18_bloom_filter))) (type: boolean)
+                  filterExpr: ((timestamp_col_18 = timestamp_col_18) and 
decimal1911_col_16 is not null and (timestamp_col_18 BETWEEN 
DynamicValue(RS_23_t1_timestamp_col_18_min) AND 
DynamicValue(RS_23_t1_timestamp_col_18_max) and 
in_bloom_filter(timestamp_col_18, 
DynamicValue(RS_23_t1_timestamp_col_18_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
                   Filter Operator
-                    predicate: ((timestamp_col_18 = timestamp_col_18) and 
decimal1911_col_16 is not null and timestamp_col_18 BETWEEN 
DynamicValue(RS_23_t1_timestamp_col_18_min) AND 
DynamicValue(RS_23_t1_timestamp_col_18_max) and 
in_bloom_filter(timestamp_col_18, 
DynamicValue(RS_23_t1_timestamp_col_18_bloom_filter))) (type: boolean)
+                    predicate: ((timestamp_col_18 = timestamp_col_18) and 
decimal1911_col_16 is not null and (timestamp_col_18 BETWEEN 
DynamicValue(RS_23_t1_timestamp_col_18_min) AND 
DynamicValue(RS_23_t1_timestamp_col_18_max) and 
in_bloom_filter(timestamp_col_18, 
DynamicValue(RS_23_t1_timestamp_col_18_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
                     Select Operator
                       expressions: decimal1911_col_16 (type: decimal(19,11)), 
timestamp_col_18 (type: timestamp)

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_3.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_3.q.out 
b/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_3.q.out
new file mode 100644
index 0000000..7ea25d0
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/dynamic_semijoin_reduction_3.q.out
@@ -0,0 +1,765 @@
+PREHOOK: query: create table acidTbl(a int, b int) clustered by (a) into 2 
buckets stored as orc TBLPROPERTIES ('transactional'='true')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@acidTbl
+POSTHOOK: query: create table acidTbl(a int, b int) clustered by (a) into 2 
buckets stored as orc TBLPROPERTIES ('transactional'='true')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@acidTbl
+PREHOOK: query: create table nonAcidOrcTbl(a int, b int) clustered by (a) into 
2 buckets stored as orc TBLPROPERTIES ('transactional'='false')
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@nonAcidOrcTbl
+POSTHOOK: query: create table nonAcidOrcTbl(a int, b int) clustered by (a) 
into 2 buckets stored as orc TBLPROPERTIES ('transactional'='false')
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@nonAcidOrcTbl
+PREHOOK: query: explain merge into acidTbl as t using nonAcidOrcTbl s ON t.a = 
s.a 
+WHEN MATCHED AND s.a > 8 THEN DELETE
+WHEN MATCHED THEN UPDATE SET b = 7
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain merge into acidTbl as t using nonAcidOrcTbl s ON t.a 
= s.a 
+WHEN MATCHED AND s.a > 8 THEN DELETE
+WHEN MATCHED THEN UPDATE SET b = 7
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-4 is a root stage
+  Stage-5 depends on stages: Stage-4
+  Stage-0 depends on stages: Stage-5
+  Stage-6 depends on stages: Stage-0
+  Stage-2 depends on stages: Stage-5
+  Stage-7 depends on stages: Stage-2
+  Stage-3 depends on stages: Stage-5
+  Stage-8 depends on stages: Stage-3
+  Stage-1 depends on stages: Stage-5
+  Stage-9 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-4
+    Tez
+#### A masked pattern was here ####
+      Edges:
+        Map 1 <- Reducer 8 (BROADCAST_EDGE)
+        Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 7 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+        Reducer 4 <- Reducer 2 (SIMPLE_EDGE)
+        Reducer 5 <- Reducer 2 (SIMPLE_EDGE)
+        Reducer 6 <- Reducer 2 (SIMPLE_EDGE)
+        Reducer 8 <- Map 7 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: t
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Filter Operator
+                    predicate: (a BETWEEN DynamicValue(RS_3_s_a_min) AND 
DynamicValue(RS_3_s_a_max) and in_bloom_filter(a, 
DynamicValue(RS_3_s_a_bloom_filter))) (type: boolean)
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: a (type: int)
+                      sort order: +
+                      Map-reduce partition columns: a (type: int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      value expressions: ROW__ID (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+            Execution mode: llap
+            LLAP IO: may be used (ACID table)
+        Map 7 
+            Map Operator Tree:
+                TableScan
+                  alias: s
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: a (type: int)
+                    sort order: +
+                    Map-reduce partition columns: a (type: int)
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    value expressions: b (type: int)
+                  Select Operator
+                    expressions: a (type: int)
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Group By Operator
+                      aggregations: min(_col0), max(_col0), 
bloom_filter(_col0, expectedEntries=1)
+                      mode: hash
+                      outputColumnNames: _col0, _col1, _col2
+                      Statistics: Num rows: 1 Data size: 12 Basic stats: 
COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        sort order: 
+                        Statistics: Num rows: 1 Data size: 12 Basic stats: 
COMPLETE Column stats: NONE
+                        value expressions: _col0 (type: int), _col1 (type: 
int), _col2 (type: binary)
+            Execution mode: llap
+            LLAP IO: all inputs
+        Reducer 2 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Merge Join Operator
+                condition map:
+                     Right Outer Join0 to 1
+                keys:
+                  0 a (type: int)
+                  1 a (type: int)
+                outputColumnNames: _col0, _col4, _col5, _col6
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                Filter Operator
+                  predicate: ((_col5 > 8) and (_col0 = _col5)) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col4 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: _col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                      sort order: +
+                      Map-reduce partition columns: UDFToInteger(_col0) (type: 
int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                Filter Operator
+                  predicate: ((_col5 <= 8) and (_col0 = _col5)) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col4 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>), _col0 (type: int)
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: _col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                      sort order: +
+                      Map-reduce partition columns: UDFToInteger(_col0) (type: 
int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      value expressions: _col1 (type: int)
+                Filter Operator
+                  predicate: (_col0 = _col5) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col4 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                    outputColumnNames: _col4
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Group By Operator
+                      aggregations: count()
+                      keys: _col4 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                        Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                        value expressions: _col1 (type: bigint)
+                Filter Operator
+                  predicate: _col0 is null (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col5 (type: int), _col6 (type: int)
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      sort order: 
+                      Map-reduce partition columns: _col0 (type: int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      value expressions: _col0 (type: int), _col1 (type: int)
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  table:
+                      input format: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+                      serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+                      name: default.acidtbl
+        Reducer 4 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>), VALUE._col0 (type: 
int), 7 (type: int)
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  table:
+                      input format: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+                      serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+                      name: default.acidtbl
+        Reducer 5 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                Filter Operator
+                  predicate: (_col1 > 1) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: cardinality_violation(_col0) (type: int)
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    File Output Operator
+                      compressed: false
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL 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
+                          name: default.merge_tmp_table
+        Reducer 6 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: VALUE._col0 (type: int), VALUE._col1 (type: int)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  table:
+                      input format: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+                      serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+                      name: default.acidtbl
+        Reducer 8 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: min(VALUE._col0), max(VALUE._col1), 
bloom_filter(VALUE._col2, expectedEntries=1)
+                mode: final
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE 
Column stats: NONE
+                Reduce Output Operator
+                  sort order: 
+                  Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE 
Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: int), 
_col2 (type: binary)
+
+  Stage: Stage-5
+    Dependency Collection
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+          replace: false
+          table:
+              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+              name: default.acidtbl
+
+  Stage: Stage-6
+    Stats-Aggr Operator
+
+  Stage: Stage-2
+    Move Operator
+      tables:
+          replace: false
+          table:
+              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+              name: default.acidtbl
+
+  Stage: Stage-7
+    Stats-Aggr Operator
+
+  Stage: Stage-3
+    Move Operator
+      tables:
+          replace: false
+          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
+              name: default.merge_tmp_table
+
+  Stage: Stage-8
+    Stats-Aggr Operator
+
+  Stage: Stage-1
+    Move Operator
+      tables:
+          replace: false
+          table:
+              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+              name: default.acidtbl
+
+  Stage: Stage-9
+    Stats-Aggr Operator
+
+PREHOOK: query: explain merge into acidTbl as t using nonAcidOrcTbl s ON t.a = 
s.a
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain merge into acidTbl as t using nonAcidOrcTbl s ON t.a 
= s.a
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
+  Stage-3 depends on stages: Stage-0
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Edges:
+        Map 1 <- Reducer 5 (BROADCAST_EDGE)
+        Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+        Reducer 5 <- Map 4 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: t
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Filter Operator
+                    predicate: (a BETWEEN DynamicValue(RS_3_s_a_min) AND 
DynamicValue(RS_3_s_a_max) and in_bloom_filter(a, 
DynamicValue(RS_3_s_a_bloom_filter))) (type: boolean)
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: a (type: int)
+                      sort order: +
+                      Map-reduce partition columns: a (type: int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+            Execution mode: llap
+            LLAP IO: may be used (ACID table)
+        Map 4 
+            Map Operator Tree:
+                TableScan
+                  alias: s
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: a (type: int)
+                    sort order: +
+                    Map-reduce partition columns: a (type: int)
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    value expressions: b (type: int)
+                  Select Operator
+                    expressions: a (type: int)
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Group By Operator
+                      aggregations: min(_col0), max(_col0), 
bloom_filter(_col0, expectedEntries=1)
+                      mode: hash
+                      outputColumnNames: _col0, _col1, _col2
+                      Statistics: Num rows: 1 Data size: 12 Basic stats: 
COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        sort order: 
+                        Statistics: Num rows: 1 Data size: 12 Basic stats: 
COMPLETE Column stats: NONE
+                        value expressions: _col0 (type: int), _col1 (type: 
int), _col2 (type: binary)
+            Execution mode: llap
+            LLAP IO: all inputs
+        Reducer 2 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Merge Join Operator
+                condition map:
+                     Right Outer Join0 to 1
+                keys:
+                  0 a (type: int)
+                  1 a (type: int)
+                outputColumnNames: _col0, _col5, _col6
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                Filter Operator
+                  predicate: _col0 is null (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col5 (type: int), _col6 (type: int)
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      sort order: 
+                      Map-reduce partition columns: _col0 (type: int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      value expressions: _col0 (type: int), _col1 (type: int)
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: VALUE._col0 (type: int), VALUE._col1 (type: int)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  table:
+                      input format: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+                      serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+                      name: default.acidtbl
+        Reducer 5 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: min(VALUE._col0), max(VALUE._col1), 
bloom_filter(VALUE._col2, expectedEntries=1)
+                mode: final
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE 
Column stats: NONE
+                Reduce Output Operator
+                  sort order: 
+                  Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE 
Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: int), 
_col2 (type: binary)
+
+  Stage: Stage-2
+    Dependency Collection
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+          replace: false
+          table:
+              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+              name: default.acidtbl
+
+  Stage: Stage-3
+    Stats-Aggr Operator
+
+PREHOOK: query: explain merge into acidTbl as t using (
+  select * from nonAcidOrcTbl where a > 0
+  union all
+  select * from nonAcidOrcTbl where b > 0
+) s ON t.a = s.a
+WHEN MATCHED AND s.a > 8 THEN DELETE
+WHEN MATCHED THEN UPDATE SET b = 7
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain merge into acidTbl as t using (
+  select * from nonAcidOrcTbl where a > 0
+  union all
+  select * from nonAcidOrcTbl where b > 0
+) s ON t.a = s.a
+WHEN MATCHED AND s.a > 8 THEN DELETE
+WHEN MATCHED THEN UPDATE SET b = 7
+WHEN NOT MATCHED THEN INSERT VALUES(s.a, s.b)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-4 is a root stage
+  Stage-5 depends on stages: Stage-4
+  Stage-0 depends on stages: Stage-5
+  Stage-6 depends on stages: Stage-0
+  Stage-2 depends on stages: Stage-5
+  Stage-7 depends on stages: Stage-2
+  Stage-3 depends on stages: Stage-5
+  Stage-8 depends on stages: Stage-3
+  Stage-1 depends on stages: Stage-5
+  Stage-9 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-4
+    Tez
+#### A masked pattern was here ####
+      Edges:
+        Map 1 <- Union 2 (CONTAINS)
+        Map 10 <- Reducer 8 (BROADCAST_EDGE)
+        Map 9 <- Union 2 (CONTAINS)
+        Reducer 3 <- Map 10 (SIMPLE_EDGE), Union 2 (SIMPLE_EDGE)
+        Reducer 4 <- Reducer 3 (SIMPLE_EDGE)
+        Reducer 5 <- Reducer 3 (SIMPLE_EDGE)
+        Reducer 6 <- Reducer 3 (SIMPLE_EDGE)
+        Reducer 7 <- Reducer 3 (SIMPLE_EDGE)
+        Reducer 8 <- Union 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: nonacidorctbl
+                  filterExpr: (a > 0) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Filter Operator
+                    predicate: (a > 0) (type: boolean)
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Select Operator
+                      expressions: a (type: int), b (type: int)
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 2 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                        value expressions: _col1 (type: int)
+                      Select Operator
+                        expressions: _col0 (type: int)
+                        outputColumnNames: _col0
+                        Statistics: Num rows: 2 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                        Group By Operator
+                          aggregations: min(_col0), max(_col0), 
bloom_filter(_col0, expectedEntries=2)
+                          mode: hash
+                          outputColumnNames: _col0, _col1, _col2
+                          Statistics: Num rows: 1 Data size: 12 Basic stats: 
COMPLETE Column stats: NONE
+                          Reduce Output Operator
+                            sort order: 
+                            Statistics: Num rows: 1 Data size: 12 Basic stats: 
COMPLETE Column stats: NONE
+                            value expressions: _col0 (type: int), _col1 (type: 
int), _col2 (type: binary)
+            Execution mode: llap
+            LLAP IO: all inputs
+        Map 10 
+            Map Operator Tree:
+                TableScan
+                  alias: t
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Filter Operator
+                    predicate: (a BETWEEN 
DynamicValue(RS_10_nonacidorctbl_a_min) AND 
DynamicValue(RS_10_nonacidorctbl_a_max) and in_bloom_filter(a, 
DynamicValue(RS_10_nonacidorctbl_a_bloom_filter))) (type: boolean)
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: a (type: int)
+                      sort order: +
+                      Map-reduce partition columns: a (type: int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      value expressions: ROW__ID (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+            Execution mode: llap
+            LLAP IO: may be used (ACID table)
+        Map 9 
+            Map Operator Tree:
+                TableScan
+                  alias: nonacidorctbl
+                  filterExpr: (b > 0) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Filter Operator
+                    predicate: (b > 0) (type: boolean)
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Select Operator
+                      expressions: a (type: int), b (type: int)
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 2 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                        value expressions: _col1 (type: int)
+                      Select Operator
+                        expressions: _col0 (type: int)
+                        outputColumnNames: _col0
+                        Statistics: Num rows: 2 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                        Group By Operator
+                          aggregations: min(_col0), max(_col0), 
bloom_filter(_col0, expectedEntries=2)
+                          mode: hash
+                          outputColumnNames: _col0, _col1, _col2
+                          Statistics: Num rows: 1 Data size: 12 Basic stats: 
COMPLETE Column stats: NONE
+                          Reduce Output Operator
+                            sort order: 
+                            Statistics: Num rows: 1 Data size: 12 Basic stats: 
COMPLETE Column stats: NONE
+                            value expressions: _col0 (type: int), _col1 (type: 
int), _col2 (type: binary)
+            Execution mode: llap
+            LLAP IO: all inputs
+        Reducer 3 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Merge Join Operator
+                condition map:
+                     Right Outer Join0 to 1
+                keys:
+                  0 a (type: int)
+                  1 _col0 (type: int)
+                outputColumnNames: _col0, _col4, _col5, _col6
+                Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                Filter Operator
+                  predicate: ((_col5 > 8) and (_col0 = _col5)) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col4 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: _col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                      sort order: +
+                      Map-reduce partition columns: UDFToInteger(_col0) (type: 
int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                Filter Operator
+                  predicate: ((_col5 <= 8) and (_col0 = _col5)) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col4 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>), _col0 (type: int)
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: _col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                      sort order: +
+                      Map-reduce partition columns: UDFToInteger(_col0) (type: 
int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      value expressions: _col1 (type: int)
+                Filter Operator
+                  predicate: (_col0 = _col5) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col4 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                    outputColumnNames: _col4
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Group By Operator
+                      aggregations: count()
+                      keys: _col4 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                        sort order: +
+                        Map-reduce partition columns: _col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                        Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                        value expressions: _col1 (type: bigint)
+                Filter Operator
+                  predicate: _col0 is null (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: _col5 (type: int), _col6 (type: int)
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    Reduce Output Operator
+                      sort order: 
+                      Map-reduce partition columns: _col0 (type: int)
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL Column stats: NONE
+                      value expressions: _col0 (type: int), _col1 (type: int)
+        Reducer 4 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  table:
+                      input format: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+                      serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+                      name: default.acidtbl
+        Reducer 5 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>), VALUE._col0 (type: 
int), 7 (type: int)
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  table:
+                      input format: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+                      serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+                      name: default.acidtbl
+        Reducer 6 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                keys: KEY._col0 (type: 
struct<transactionid:bigint,bucketid:int,rowid:bigint>)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                Filter Operator
+                  predicate: (_col1 > 1) (type: boolean)
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  Select Operator
+                    expressions: cardinality_violation(_col0) (type: int)
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                    File Output Operator
+                      compressed: false
+                      Statistics: Num rows: 1 Data size: 0 Basic stats: 
PARTIAL 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
+                          name: default.merge_tmp_table
+        Reducer 7 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Select Operator
+                expressions: VALUE._col0 (type: int), VALUE._col1 (type: int)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                  table:
+                      input format: 
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+                      serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+                      name: default.acidtbl
+        Reducer 8 
+            Execution mode: llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: min(VALUE._col0), max(VALUE._col1), 
bloom_filter(VALUE._col2, expectedEntries=2)
+                mode: final
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE 
Column stats: NONE
+                Reduce Output Operator
+                  sort order: 
+                  Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE 
Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: int), 
_col2 (type: binary)
+        Union 2 
+            Vertex: Union 2
+
+  Stage: Stage-5
+    Dependency Collection
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+          replace: false
+          table:
+              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+              name: default.acidtbl
+
+  Stage: Stage-6
+    Stats-Aggr Operator
+
+  Stage: Stage-2
+    Move Operator
+      tables:
+          replace: false
+          table:
+              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+              name: default.acidtbl
+
+  Stage: Stage-7
+    Stats-Aggr Operator
+
+  Stage: Stage-3
+    Move Operator
+      tables:
+          replace: false
+          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
+              name: default.merge_tmp_table
+
+  Stage: Stage-8
+    Stats-Aggr Operator
+
+  Stage: Stage-1
+    Move Operator
+      tables:
+          replace: false
+          table:
+              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+              name: default.acidtbl
+
+  Stage: Stage-9
+    Stats-Aggr Operator
+

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/test/results/clientpositive/llap/orc_llap.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/orc_llap.q.out 
b/ql/src/test/results/clientpositive/llap/orc_llap.q.out
index aa1dd96..0b12725 100644
--- a/ql/src/test/results/clientpositive/llap/orc_llap.q.out
+++ b/ql/src/test/results/clientpositive/llap/orc_llap.q.out
@@ -563,10 +563,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: o2
-                  filterExpr: (csmallint is not null and cbigint is not null 
and csmallint BETWEEN DynamicValue(RS_6_o1_csmallint_min) AND 
DynamicValue(RS_6_o1_csmallint_max) and in_bloom_filter(csmallint, 
DynamicValue(RS_6_o1_csmallint_bloom_filter))) (type: boolean)
+                  filterExpr: (csmallint is not null and cbigint is not null 
and (csmallint BETWEEN DynamicValue(RS_6_o1_csmallint_min) AND 
DynamicValue(RS_6_o1_csmallint_max) and in_bloom_filter(csmallint, 
DynamicValue(RS_6_o1_csmallint_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 122880 Data size: 29079940 Basic 
stats: COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (csmallint is not null and cbigint is not null 
and csmallint BETWEEN DynamicValue(RS_6_o1_csmallint_min) AND 
DynamicValue(RS_6_o1_csmallint_max) and in_bloom_filter(csmallint, 
DynamicValue(RS_6_o1_csmallint_bloom_filter))) (type: boolean)
+                    predicate: (csmallint is not null and cbigint is not null 
and (csmallint BETWEEN DynamicValue(RS_6_o1_csmallint_min) AND 
DynamicValue(RS_6_o1_csmallint_max) and in_bloom_filter(csmallint, 
DynamicValue(RS_6_o1_csmallint_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 122880 Data size: 29079940 Basic 
stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: csmallint (type: smallint), cstring2 (type: 
string)
@@ -1016,10 +1016,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: o2
-                  filterExpr: (csmallint is not null and cbigint is not null 
and csmallint BETWEEN DynamicValue(RS_6_o1_csmallint_min) AND 
DynamicValue(RS_6_o1_csmallint_max) and in_bloom_filter(csmallint, 
DynamicValue(RS_6_o1_csmallint_bloom_filter))) (type: boolean)
+                  filterExpr: (csmallint is not null and cbigint is not null 
and (csmallint BETWEEN DynamicValue(RS_6_o1_csmallint_min) AND 
DynamicValue(RS_6_o1_csmallint_max) and in_bloom_filter(csmallint, 
DynamicValue(RS_6_o1_csmallint_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 245760 Data size: 58159880 Basic 
stats: COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (csmallint is not null and cbigint is not null 
and csmallint BETWEEN DynamicValue(RS_6_o1_csmallint_min) AND 
DynamicValue(RS_6_o1_csmallint_max) and in_bloom_filter(csmallint, 
DynamicValue(RS_6_o1_csmallint_bloom_filter))) (type: boolean)
+                    predicate: (csmallint is not null and cbigint is not null 
and (csmallint BETWEEN DynamicValue(RS_6_o1_csmallint_min) AND 
DynamicValue(RS_6_o1_csmallint_max) and in_bloom_filter(csmallint, 
DynamicValue(RS_6_o1_csmallint_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 245760 Data size: 58159880 Basic 
stats: COMPLETE Column stats: NONE
                     Select Operator
                       expressions: csmallint (type: smallint), cstring2 (type: 
string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
 
b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
index 99e5a42..0d73623 100644
--- 
a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
+++ 
b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
@@ -2944,10 +2944,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart_hour
-                  filterExpr: ((UDFToDouble(hr) = 13.0) and hr BETWEEN 
DynamicValue(RS_12_srcpart_hr_min) AND DynamicValue(RS_12_srcpart_hr_max) and 
in_bloom_filter(hr, DynamicValue(RS_12_srcpart_hr_bloom_filter))) (type: 
boolean)
+                  filterExpr: ((UDFToDouble(hr) = 13.0) and (hr BETWEEN 
DynamicValue(RS_12_srcpart_hr_min) AND DynamicValue(RS_12_srcpart_hr_max) and 
in_bloom_filter(hr, DynamicValue(RS_12_srcpart_hr_bloom_filter)))) (type: 
boolean)
                   Statistics: Num rows: 2 Data size: 344 Basic stats: COMPLETE 
Column stats: NONE
                   Filter Operator
-                    predicate: ((UDFToDouble(hr) = 13.0) and hr BETWEEN 
DynamicValue(RS_12_srcpart_hr_min) AND DynamicValue(RS_12_srcpart_hr_max) and 
in_bloom_filter(hr, DynamicValue(RS_12_srcpart_hr_bloom_filter))) (type: 
boolean)
+                    predicate: ((UDFToDouble(hr) = 13.0) and (hr BETWEEN 
DynamicValue(RS_12_srcpart_hr_min) AND DynamicValue(RS_12_srcpart_hr_max) and 
in_bloom_filter(hr, DynamicValue(RS_12_srcpart_hr_bloom_filter)))) (type: 
boolean)
                     Statistics: Num rows: 1 Data size: 172 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: hr (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c3d311f4/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out
 
b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out
index 62a6779..0bf5e85 100644
--- 
a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out
+++ 
b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_semijoin_reduction.q.out
@@ -47,10 +47,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: a
-                  filterExpr: (key_int is not null and key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: 
boolean)
+                  filterExpr: (key_int is not null and (key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter)))) (type: 
boolean)
                   Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key_int is not null and key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: 
boolean)
+                    predicate: (key_int is not null and (key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter)))) (type: 
boolean)
                     Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key_int (type: int)
@@ -183,10 +183,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: a
-                  filterExpr: (key_str is not null and key_str BETWEEN 
DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter))) (type: 
boolean)
+                  filterExpr: (key_str is not null and (key_str BETWEEN 
DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter)))) (type: 
boolean)
                   Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key_str is not null and key_str BETWEEN 
DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter))) (type: 
boolean)
+                    predicate: (key_str is not null and (key_str BETWEEN 
DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter)))) (type: 
boolean)
                     Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key_str (type: string)
@@ -319,10 +319,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: a
-                  filterExpr: (key_str is not null and key_str BETWEEN 
DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter))) (type: 
boolean)
+                  filterExpr: (key_str is not null and (key_str BETWEEN 
DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter)))) (type: 
boolean)
                   Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key_str is not null and key_str BETWEEN 
DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter))) (type: 
boolean)
+                    predicate: (key_str is not null and (key_str BETWEEN 
DynamicValue(RS_7_b_key_str_min) AND DynamicValue(RS_7_b_key_str_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter)))) (type: 
boolean)
                     Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key_str (type: string)
@@ -456,10 +456,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: a
-                  filterExpr: (key_int is not null and key_int BETWEEN 
DynamicValue(RS_10_b_key_int_min) AND DynamicValue(RS_10_b_key_int_max) and 
key_int BETWEEN DynamicValue(RS_11_c_key_int_min) AND 
DynamicValue(RS_11_c_key_int_max) and in_bloom_filter(key_int, 
DynamicValue(RS_10_b_key_int_bloom_filter)) and in_bloom_filter(key_int, 
DynamicValue(RS_11_c_key_int_bloom_filter))) (type: boolean)
+                  filterExpr: (key_int is not null and (key_int BETWEEN 
DynamicValue(RS_10_b_key_int_min) AND DynamicValue(RS_10_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_10_b_key_int_bloom_filter))) and 
(key_int BETWEEN DynamicValue(RS_11_c_key_int_min) AND 
DynamicValue(RS_11_c_key_int_max) and in_bloom_filter(key_int, 
DynamicValue(RS_11_c_key_int_bloom_filter)))) (type: boolean)
                   Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key_int is not null and key_int BETWEEN 
DynamicValue(RS_10_b_key_int_min) AND DynamicValue(RS_10_b_key_int_max) and 
key_int BETWEEN DynamicValue(RS_11_c_key_int_min) AND 
DynamicValue(RS_11_c_key_int_max) and in_bloom_filter(key_int, 
DynamicValue(RS_10_b_key_int_bloom_filter)) and in_bloom_filter(key_int, 
DynamicValue(RS_11_c_key_int_bloom_filter))) (type: boolean)
+                    predicate: (key_int is not null and (key_int BETWEEN 
DynamicValue(RS_10_b_key_int_min) AND DynamicValue(RS_10_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_10_b_key_int_bloom_filter))) and 
(key_int BETWEEN DynamicValue(RS_11_c_key_int_min) AND 
DynamicValue(RS_11_c_key_int_max) and in_bloom_filter(key_int, 
DynamicValue(RS_11_c_key_int_bloom_filter)))) (type: boolean)
                     Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key_int (type: int)
@@ -640,10 +640,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: a
-                  filterExpr: (key_str is not null and key_int is not null and 
key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND 
DynamicValue(RS_7_b_key_str_max) and key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter)) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: 
boolean)
+                  filterExpr: (key_str is not null and key_int is not null and 
(key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND 
DynamicValue(RS_7_b_key_str_max) and in_bloom_filter(key_str, 
DynamicValue(RS_7_b_key_str_bloom_filter))) and (key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter)))) (type: 
boolean)
                   Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key_str is not null and key_int is not null 
and key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND 
DynamicValue(RS_7_b_key_str_max) and key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_str, DynamicValue(RS_7_b_key_str_bloom_filter)) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: 
boolean)
+                    predicate: (key_str is not null and key_int is not null 
and (key_str BETWEEN DynamicValue(RS_7_b_key_str_min) AND 
DynamicValue(RS_7_b_key_str_max) and in_bloom_filter(key_str, 
DynamicValue(RS_7_b_key_str_bloom_filter))) and (key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter)))) (type: 
boolean)
                     Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key_str (type: string), key_int (type: int)
@@ -801,10 +801,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: a
-                  filterExpr: (key_int is not null and key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: 
boolean)
+                  filterExpr: (key_int is not null and (key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter)))) (type: 
boolean)
                   Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key_int is not null and key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: 
boolean)
+                    predicate: (key_int is not null and (key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter)))) (type: 
boolean)
                     Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key_int (type: int)
@@ -953,10 +953,10 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: a
-                  filterExpr: (key_int is not null and key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: 
boolean)
+                  filterExpr: (key_int is not null and (key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter)))) (type: 
boolean)
                   Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                   Filter Operator
-                    predicate: (key_int is not null and key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter))) (type: 
boolean)
+                    predicate: (key_int is not null and (key_int BETWEEN 
DynamicValue(RS_7_b_key_int_min) AND DynamicValue(RS_7_b_key_int_max) and 
in_bloom_filter(key_int, DynamicValue(RS_7_b_key_int_bloom_filter)))) (type: 
boolean)
                     Statistics: Num rows: 500 Data size: 90000 Basic stats: 
COMPLETE Column stats: NONE
                     Select Operator
                       expressions: key_int (type: int)

Reply via email to