You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2015/12/15 20:31:37 UTC

hive git commit: HIVE-12666: PCRExprProcFactory.GenericFuncExprProcessor.process() aggressively removes dynamic partition pruner generated synthetic join predicates (Hari Subramaniyan, reviewed by Laljo John Pullokkaran)

Repository: hive
Updated Branches:
  refs/heads/master be98f0133 -> 25c207c93


HIVE-12666: PCRExprProcFactory.GenericFuncExprProcessor.process() aggressively removes dynamic partition pruner generated synthetic join predicates (Hari Subramaniyan, reviewed by Laljo John Pullokkaran)


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

Branch: refs/heads/master
Commit: 25c207c9398b2722d594837f011c12d497aeae43
Parents: be98f01
Author: Hari Subramaniyan <ha...@apache.org>
Authored: Tue Dec 15 11:31:26 2015 -0800
Committer: Hari Subramaniyan <ha...@apache.org>
Committed: Tue Dec 15 11:31:26 2015 -0800

----------------------------------------------------------------------
 .../DynamicPartitionPruningOptimization.java    | 73 +++++++++-----------
 .../ql/optimizer/pcr/PcrExprProcFactory.java    | 31 ++++++---
 .../llap/dynamic_partition_pruning.q.out        | 10 +--
 .../vectorized_dynamic_partition_pruning.q.out  | 10 +--
 .../tez/dynamic_partition_pruning.q.out         | 10 +--
 .../results/clientpositive/tez/mergejoin.q.out  |  2 -
 .../vectorized_dynamic_partition_pruning.q.out  | 10 +--
 7 files changed, 64 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/25c207c9/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 c2749a8..292d375 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
@@ -65,7 +65,6 @@ import org.apache.hadoop.hive.ql.plan.GroupByDesc;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
 import org.apache.hadoop.hive.ql.plan.PlanUtils;
 import org.apache.hadoop.hive.ql.plan.SelectDesc;
-import org.apache.hadoop.hive.ql.plan.TableScanDesc;
 
 /**
  * This optimization looks for expressions of the kind "x IN (RS[n])". If such
@@ -166,7 +165,8 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
           procCtx.getClass().getName());
     }
 
-    final FilterOperator filter = (FilterOperator) nd;
+    FilterOperator filter = (FilterOperator) nd;
+    FilterDesc desc = filter.getConf();
 
     TableScanOperator ts = null;
 
@@ -183,19 +183,15 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
       ts = (TableScanOperator) filter.getParentOperators().get(0);
     }
 
-    final ExprNodeDesc filterPredicate = filter.getConf().getPredicate(),
-        tsPredicate = ts != null ? ts.getConf().getFilterExpr() : null,
-        predicateToUse = (tsPredicate == null) ? filterPredicate : tsPredicate;
-
     if (LOG.isDebugEnabled()) {
       LOG.debug("Parent: " + filter.getParentOperators().get(0));
-      LOG.debug("Filter: " + predicateToUse.getExprString());
+      LOG.debug("Filter: " + desc.getPredicateString());
       LOG.debug("TableScan: " + ts);
     }
 
     // collect the dynamic pruning conditions
     removerContext.dynLists.clear();
-    walkExprTree(predicateToUse, removerContext);
+    walkExprTree(desc.getPredicate(), removerContext);
 
     for (DynamicListContext ctx : removerContext) {
       String column = extractColName(ctx.parent);
@@ -228,53 +224,50 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
       }
 
       // we always remove the condition by replacing it with "true"
-      if (predicateToUse == filterPredicate) {
-        removeDppExpr(filter.getConf(), ctx);
+      ExprNodeDesc constNode = new ExprNodeConstantDesc(ctx.parent.getTypeInfo(), true);
+      if (ctx.grandParent == null) {
+        desc.setPredicate(constNode);
       } else {
-        removeDppExpr(ts.getConf(), ctx);
+        int i = ctx.grandParent.getChildren().indexOf(ctx.parent);
+        ctx.grandParent.getChildren().remove(i);
+        ctx.grandParent.getChildren().add(i, constNode);
       }
     }
 
-    // Clean up the other predicate too.
-    if (predicateToUse == tsPredicate) {
-      removerContext = new DynamicPartitionPrunerContext();
-      removerContext.dynLists.clear();
-      walkExprTree(filterPredicate, removerContext);
-      for (DynamicListContext ctx : removerContext) {
-        removeDppExpr(filter.getConf(), ctx);
-      }
-    }
+    // if we pushed the predicate into the table scan we need to remove the
+    // synthetic conditions there.
+    cleanTableScanFilters(ts);
 
     return false;
   }
 
+  private void cleanTableScanFilters(TableScanOperator ts) throws SemanticException {
 
-  private void removeDppExpr(final FilterDesc desc, DynamicListContext ctx) {
-    ExprNodeDesc constNode = new ExprNodeConstantDesc(ctx.parent.getTypeInfo(), true);
-    if (ctx.grandParent == null) {
-      desc.setPredicate(constNode);
-    } else {
-      int i = ctx.grandParent.getChildren().indexOf(ctx.parent);
-      ctx.grandParent.getChildren().remove(i);
-      ctx.grandParent.getChildren().add(i, constNode);
+    if (ts == null || ts.getConf() == null || ts.getConf().getFilterExpr() == null) {
+      // nothing to do
+      return;
     }
-  }
 
-  private void removeDppExpr(TableScanDesc conf, DynamicListContext ctx) {
+    DynamicPartitionPrunerContext removerContext = new DynamicPartitionPrunerContext();
 
-    ExprNodeDesc constNode = new ExprNodeConstantDesc(ctx.parent.getTypeInfo(), true);
-    if (ctx.grandParent == null) {
-      // we're the only node, just clear out the expression
-      conf.setFilterExpr(null);
-    } else {
-      int i = ctx.grandParent.getChildren().indexOf(ctx.parent);
-      ctx.grandParent.getChildren().remove(i);
-      ctx.grandParent.getChildren().add(i, constNode);
+    // collect the dynamic pruning conditions
+    removerContext.dynLists.clear();
+    walkExprTree(ts.getConf().getFilterExpr(), removerContext);
+
+    for (DynamicListContext ctx : removerContext) {
+      // remove the condition by replacing it with "true"
+      ExprNodeDesc constNode = new ExprNodeConstantDesc(ctx.parent.getTypeInfo(), true);
+      if (ctx.grandParent == null) {
+        // we're the only node, just clear out the expression
+        ts.getConf().setFilterExpr(null);
+      } else {
+        int i = ctx.grandParent.getChildren().indexOf(ctx.parent);
+        ctx.grandParent.getChildren().remove(i);
+        ctx.grandParent.getChildren().add(i, constNode);
+      }
     }
   }
 
-
-
   private void generateEventOperatorPlan(DynamicListContext ctx, ParseContext parseContext,
       TableScanOperator ts, String column) {
 

http://git-wip-us.apache.org/repos/asf/hive/blob/25c207c9/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrExprProcFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrExprProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrExprProcFactory.java
index 2ab1575..9cc9ea9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrExprProcFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PcrExprProcFactory.java
@@ -46,6 +46,7 @@ import org.apache.hadoop.hive.ql.parse.SemanticException;
 import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeDynamicListDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFIn;
@@ -377,17 +378,31 @@ public final class PcrExprProcFactory {
               if (FunctionRegistry.isDeterministic(((ExprNodeGenericFuncDesc) lhs)
                   .getGenericUDF())) {
                 boolean hasOnlyPartCols = true;
+                boolean hasDynamicListDesc = false;
+
                 for (ExprNodeDesc ed : ((ExprNodeGenericFuncDesc) lhs).getChildren()) {
-                    // Check if the current field expression contains only
-                    // partition column or a virtual column or constants.
-                    // If yes, this filter predicate is a candidate for this optimization.
-                    if (!(ed instanceof ExprNodeColumnDesc &&
-                         ((ExprNodeColumnDesc)ed).getIsPartitionColOrVirtualCol())) {
-                      hasOnlyPartCols = false;
+                  // Check if the current field expression contains only
+                  // partition column or a virtual column or constants.
+                  // If yes, this filter predicate is a candidate for this optimization.
+                  if (!(ed instanceof ExprNodeColumnDesc &&
+                       ((ExprNodeColumnDesc)ed).getIsPartitionColOrVirtualCol())) {
+                    hasOnlyPartCols = false;
+                    break;
+                  }
+                }
+
+                // If we have non-partition columns, we cannot remove the predicate.
+                if (hasOnlyPartCols) {
+                  // We should not remove the dynamic partition pruner generated synthetic predicates.
+                  for (int i = 1; i < children.size(); i++) {
+                    if (children.get(i) instanceof ExprNodeDynamicListDesc) {
+                      hasDynamicListDesc = true;
                       break;
                     }
-                 }
-                 removePredElem = hasOnlyPartCols;
+                  }
+                }
+
+                removePredElem = hasOnlyPartCols && !hasDynamicListDesc;
               }
           }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/25c207c9/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 17d527b..c6dc55c 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
@@ -1322,7 +1322,7 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (hr is not null and UDFToDouble(hr) is not null) (type: boolean)
+                  filterExpr: UDFToDouble(hr) is not null (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: UDFToDouble(hr) is not null (type: boolean)
@@ -2521,7 +2521,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -2596,7 +2595,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[6]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -2708,7 +2706,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[12]) (type: boolean)
                   Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4272,7 +4269,7 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (hr is not null and UDFToDouble(hr) is not null) (type: boolean)
+                  filterExpr: UDFToDouble(hr) is not null (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: UDFToDouble(hr) is not null (type: boolean)
@@ -4804,7 +4801,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4860,7 +4856,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[6]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4951,7 +4946,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[12]) (type: boolean)
                   Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/25c207c9/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 5fbc4f6..5ceefe1 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
@@ -1322,7 +1322,7 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (hr is not null and UDFToDouble(hr) is not null) (type: boolean)
+                  filterExpr: UDFToDouble(hr) is not null (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: UDFToDouble(hr) is not null (type: boolean)
@@ -2521,7 +2521,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -2596,7 +2595,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[6]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -2708,7 +2706,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[12]) (type: boolean)
                   Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4272,7 +4269,7 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (hr is not null and UDFToDouble(hr) is not null) (type: boolean)
+                  filterExpr: UDFToDouble(hr) is not null (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: UDFToDouble(hr) is not null (type: boolean)
@@ -4804,7 +4801,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4860,7 +4856,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[6]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4951,7 +4946,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[12]) (type: boolean)
                   Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/25c207c9/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out
index b4d19ee..d4b670d 100644
--- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out
+++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out
@@ -1284,7 +1284,7 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (hr is not null and UDFToDouble(hr) is not null) (type: boolean)
+                  filterExpr: UDFToDouble(hr) is not null (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: UDFToDouble(hr) is not null (type: boolean)
@@ -2445,7 +2445,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -2517,7 +2516,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[6]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -2625,7 +2623,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[12]) (type: boolean)
                   Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4141,7 +4138,7 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (hr is not null and UDFToDouble(hr) is not null) (type: boolean)
+                  filterExpr: UDFToDouble(hr) is not null (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: UDFToDouble(hr) is not null (type: boolean)
@@ -4659,7 +4656,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4713,7 +4709,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[6]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4801,7 +4796,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[12]) (type: boolean)
                   Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/25c207c9/ql/src/test/results/clientpositive/tez/mergejoin.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/mergejoin.q.out b/ql/src/test/results/clientpositive/tez/mergejoin.q.out
index b2b3872..15c204d 100644
--- a/ql/src/test/results/clientpositive/tez/mergejoin.q.out
+++ b/ql/src/test/results/clientpositive/tez/mergejoin.q.out
@@ -1363,7 +1363,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: b
-                  filterExpr: (key) IN (RS[4]) (type: boolean)
                   Statistics: Num rows: 500 Data size: 47000 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: key (type: int)
@@ -1456,7 +1455,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: a
-                  filterExpr: (key) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 242 Data size: 22748 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: key (type: int)

http://git-wip-us.apache.org/repos/asf/hive/blob/25c207c9/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out
index 2ec632a..4f6cb91 100644
--- a/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out
+++ b/ql/src/test/results/clientpositive/tez/vectorized_dynamic_partition_pruning.q.out
@@ -1303,7 +1303,7 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (hr is not null and UDFToDouble(hr) is not null) (type: boolean)
+                  filterExpr: UDFToDouble(hr) is not null (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: UDFToDouble(hr) is not null (type: boolean)
@@ -2483,7 +2483,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -2556,7 +2555,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[6]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -2666,7 +2664,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[12]) (type: boolean)
                   Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4208,7 +4205,7 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (hr is not null and UDFToDouble(hr) is not null) (type: boolean)
+                  filterExpr: UDFToDouble(hr) is not null (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Filter Operator
                     predicate: UDFToDouble(hr) is not null (type: boolean)
@@ -4735,7 +4732,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[5]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4790,7 +4786,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[6]) (type: boolean)
                   Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)
@@ -4880,7 +4875,6 @@ STAGE PLANS:
             Map Operator Tree:
                 TableScan
                   alias: srcpart
-                  filterExpr: (ds) IN (RS[12]) (type: boolean)
                   Statistics: Num rows: 1000 Data size: 10624 Basic stats: COMPLETE Column stats: NONE
                   Select Operator
                     expressions: ds (type: string)