This is an automated email from the ASF dual-hosted git repository.

kgyrtkirk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 67bb821  HIVE-24365: SWO should not create complex and redundant 
filter expressions (#1661)  (Zoltan Haindrich reviewed by Jesus Camacho 
Rodriguez)
67bb821 is described below

commit 67bb821d02273f8c9f8f45340c9445b5508dc731
Author: Zoltan Haindrich <k...@rxd.hu>
AuthorDate: Fri Nov 13 08:56:57 2020 +0100

    HIVE-24365: SWO should not create complex and redundant filter expressions 
(#1661)  (Zoltan Haindrich reviewed by Jesus Camacho Rodriguez)
---
 .../apache/hadoop/hive/ql/exec/FilterOperator.java |  7 ++++
 .../hadoop/hive/ql/exec/GroupByOperator.java       |  7 ++++
 .../org/apache/hadoop/hive/ql/exec/Operator.java   |  8 +++++
 .../hadoop/hive/ql/exec/ReduceSinkOperator.java    |  8 +++++
 .../apache/hadoop/hive/ql/exec/SelectOperator.java |  8 +++++
 .../hive/ql/optimizer/SharedWorkOptimizer.java     | 31 +++++++++++++---
 .../hive/ql/optimizer/graph/DotExporter.java       |  8 +++++
 .../hadoop/hive/ql/plan/ExprNodeDescUtils.java     | 41 ++++++++++++++++++++++
 .../perf/tez/constraints/query23.q.out             |  6 ++--
 .../perf/tez/constraints/query31.q.out             |  8 ++---
 .../perf/tez/constraints/query88.q.out             | 14 ++++----
 .../results/clientpositive/perf/tez/query31.q.out  |  8 ++---
 .../results/clientpositive/perf/tez/query88.q.out  | 14 ++++----
 13 files changed, 138 insertions(+), 30 deletions(-)

diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java
index bb08f24..a3af21a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.hive.ql.CompilationOpContext;
 import org.apache.hadoop.hive.ql.io.IOContext;
 import org.apache.hadoop.hive.ql.io.IOContextMap;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.ExprNodeDescUtils;
 import org.apache.hadoop.hive.ql.plan.FilterDesc;
 import org.apache.hadoop.hive.ql.plan.api.OperatorType;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
@@ -163,4 +164,10 @@ public class FilterOperator extends Operator<FilterDesc> 
implements
   public boolean supportUnionRemoveOptimization() {
     return true;
   }
+
+  @Override
+  public void replaceTabAlias(String oldAlias, String newAlias) {
+    super.replaceTabAlias(oldAlias, newAlias);
+    ExprNodeDescUtils.replaceTabAlias(getConf().getPredicate(), oldAlias, 
newAlias);
+  }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
index 01de9df..f118aa1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
@@ -41,6 +41,7 @@ import org.apache.hadoop.hive.ql.parse.OpParseContext;
 import org.apache.hadoop.hive.ql.plan.AggregationDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeDescUtils;
 import org.apache.hadoop.hive.ql.plan.GroupByDesc;
 import org.apache.hadoop.hive.ql.plan.GroupByDesc.Mode;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
@@ -1146,4 +1147,10 @@ public class GroupByOperator extends 
Operator<GroupByDesc> implements IConfigure
     }
   }
 
+  @Override
+  public void replaceTabAlias(String oldAlias, String newAlias) {
+    super.replaceTabAlias(oldAlias, newAlias);
+    ExprNodeDescUtils.replaceTabAlias(getConf().getKeys(), oldAlias, newAlias);
+  }
+
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java
index 0c32d6d..173f903 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java
@@ -47,6 +47,7 @@ import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 import org.apache.hadoop.hive.ql.plan.Explain;
 import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeDescUtils;
 import org.apache.hadoop.hive.ql.plan.OpTraits;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
 import org.apache.hadoop.hive.ql.plan.Statistics;
@@ -1543,4 +1544,11 @@ public abstract class Operator<T extends OperatorDesc> 
implements Serializable,C
     }
     return true;
   }
+
+  public void replaceTabAlias(String oldAlias, String newAlias) {
+    ExprNodeDescUtils.replaceTabAlias(getConf().getColumnExprMap(), oldAlias, 
newAlias);
+    for (Operator<? extends OperatorDesc> c : getChildOperators()) {
+      c.replaceTabAlias(oldAlias, newAlias);
+    }
+  }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java
index efc129f..071c372 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java
@@ -605,4 +605,12 @@ public class ReduceSinkOperator extends 
TerminalOperator<ReduceSinkDesc>
     this.out = _out;
   }
 
+  @Override
+  public void replaceTabAlias(String oldAlias, String newAlias) {
+    super.replaceTabAlias(oldAlias, newAlias);
+    ExprNodeDescUtils.replaceTabAlias(getConf().getColumnExprMap(), oldAlias, 
newAlias);
+    ExprNodeDescUtils.replaceTabAlias(getConf().getBucketCols(), oldAlias, 
newAlias);
+    ExprNodeDescUtils.replaceTabAlias(getConf().getPartitionCols(), oldAlias, 
newAlias);
+    ExprNodeDescUtils.replaceTabAlias(getConf().getKeyCols(), oldAlias, 
newAlias);
+  }
 }
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
index 7a9ddaf..1b3293e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.hive.ql.CompilationOpContext;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeDescUtils;
 import org.apache.hadoop.hive.ql.plan.SelectDesc;
 import org.apache.hadoop.hive.ql.plan.api.OperatorType;
 
@@ -201,4 +202,11 @@ public class SelectOperator extends Operator<SelectDesc> 
implements Serializable
 
     return true;
   }
+
+  @Override
+  public void replaceTabAlias(String oldAlias, String newAlias) {
+    super.replaceTabAlias(oldAlias, newAlias);
+    ExprNodeDescUtils.replaceTabAlias(getConf().getColumnExprMap(), oldAlias, 
newAlias);
+  }
+
 }
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedWorkOptimizer.java 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedWorkOptimizer.java
index 30171d9..09cd99c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedWorkOptimizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedWorkOptimizer.java
@@ -18,7 +18,6 @@
 package org.apache.hadoop.hive.ql.optimizer;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.BitSet;
 import java.util.Collection;
 import java.util.Collections;
@@ -34,7 +33,6 @@ import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Set;
 import java.util.TreeMap;
-import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.hive.common.TableName;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
@@ -73,7 +71,6 @@ import org.apache.hadoop.hive.ql.plan.TableScanDesc;
 import org.apache.hadoop.hive.ql.stats.StatsUtils;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBetween;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFInBloomFilter;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPOr;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
 import org.slf4j.Logger;
@@ -356,6 +353,10 @@ public class SharedWorkOptimizer extends Transform {
       for (ExprNodeDesc expr : semijoinExprNodes) {
         ExprNodeDescUtils.replaceTabAlias(expr, oldAlias, newAlias);
       }
+      List<Operator<? extends OperatorDesc>> children = ts.getChildOperators();
+      for (Operator<? extends OperatorDesc> c : children) {
+        c.replaceTabAlias(oldAlias, newAlias);
+      }
     }
 
     public ExprNodeDesc getFullFilterExpr() throws UDFArgumentException {
@@ -498,11 +499,13 @@ public class SharedWorkOptimizer extends Transform {
               // For RemoveSemiJoin; this will clear the discardable's 
semijoin filters
               replaceSemijoinExpressions(discardableTsOp, 
modelR.getSemiJoinFilter());
             }
+
             modelD.replaceTabAlias(discardableTsOp.getConf().getAlias(), 
retainableTsOp.getConf().getAlias());
 
             // Push filter on top of children for discardable
             pushFilterToTopOfTableScan(optimizerCache, modelD);
 
+
             // Obtain filter for shared TS operator
             ExprNodeDesc exprNode = null;
             if (modelR.normalFilterExpr != null && modelD.normalFilterExpr != 
null) {
@@ -1942,20 +1945,26 @@ public class SharedWorkOptimizer extends Transform {
     }
     List<Operator<? extends OperatorDesc>> allChildren =
         Lists.newArrayList(tsOp.getChildOperators());
+    childOperators:
     for (Operator<? extends OperatorDesc> op : allChildren) {
+      if (optimizerCache.isKnownFilteringOperator(op)) {
+        continue;
+      }
       if (op instanceof FilterOperator) {
         FilterOperator filterOp = (FilterOperator) op;
         ExprNodeDesc filterExprNode  = filterOp.getConf().getPredicate();
         if (tableScanExprNode.isSame(filterExprNode)) {
           // We do not need to do anything
-          return;
+          optimizerCache.setKnownFilteringOperator(filterOp);
+          continue;
         }
         if (tableScanExprNode.getGenericUDF() instanceof GenericUDFOPOr) {
           for (ExprNodeDesc childExprNode : tableScanExprNode.getChildren()) {
             if (childExprNode.isSame(filterExprNode)) {
               // We do not need to do anything, it is in the OR expression
               // so probably we pushed previously
-              return;
+              optimizerCache.setKnownFilteringOperator(filterOp);
+              continue childOperators;
             }
           }
         }
@@ -1963,6 +1972,7 @@ public class SharedWorkOptimizer extends Transform {
         if (!isSame(filterOp.getConf().getPredicate(), newFilterExpr)) {
           filterOp.getConf().setPredicate(newFilterExpr);
         }
+        optimizerCache.setKnownFilteringOperator(filterOp);
       } else {
         Operator<FilterDesc> newOp = 
OperatorFactory.get(tsOp.getCompilationOpContext(),
                 new FilterDesc(tableScanExprNode.clone(), false),
@@ -1973,8 +1983,10 @@ public class SharedWorkOptimizer extends Transform {
         newOp.getChildOperators().add(op);
         // Add to cache (same group as tsOp)
         optimizerCache.putIfWorkExists(newOp, tsOp);
+        optimizerCache.setKnownFilteringOperator(newOp);
       }
     }
+
   }
 
   static boolean canDeduplicateReduceTraits(ReduceSinkDesc retainable, 
ReduceSinkDesc discardable) {
@@ -2115,6 +2127,7 @@ public class SharedWorkOptimizer extends Transform {
     // Table scan operators to DPP sources
     final Multimap<TableScanOperator, Operator<?>> tableScanToDPPSource =
             HashMultimap.<TableScanOperator, Operator<?>>create();
+    private Set<Operator<?>> knownFilterOperators = new HashSet<>();
 
     // Add new operator to cache work group of existing operator (if group 
exists)
     void putIfWorkExists(Operator<?> opToAdd, Operator<?> existingOp) {
@@ -2128,6 +2141,14 @@ public class SharedWorkOptimizer extends Transform {
       }
     }
 
+    public boolean isKnownFilteringOperator(Operator<? extends OperatorDesc> 
op) {
+      return knownFilterOperators.contains(op);
+    }
+
+    public void setKnownFilteringOperator(Operator<?> filterOp) {
+      knownFilterOperators.add(filterOp);
+    }
+
     // Remove operator
     void removeOp(Operator<?> opToRemove) {
       Set<Operator<?>> s = operatorToWorkOperators.get(opToRemove);
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/graph/DotExporter.java 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/graph/DotExporter.java
index f52e4d8..8f0a6eb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/graph/DotExporter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/graph/DotExporter.java
@@ -27,10 +27,13 @@ import java.util.Map;
 import java.util.Set;
 
 import com.google.common.base.Joiner;
+
+import org.apache.hadoop.hive.ql.exec.FilterOperator;
 import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.TableScanOperator;
 import org.apache.hadoop.hive.ql.optimizer.graph.OperatorGraph.Cluster;
 import org.apache.hadoop.hive.ql.optimizer.graph.OperatorGraph.OpEdge;
+import org.apache.hadoop.hive.ql.plan.FilterDesc;
 import org.apache.hadoop.hive.ql.plan.JoinDesc;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
 import org.apache.hadoop.hive.ql.plan.TableScanDesc;
@@ -94,6 +97,11 @@ public class DotExporter {
       TableScanDesc conf = ts.getConf();
       rows.add(vBox(conf.getTableName(), conf.getAlias()));
     }
+    if ((n instanceof FilterOperator)) {
+      FilterOperator fil = (FilterOperator) n;
+      FilterDesc conf = fil.getConf();
+      rows.add(vBox("filter:", conf.getPredicateString()));
+    }
     return vBox(rows);
   }
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDescUtils.java 
b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDescUtils.java
index f1a8368..232e248 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDescUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDescUtils.java
@@ -1067,6 +1067,15 @@ public class ExprNodeDescUtils {
     for (ExprNodeDesc e : inputExpr) {
       conjunctiveDecomposition(e, operands);
     }
+    for (int i = 0; i < operands.size(); i++) {
+      ExprNodeDesc curr = operands.get(i);
+      if (isOr(curr)) {
+        if (deterministicIntersection(curr.getChildren(), operands)) {
+          operands.remove(i);
+          i--;
+        }
+      }
+    }
 
     if (operands.isEmpty()) {
       return null;
@@ -1078,6 +1087,23 @@ public class ExprNodeDescUtils {
     }
   }
 
+  /**
+   * Checks wether the two expression sets have a common deterministic 
intersection.
+   */
+  private static boolean deterministicIntersection(List<ExprNodeDesc> li1, 
List<ExprNodeDesc> li2) {
+    for (ExprNodeDesc e1 : li1) {
+      if (!isDeterministic(e1)) {
+        continue;
+      }
+      for (ExprNodeDesc e2 : li2) {
+        if (e1.isSame(e2)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
   private static void conjunctiveDecomposition(ExprNodeDesc expr, 
List<ExprNodeDesc> operands) {
     if (isAnd(expr)) {
       for (ExprNodeDesc c : expr.getChildren()) {
@@ -1200,4 +1226,19 @@ public class ExprNodeDescUtils {
     return expr;
   }
 
+  public static void replaceTabAlias(Map<String, ExprNodeDesc> exprMap, String 
oldAlias, String newAlias) {
+    if (exprMap != null) {
+      ExprNodeDescUtils.replaceTabAlias(exprMap.values(), oldAlias, newAlias);
+    }
+  }
+
+  public static void replaceTabAlias(Collection<ExprNodeDesc> exprs, String 
oldAlias, String newAlias) {
+    if (exprs != null) {
+      for (ExprNodeDesc expr : exprs) {
+        replaceTabAlias(expr, oldAlias, newAlias);
+      }
+    }
+
+  }
+
 }
diff --git 
a/ql/src/test/results/clientpositive/perf/tez/constraints/query23.q.out 
b/ql/src/test/results/clientpositive/perf/tez/constraints/query23.q.out
index fa5a1f0..090ec2f 100644
--- a/ql/src/test/results/clientpositive/perf/tez/constraints/query23.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/constraints/query23.q.out
@@ -255,7 +255,7 @@ Stage-0
                                                             Select Operator 
[SEL_421] (rows=525327388 width=119)
                                                               
Output:["_col0","_col1","_col2"]
                                                               Filter Operator 
[FIL_417] (rows=525327388 width=118)
-                                                                
predicate:(ss_sold_date_sk is not null and ss_customer_sk is not null and 
ss_sold_date_sk BETWEEN DynamicValue(RS_26_date_dim_d_date_sk_min) AND 
DynamicValue(RS_26_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_26_date_dim_d_date_sk_bloom_filter)) and (ss_customer_sk is not 
null or (ss_sold_date_sk is not null and ss_customer_sk is not null)) and 
((ss_customer_sk BETWEEN DynamicValue(RS_47_catal [...]
+                                                                
predicate:(ss_sold_date_sk is not null and ss_customer_sk is not null and 
ss_sold_date_sk BETWEEN DynamicValue(RS_26_date_dim_d_date_sk_min) AND 
DynamicValue(RS_26_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_26_date_dim_d_date_sk_bloom_filter)))
                                                                 TableScan 
[TS_10] (rows=575995635 width=114)
                                                                   
default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_customer_sk","ss_quantity","ss_sales_price","ss_sold_date_sk","ss_item_sk"]
                                                                 <-Reducer 13 
[BROADCAST_EDGE] vectorized
@@ -393,7 +393,7 @@ Stage-0
                                               Select Operator [SEL_422] 
(rows=550076554 width=7)
                                                 Output:["_col0","_col1"]
                                                 Filter Operator [FIL_418] 
(rows=550076554 width=7)
-                                                  predicate:(ss_sold_date_sk 
is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_58_date_dim_d_date_sk_min) AND 
DynamicValue(RS_58_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_58_date_dim_d_date_sk_bloom_filter)) and (((ss_customer_sk is 
not null or (ss_sold_date_sk is not null and ss_customer_sk is not null)) and 
((ss_customer_sk BETWEEN 
DynamicValue(RS_47_catalog_sales_cs_bill_customer_sk_min) AND Dynam [...]
+                                                  predicate:(ss_sold_date_sk 
is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_58_date_dim_d_date_sk_min) AND 
DynamicValue(RS_58_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_58_date_dim_d_date_sk_bloom_filter)))
                                                    Please refer to the 
previous TableScan [TS_10]
           <-Reducer 4 [CONTAINS]
             Reduce Output Operator [RS_370]
@@ -463,6 +463,6 @@ Stage-0
                                               Select Operator [SEL_420] 
(rows=550080312 width=114)
                                                 Output:["_col0","_col1"]
                                                 Filter Operator [FIL_416] 
(rows=550080312 width=114)
-                                                  predicate:(ss_customer_sk is 
not null and ss_customer_sk BETWEEN 
DynamicValue(RS_47_catalog_sales_cs_bill_customer_sk_min) AND 
DynamicValue(RS_47_catalog_sales_cs_bill_customer_sk_max) and 
in_bloom_filter(ss_customer_sk, 
DynamicValue(RS_47_catalog_sales_cs_bill_customer_sk_bloom_filter)) and 
(ss_customer_sk is not null or (ss_sold_date_sk is not null and ss_customer_sk 
is not null)) and ((ss_customer_sk BETWEEN DynamicValue(RS_47_catalog_ [...]
+                                                  predicate:(ss_customer_sk is 
not null and ss_customer_sk BETWEEN 
DynamicValue(RS_47_catalog_sales_cs_bill_customer_sk_min) AND 
DynamicValue(RS_47_catalog_sales_cs_bill_customer_sk_max) and 
in_bloom_filter(ss_customer_sk, 
DynamicValue(RS_47_catalog_sales_cs_bill_customer_sk_bloom_filter)))
                                                    Please refer to the 
previous TableScan [TS_10]
 
diff --git 
a/ql/src/test/results/clientpositive/perf/tez/constraints/query31.q.out 
b/ql/src/test/results/clientpositive/perf/tez/constraints/query31.q.out
index cd8fee1..251b511 100644
--- a/ql/src/test/results/clientpositive/perf/tez/constraints/query31.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/constraints/query31.q.out
@@ -208,7 +208,7 @@ Stage-0
                                       Select Operator [SEL_527] 
(rows=525327191 width=114)
                                         Output:["_col0","_col1","_col2"]
                                         Filter Operator [FIL_524] 
(rows=525327191 width=114)
-                                          predicate:(ss_sold_date_sk is not 
null and ss_addr_sk is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_70_date_dim_d_date_sk_min) AND 
DynamicValue(RS_70_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_70_date_dim_d_date_sk_bloom_filter)) and ((ss_sold_date_sk 
BETWEEN DynamicValue(RS_70_date_dim_d_date_sk_min) AND 
DynamicValue(RS_70_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_70_ [...]
+                                          predicate:(ss_sold_date_sk is not 
null and ss_addr_sk is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_70_date_dim_d_date_sk_min) AND 
DynamicValue(RS_70_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_70_date_dim_d_date_sk_bloom_filter)))
                                           TableScan [TS_60] (rows=575995635 
width=114)
                                             
default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_sold_date_sk","ss_addr_sk","ss_ext_sales_price"]
                                           <-Reducer 23 [BROADCAST_EDGE] 
vectorized
@@ -283,7 +283,7 @@ Stage-0
                                       Select Operator [SEL_528] 
(rows=525327191 width=114)
                                         Output:["_col0","_col1","_col2"]
                                         Filter Operator [FIL_525] 
(rows=525327191 width=114)
-                                          predicate:(ss_sold_date_sk is not 
null and ss_addr_sk is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_90_date_dim_d_date_sk_min) AND 
DynamicValue(RS_90_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_90_date_dim_d_date_sk_bloom_filter)) and ((ss_sold_date_sk 
BETWEEN DynamicValue(RS_70_date_dim_d_date_sk_min) AND 
DynamicValue(RS_70_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_70_ [...]
+                                          predicate:(ss_sold_date_sk is not 
null and ss_addr_sk is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_90_date_dim_d_date_sk_min) AND 
DynamicValue(RS_90_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_90_date_dim_d_date_sk_bloom_filter)))
                                            Please refer to the previous 
TableScan [TS_60]
                 <-Reducer 30 [SIMPLE_EDGE] vectorized
                   SHUFFLE [RS_538]
@@ -440,7 +440,7 @@ Stage-0
                                       Select Operator [SEL_497] 
(rows=143931246 width=119)
                                         Output:["_col0","_col1","_col2"]
                                         Filter Operator [FIL_494] 
(rows=143931246 width=119)
-                                          predicate:(ws_sold_date_sk is not 
null and ws_bill_addr_sk is not null and ws_sold_date_sk BETWEEN 
DynamicValue(RS_30_date_dim_d_date_sk_min) AND 
DynamicValue(RS_30_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(RS_30_date_dim_d_date_sk_bloom_filter)) and ((ws_sold_date_sk 
BETWEEN DynamicValue(RS_10_date_dim_d_date_sk_min) AND 
DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(R [...]
+                                          predicate:(ws_sold_date_sk is not 
null and ws_bill_addr_sk is not null and ws_sold_date_sk BETWEEN 
DynamicValue(RS_30_date_dim_d_date_sk_min) AND 
DynamicValue(RS_30_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(RS_30_date_dim_d_date_sk_bloom_filter)))
                                            Please refer to the previous 
TableScan [TS_0]
                     <-Reducer 4 [SIMPLE_EDGE] vectorized
                       SHUFFLE [RS_512]
@@ -475,6 +475,6 @@ Stage-0
                                         Select Operator [SEL_496] 
(rows=143931246 width=119)
                                           Output:["_col0","_col1","_col2"]
                                           Filter Operator [FIL_493] 
(rows=143931246 width=119)
-                                            predicate:(ws_sold_date_sk is not 
null and ws_bill_addr_sk is not null and ws_sold_date_sk BETWEEN 
DynamicValue(RS_10_date_dim_d_date_sk_min) AND 
DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(RS_10_date_dim_d_date_sk_bloom_filter)) and ((ws_sold_date_sk 
BETWEEN DynamicValue(RS_10_date_dim_d_date_sk_min) AND 
DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue [...]
+                                            predicate:(ws_sold_date_sk is not 
null and ws_bill_addr_sk is not null and ws_sold_date_sk BETWEEN 
DynamicValue(RS_10_date_dim_d_date_sk_min) AND 
DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(RS_10_date_dim_d_date_sk_bloom_filter)))
                                              Please refer to the previous 
TableScan [TS_0]
 
diff --git 
a/ql/src/test/results/clientpositive/perf/tez/constraints/query88.q.out 
b/ql/src/test/results/clientpositive/perf/tez/constraints/query88.q.out
index bcb0630..1a7d349 100644
--- a/ql/src/test/results/clientpositive/perf/tez/constraints/query88.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/constraints/query88.q.out
@@ -313,7 +313,7 @@ Stage-0
                                         Select Operator [SEL_683] 
(rows=501695814 width=11)
                                           Output:["_col0","_col1","_col2"]
                                           Filter Operator [FIL_675] 
(rows=501695814 width=11)
-                                            predicate:(ss_sold_time_sk is not 
null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_146_time_dim_t_time_sk_min) AND 
DynamicValue(RS_146_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_146_time_dim_t_time_sk_bloom_filter)) and ((((ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue(RS_16_t [...]
+                                            predicate:(ss_sold_time_sk is not 
null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_146_time_dim_t_time_sk_min) AND 
DynamicValue(RS_146_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_146_time_dim_t_time_sk_bloom_filter)))
                                             TableScan [TS_0] (rows=575995635 
width=11)
                                               
default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_sold_time_sk","ss_hdemo_sk","ss_store_sk"]
                                             <-Reducer 43 [BROADCAST_EDGE] 
vectorized
@@ -479,7 +479,7 @@ Stage-0
                                             Select Operator [SEL_682] 
(rows=501695814 width=11)
                                               Output:["_col0","_col1","_col2"]
                                               Filter Operator [FIL_674] 
(rows=501695814 width=11)
-                                                predicate:(ss_sold_time_sk is 
not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_120_time_dim_t_time_sk_min) AND 
DynamicValue(RS_120_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_120_time_dim_t_time_sk_bloom_filter)) and ((((ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue(RS_ [...]
+                                                predicate:(ss_sold_time_sk is 
not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_120_time_dim_t_time_sk_min) AND 
DynamicValue(RS_120_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_120_time_dim_t_time_sk_bloom_filter)))
                                                  Please refer to the previous 
TableScan [TS_0]
                                         <-Map 41 [SIMPLE_EDGE] vectorized
                                           SHUFFLE [RS_700]
@@ -523,7 +523,7 @@ Stage-0
                                                 Select Operator [SEL_681] 
(rows=501695814 width=11)
                                                   
Output:["_col0","_col1","_col2"]
                                                   Filter Operator [FIL_673] 
(rows=501695814 width=11)
-                                                    predicate:(ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_94_time_dim_t_time_sk_min) AND 
DynamicValue(RS_94_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_94_time_dim_t_time_sk_bloom_filter)) and ((ss_sold_time_sk is 
not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue(RS_1 [...]
+                                                    predicate:(ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_94_time_dim_t_time_sk_min) AND 
DynamicValue(RS_94_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_94_time_dim_t_time_sk_bloom_filter)))
                                                      Please refer to the 
previous TableScan [TS_0]
                                             <-Map 41 [SIMPLE_EDGE] vectorized
                                               SHUFFLE [RS_699]
@@ -567,7 +567,7 @@ Stage-0
                                                     Select Operator [SEL_680] 
(rows=501695814 width=11)
                                                       
Output:["_col0","_col1","_col2"]
                                                       Filter Operator 
[FIL_672] (rows=501695814 width=11)
-                                                        
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_68_time_dim_t_time_sk_min) AND 
DynamicValue(RS_68_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_68_time_dim_t_time_sk_bloom_filter)) and ((ss_sold_time_sk is 
not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue( [...]
+                                                        
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_68_time_dim_t_time_sk_min) AND 
DynamicValue(RS_68_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_68_time_dim_t_time_sk_bloom_filter)))
                                                          Please refer to the 
previous TableScan [TS_0]
                                                 <-Map 41 [SIMPLE_EDGE] 
vectorized
                                                   SHUFFLE [RS_698]
@@ -611,7 +611,7 @@ Stage-0
                                                         Select Operator 
[SEL_679] (rows=501695814 width=11)
                                                           
Output:["_col0","_col1","_col2"]
                                                           Filter Operator 
[FIL_671] (rows=501695814 width=11)
-                                                            
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_42_time_dim_t_time_sk_min) AND 
DynamicValue(RS_42_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_42_time_dim_t_time_sk_bloom_filter)) and ((ss_sold_time_sk 
BETWEEN DynamicValue(RS_16_time_dim_t_time_sk_min) AND 
DynamicValue(RS_16_time_dim_t_time_sk_max) and in_bl [...]
+                                                            
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_42_time_dim_t_time_sk_min) AND 
DynamicValue(RS_42_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_42_time_dim_t_time_sk_bloom_filter)))
                                                              Please refer to 
the previous TableScan [TS_0]
                                                     <-Map 41 [SIMPLE_EDGE] 
vectorized
                                                       SHUFFLE [RS_697]
@@ -651,7 +651,7 @@ Stage-0
                                                         Select Operator 
[SEL_678] (rows=501695814 width=11)
                                                           
Output:["_col0","_col1","_col2"]
                                                           Filter Operator 
[FIL_670] (rows=501695814 width=11)
-                                                            
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_16_time_dim_t_time_sk_min) AND 
DynamicValue(RS_16_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_16_time_dim_t_time_sk_bloom_filter)) and ((ss_sold_time_sk 
BETWEEN DynamicValue(RS_16_time_dim_t_time_sk_min) AND 
DynamicValue(RS_16_time_dim_t_time_sk_max) and in_bl [...]
+                                                            
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_16_time_dim_t_time_sk_min) AND 
DynamicValue(RS_16_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_16_time_dim_t_time_sk_bloom_filter)))
                                                              Please refer to 
the previous TableScan [TS_0]
                                                     <-Map 41 [SIMPLE_EDGE] 
vectorized
                                                       SHUFFLE [RS_696]
@@ -691,7 +691,7 @@ Stage-0
                                     Select Operator [SEL_684] (rows=501695814 
width=11)
                                       Output:["_col0","_col1","_col2"]
                                       Filter Operator [FIL_676] 
(rows=501695814 width=11)
-                                        predicate:(ss_sold_time_sk is not null 
and ss_hdemo_sk is not null and ss_store_sk is not null and ss_sold_time_sk 
BETWEEN DynamicValue(RS_172_time_dim_t_time_sk_min) AND 
DynamicValue(RS_172_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_172_time_dim_t_time_sk_bloom_filter)) and ((((((ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue(RS_16_tim [...]
+                                        predicate:(ss_sold_time_sk is not null 
and ss_hdemo_sk is not null and ss_store_sk is not null and ss_sold_time_sk 
BETWEEN DynamicValue(RS_172_time_dim_t_time_sk_min) AND 
DynamicValue(RS_172_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_172_time_dim_t_time_sk_bloom_filter)))
                                          Please refer to the previous 
TableScan [TS_0]
                                 <-Map 41 [SIMPLE_EDGE] vectorized
                                   SHUFFLE [RS_702]
diff --git a/ql/src/test/results/clientpositive/perf/tez/query31.q.out 
b/ql/src/test/results/clientpositive/perf/tez/query31.q.out
index 10e90c1..facacbb 100644
--- a/ql/src/test/results/clientpositive/perf/tez/query31.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/query31.q.out
@@ -208,7 +208,7 @@ Stage-0
                                       Select Operator [SEL_527] 
(rows=525327191 width=114)
                                         Output:["_col0","_col1","_col2"]
                                         Filter Operator [FIL_524] 
(rows=525327191 width=114)
-                                          predicate:(ss_sold_date_sk is not 
null and ss_addr_sk is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_70_date_dim_d_date_sk_min) AND 
DynamicValue(RS_70_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_70_date_dim_d_date_sk_bloom_filter)) and ((ss_sold_date_sk 
BETWEEN DynamicValue(RS_70_date_dim_d_date_sk_min) AND 
DynamicValue(RS_70_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_70_ [...]
+                                          predicate:(ss_sold_date_sk is not 
null and ss_addr_sk is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_70_date_dim_d_date_sk_min) AND 
DynamicValue(RS_70_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_70_date_dim_d_date_sk_bloom_filter)))
                                           TableScan [TS_60] (rows=575995635 
width=114)
                                             
default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_sold_date_sk","ss_addr_sk","ss_ext_sales_price"]
                                           <-Reducer 23 [BROADCAST_EDGE] 
vectorized
@@ -283,7 +283,7 @@ Stage-0
                                       Select Operator [SEL_528] 
(rows=525327191 width=114)
                                         Output:["_col0","_col1","_col2"]
                                         Filter Operator [FIL_525] 
(rows=525327191 width=114)
-                                          predicate:(ss_sold_date_sk is not 
null and ss_addr_sk is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_90_date_dim_d_date_sk_min) AND 
DynamicValue(RS_90_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_90_date_dim_d_date_sk_bloom_filter)) and ((ss_sold_date_sk 
BETWEEN DynamicValue(RS_70_date_dim_d_date_sk_min) AND 
DynamicValue(RS_70_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_70_ [...]
+                                          predicate:(ss_sold_date_sk is not 
null and ss_addr_sk is not null and ss_sold_date_sk BETWEEN 
DynamicValue(RS_90_date_dim_d_date_sk_min) AND 
DynamicValue(RS_90_date_dim_d_date_sk_max) and in_bloom_filter(ss_sold_date_sk, 
DynamicValue(RS_90_date_dim_d_date_sk_bloom_filter)))
                                            Please refer to the previous 
TableScan [TS_60]
                 <-Reducer 30 [SIMPLE_EDGE] vectorized
                   SHUFFLE [RS_538]
@@ -440,7 +440,7 @@ Stage-0
                                       Select Operator [SEL_497] 
(rows=143931246 width=119)
                                         Output:["_col0","_col1","_col2"]
                                         Filter Operator [FIL_494] 
(rows=143931246 width=119)
-                                          predicate:(ws_sold_date_sk is not 
null and ws_bill_addr_sk is not null and ws_sold_date_sk BETWEEN 
DynamicValue(RS_30_date_dim_d_date_sk_min) AND 
DynamicValue(RS_30_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(RS_30_date_dim_d_date_sk_bloom_filter)) and ((ws_sold_date_sk 
BETWEEN DynamicValue(RS_10_date_dim_d_date_sk_min) AND 
DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(R [...]
+                                          predicate:(ws_sold_date_sk is not 
null and ws_bill_addr_sk is not null and ws_sold_date_sk BETWEEN 
DynamicValue(RS_30_date_dim_d_date_sk_min) AND 
DynamicValue(RS_30_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(RS_30_date_dim_d_date_sk_bloom_filter)))
                                            Please refer to the previous 
TableScan [TS_0]
                     <-Reducer 4 [SIMPLE_EDGE] vectorized
                       SHUFFLE [RS_512]
@@ -475,6 +475,6 @@ Stage-0
                                         Select Operator [SEL_496] 
(rows=143931246 width=119)
                                           Output:["_col0","_col1","_col2"]
                                           Filter Operator [FIL_493] 
(rows=143931246 width=119)
-                                            predicate:(ws_sold_date_sk is not 
null and ws_bill_addr_sk is not null and ws_sold_date_sk BETWEEN 
DynamicValue(RS_10_date_dim_d_date_sk_min) AND 
DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(RS_10_date_dim_d_date_sk_bloom_filter)) and ((ws_sold_date_sk 
BETWEEN DynamicValue(RS_10_date_dim_d_date_sk_min) AND 
DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue [...]
+                                            predicate:(ws_sold_date_sk is not 
null and ws_bill_addr_sk is not null and ws_sold_date_sk BETWEEN 
DynamicValue(RS_10_date_dim_d_date_sk_min) AND 
DynamicValue(RS_10_date_dim_d_date_sk_max) and in_bloom_filter(ws_sold_date_sk, 
DynamicValue(RS_10_date_dim_d_date_sk_bloom_filter)))
                                              Please refer to the previous 
TableScan [TS_0]
 
diff --git a/ql/src/test/results/clientpositive/perf/tez/query88.q.out 
b/ql/src/test/results/clientpositive/perf/tez/query88.q.out
index 8158f6d..c07e99a 100644
--- a/ql/src/test/results/clientpositive/perf/tez/query88.q.out
+++ b/ql/src/test/results/clientpositive/perf/tez/query88.q.out
@@ -313,7 +313,7 @@ Stage-0
                                         Select Operator [SEL_683] 
(rows=501695814 width=11)
                                           Output:["_col0","_col1","_col2"]
                                           Filter Operator [FIL_675] 
(rows=501695814 width=11)
-                                            predicate:(ss_sold_time_sk is not 
null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_146_time_dim_t_time_sk_min) AND 
DynamicValue(RS_146_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_146_time_dim_t_time_sk_bloom_filter)) and ((((ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue(RS_16_t [...]
+                                            predicate:(ss_sold_time_sk is not 
null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_146_time_dim_t_time_sk_min) AND 
DynamicValue(RS_146_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_146_time_dim_t_time_sk_bloom_filter)))
                                             TableScan [TS_0] (rows=575995635 
width=11)
                                               
default@store_sales,store_sales,Tbl:COMPLETE,Col:COMPLETE,Output:["ss_sold_time_sk","ss_hdemo_sk","ss_store_sk"]
                                             <-Reducer 43 [BROADCAST_EDGE] 
vectorized
@@ -479,7 +479,7 @@ Stage-0
                                             Select Operator [SEL_682] 
(rows=501695814 width=11)
                                               Output:["_col0","_col1","_col2"]
                                               Filter Operator [FIL_674] 
(rows=501695814 width=11)
-                                                predicate:(ss_sold_time_sk is 
not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_120_time_dim_t_time_sk_min) AND 
DynamicValue(RS_120_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_120_time_dim_t_time_sk_bloom_filter)) and ((((ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue(RS_ [...]
+                                                predicate:(ss_sold_time_sk is 
not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_120_time_dim_t_time_sk_min) AND 
DynamicValue(RS_120_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_120_time_dim_t_time_sk_bloom_filter)))
                                                  Please refer to the previous 
TableScan [TS_0]
                                         <-Map 41 [SIMPLE_EDGE] vectorized
                                           SHUFFLE [RS_700]
@@ -523,7 +523,7 @@ Stage-0
                                                 Select Operator [SEL_681] 
(rows=501695814 width=11)
                                                   
Output:["_col0","_col1","_col2"]
                                                   Filter Operator [FIL_673] 
(rows=501695814 width=11)
-                                                    predicate:(ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_94_time_dim_t_time_sk_min) AND 
DynamicValue(RS_94_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_94_time_dim_t_time_sk_bloom_filter)) and ((ss_sold_time_sk is 
not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue(RS_1 [...]
+                                                    predicate:(ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
ss_sold_time_sk BETWEEN DynamicValue(RS_94_time_dim_t_time_sk_min) AND 
DynamicValue(RS_94_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_94_time_dim_t_time_sk_bloom_filter)))
                                                      Please refer to the 
previous TableScan [TS_0]
                                             <-Map 41 [SIMPLE_EDGE] vectorized
                                               SHUFFLE [RS_699]
@@ -567,7 +567,7 @@ Stage-0
                                                     Select Operator [SEL_680] 
(rows=501695814 width=11)
                                                       
Output:["_col0","_col1","_col2"]
                                                       Filter Operator 
[FIL_672] (rows=501695814 width=11)
-                                                        
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_68_time_dim_t_time_sk_min) AND 
DynamicValue(RS_68_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_68_time_dim_t_time_sk_bloom_filter)) and ((ss_sold_time_sk is 
not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue( [...]
+                                                        
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_68_time_dim_t_time_sk_min) AND 
DynamicValue(RS_68_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_68_time_dim_t_time_sk_bloom_filter)))
                                                          Please refer to the 
previous TableScan [TS_0]
                                                 <-Map 41 [SIMPLE_EDGE] 
vectorized
                                                   SHUFFLE [RS_698]
@@ -611,7 +611,7 @@ Stage-0
                                                         Select Operator 
[SEL_679] (rows=501695814 width=11)
                                                           
Output:["_col0","_col1","_col2"]
                                                           Filter Operator 
[FIL_671] (rows=501695814 width=11)
-                                                            
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_42_time_dim_t_time_sk_min) AND 
DynamicValue(RS_42_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_42_time_dim_t_time_sk_bloom_filter)) and ((ss_sold_time_sk 
BETWEEN DynamicValue(RS_16_time_dim_t_time_sk_min) AND 
DynamicValue(RS_16_time_dim_t_time_sk_max) and in_bl [...]
+                                                            
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_42_time_dim_t_time_sk_min) AND 
DynamicValue(RS_42_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_42_time_dim_t_time_sk_bloom_filter)))
                                                              Please refer to 
the previous TableScan [TS_0]
                                                     <-Map 41 [SIMPLE_EDGE] 
vectorized
                                                       SHUFFLE [RS_697]
@@ -651,7 +651,7 @@ Stage-0
                                                         Select Operator 
[SEL_678] (rows=501695814 width=11)
                                                           
Output:["_col0","_col1","_col2"]
                                                           Filter Operator 
[FIL_670] (rows=501695814 width=11)
-                                                            
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_16_time_dim_t_time_sk_min) AND 
DynamicValue(RS_16_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_16_time_dim_t_time_sk_bloom_filter)) and ((ss_sold_time_sk 
BETWEEN DynamicValue(RS_16_time_dim_t_time_sk_min) AND 
DynamicValue(RS_16_time_dim_t_time_sk_max) and in_bl [...]
+                                                            
predicate:(ss_sold_time_sk is not null and ss_hdemo_sk is not null and 
ss_store_sk is not null and ss_sold_time_sk BETWEEN 
DynamicValue(RS_16_time_dim_t_time_sk_min) AND 
DynamicValue(RS_16_time_dim_t_time_sk_max) and in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_16_time_dim_t_time_sk_bloom_filter)))
                                                              Please refer to 
the previous TableScan [TS_0]
                                                     <-Map 41 [SIMPLE_EDGE] 
vectorized
                                                       SHUFFLE [RS_696]
@@ -691,7 +691,7 @@ Stage-0
                                     Select Operator [SEL_684] (rows=501695814 
width=11)
                                       Output:["_col0","_col1","_col2"]
                                       Filter Operator [FIL_676] 
(rows=501695814 width=11)
-                                        predicate:(ss_sold_time_sk is not null 
and ss_hdemo_sk is not null and ss_store_sk is not null and ss_sold_time_sk 
BETWEEN DynamicValue(RS_172_time_dim_t_time_sk_min) AND 
DynamicValue(RS_172_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_172_time_dim_t_time_sk_bloom_filter)) and ((((((ss_sold_time_sk 
is not null and ss_hdemo_sk is not null and ss_store_sk is not null and 
((ss_sold_time_sk BETWEEN DynamicValue(RS_16_tim [...]
+                                        predicate:(ss_sold_time_sk is not null 
and ss_hdemo_sk is not null and ss_store_sk is not null and ss_sold_time_sk 
BETWEEN DynamicValue(RS_172_time_dim_t_time_sk_min) AND 
DynamicValue(RS_172_time_dim_t_time_sk_max) and 
in_bloom_filter(ss_sold_time_sk, 
DynamicValue(RS_172_time_dim_t_time_sk_bloom_filter)))
                                          Please refer to the previous 
TableScan [TS_0]
                                 <-Map 41 [SIMPLE_EDGE] vectorized
                                   SHUFFLE [RS_702]

Reply via email to