/** * * @param j * @param additionalPredicate * @return if predicate is the join condition return (true, joinCond) * else return (false, minusPred) */ private Pair<Boolean,RexNode> getCombinedPredicateForJoin(Join j, RexNode additionalPredicate) { RexNode minusPred = RelMdUtil.minusPreds(j.getCluster().getRexBuilder(), additionalPredicate, j.getCondition()); if (minusPred != null) { List<RexNode> minusList = new ArrayList<RexNode>(); minusList.add(j.getCondition()); minusList.add(minusPred); return new Pair<Boolean,RexNode>(false, minusPred); } return new Pair<Boolean,RexNode>(true,j.getCondition()); }
/** * * @param j * @param additionalPredicate * @return if predicate is the join condition return (true, joinCond) * else return (false, minusPred) */ private Pair<Boolean,RexNode> getCombinedPredicateForJoin(Join j, RexNode additionalPredicate) { RexNode minusPred = RelMdUtil.minusPreds(j.getCluster().getRexBuilder(), additionalPredicate, j.getCondition()); if (minusPred != null) { List<RexNode> minusList = new ArrayList<RexNode>(); minusList.add(j.getCondition()); minusList.add(minusPred); return new Pair<Boolean,RexNode>(false, minusPred); } return new Pair<Boolean,RexNode>(true,j.getCondition()); }
/** * * @param j * @param additionalPredicate * @return if predicate is the join condition return (true, joinCond) * else return (false, minusPred) */ private Pair<Boolean,RexNode> getCombinedPredicateForJoin(HiveJoin j, RexNode additionalPredicate) { RexNode minusPred = RelMdUtil.minusPreds(j.getCluster().getRexBuilder(), additionalPredicate, j.getCondition()); if (minusPred != null) { List<RexNode> minusList = new ArrayList<RexNode>(); minusList.add(j.getCondition()); minusList.add(minusPred); return new Pair<Boolean,RexNode>(false, minusPred); } return new Pair<Boolean,RexNode>(true,j.getCondition()); }
public Double getSelectivity(Filter rel, RelMetadataQuery mq, RexNode predicate) { // Take the difference between the predicate passed in and the // predicate in the filter's condition, so we don't apply the // selectivity of the filter twice. If no predicate is passed in, // use the filter's condition. if (predicate != null) { return mq.getSelectivity(rel.getInput(), RelMdUtil.minusPreds( rel.getCluster().getRexBuilder(), predicate, rel.getCondition())); } else { return mq.getSelectivity(rel.getInput(), rel.getCondition()); } }
public Double getSelectivity(Filter rel, RelMetadataQuery mq, RexNode predicate) { // Take the difference between the predicate passed in and the // predicate in the filter's condition, so we don't apply the // selectivity of the filter twice. If no predicate is passed in, // use the filter's condition. if (predicate != null) { return mq.getSelectivity(rel.getInput(), RelMdUtil.minusPreds( rel.getCluster().getRexBuilder(), predicate, rel.getCondition())); } else { return mq.getSelectivity(rel.getInput(), rel.getCondition()); } }