diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicateTransitivePropagate.java b/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicateTransitivePropagate.java index 00952b7..bbb0c5d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicateTransitivePropagate.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicateTransitivePropagate.java @@ -27,6 +27,7 @@ import java.util.Set; import java.util.Stack; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.ql.exec.CommonJoinOperator; import org.apache.hadoop.hive.ql.exec.FilterOperator; import org.apache.hadoop.hive.ql.exec.JoinOperator; @@ -64,6 +65,12 @@ @Override public ParseContext transform(ParseContext pctx) throws SemanticException { + + if (pctx.getConf().getBoolVar(ConfVars.HIVE_CBO_ENABLED)) { + // Calcite contains a rule named JoinPushTransitivePredicatesRule which does exactly this. + // So, if CBO is on, its redundant to call this. + return pctx; + } pGraphContext = pctx; Map opRules = new LinkedHashMap(); @@ -227,7 +234,7 @@ private boolean filterExists(ReduceSinkOperator target, ExprNodeDesc replaced) { private static class Vectors { - private Set[] vector; + private final Set[] vector; @SuppressWarnings("unchecked") public Vectors(int length) {