/** Returns if one rel is weaker than another. */ protected boolean isWeaker(MutableRel rel0, MutableRel rel) { if (rel0 == rel || equivalents.get(rel0).contains(rel)) { return false; } if (!(rel0 instanceof MutableFilter) || !(rel instanceof MutableFilter)) { return false; } if (!rel.getRowType().equals(rel0.getRowType())) { return false; } final MutableRel rel0input = ((MutableFilter) rel0).getInput(); final MutableRel relinput = ((MutableFilter) rel).getInput(); if (rel0input != relinput && !equivalents.get(rel0input).contains(relinput)) { return false; } RexExecutorImpl rexImpl = (RexExecutorImpl) (rel.cluster.getPlanner().getExecutor()); RexImplicationChecker rexImplicationChecker = new RexImplicationChecker( rel.cluster.getRexBuilder(), rexImpl, rel.getRowType()); return rexImplicationChecker.implies(((MutableFilter) rel0).getCondition(), ((MutableFilter) rel).getCondition()); }
listBuilder.add(newCondition); RexExecutor executor = Util.first(filterRel.getCluster().getPlanner().getExecutor(), RexUtil.EXECUTOR); final RexSimplify simplify = new RexSimplify(rexBuilder, true, executor);
/** Returns if one rel is weaker than another. */ protected boolean isWeaker(MutableRel rel0, MutableRel rel) { if (rel0 == rel || equivalents.get(rel0).contains(rel)) { return false; } if (!(rel0 instanceof MutableFilter) || !(rel instanceof MutableFilter)) { return false; } if (!rel.rowType.equals(rel0.rowType)) { return false; } final MutableRel rel0input = ((MutableFilter) rel0).getInput(); final MutableRel relinput = ((MutableFilter) rel).getInput(); if (rel0input != relinput && !equivalents.get(rel0input).contains(relinput)) { return false; } RexExecutorImpl rexImpl = (RexExecutorImpl) (rel.cluster.getPlanner().getExecutor()); RexImplicationChecker rexImplicationChecker = new RexImplicationChecker( rel.cluster.getRexBuilder(), rexImpl, rel.rowType); return rexImplicationChecker.implies(((MutableFilter) rel0).condition, ((MutableFilter) rel).condition); }
/** Returns if one rel is weaker than another. */ protected boolean isWeaker(MutableRel rel0, MutableRel rel) { if (rel0 == rel || equivalents.get(rel0).contains(rel)) { return false; } if (!(rel0 instanceof MutableFilter) || !(rel instanceof MutableFilter)) { return false; } if (!rel.rowType.equals(rel0.rowType)) { return false; } final MutableRel rel0input = ((MutableFilter) rel0).getInput(); final MutableRel relinput = ((MutableFilter) rel).getInput(); if (rel0input != relinput && !equivalents.get(rel0input).contains(relinput)) { return false; } RexExecutorImpl rexImpl = (RexExecutorImpl) (rel.cluster.getPlanner().getExecutor()); RexImplicationChecker rexImplicationChecker = new RexImplicationChecker( rel.cluster.getRexBuilder(), rexImpl, rel.rowType); return rexImplicationChecker.implies(((MutableFilter) rel0).condition, ((MutableFilter) rel).condition); }
final RelOptCluster cluster = union.getCluster(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RelOptPredicateList predicates = RelOptPredicateList.EMPTY; RexNode disjPred = new RexSimplify(rexBuilder, predicates, executor)
final RelOptCluster cluster = union.getCluster(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); RexNode disjunctivePredicate = new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, executor)
this.cluster = target_.getCluster(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RelOptPredicateList predicates = RelOptPredicateList.EMPTY; this.simplify =
RexExecutor executor = rel.getCluster().getPlanner().getExecutor(); if (executor == null) {
this.cluster = target_.getCluster(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RelOptPredicateList predicates = RelOptPredicateList.EMPTY; this.simplify =
final RexBuilder rexBuilder = cluster.getRexBuilder(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RexSimplify simplify = new RexSimplify(rexBuilder, predicates, executor);
final RexBuilder rexBuilder = cluster.getRexBuilder(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RexSimplify simplify = new RexSimplify(rexBuilder, predicates, executor);
/** * Checks if filter satisfies the lattice filter * i.e., it needs data captured by the lattice */ private boolean isLatticeFilterSatisfied(final RelOptLattice lattice, final Filter filter, final StarTable.StarTableScan scan) { if (lattice.lattice.filter == null) { return true; } RexExecutorImpl rexImpl = (RexExecutorImpl) (scan.getCluster().getPlanner().getExecutor()); RexImplicationChecker solver = new RexImplicationChecker(scan.getCluster().getRexBuilder(), rexImpl, scan.getRowType()); try { return solver.implies(filter.getCondition(), lattice.lattice.filter); } catch (Exception e) { LOG.debug("Exception thrown while solving " + filter.getCondition() + " => " + lattice.lattice.filter); return false; } }
final List<RexNode> nonValidPreds = new ArrayList<>(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RelOptPredicateList predicates = call.getMetadataQuery().getPulledUpPredicates(filter.getInput());
final RexExecutor executor = r.getCluster().getPlanner().getExecutor(); if (!(executor instanceof RexExecutorImpl)) {
final RexExecutor executor = r.getCluster().getPlanner().getExecutor(); if (!(executor instanceof RexExecutorImpl)) {
final List<RexNode> nonValidPreds = new ArrayList<>(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RelOptPredicateList predicates = call.getMetadataQuery().getPulledUpPredicates(filter.getInput());
/** * Infers predicates for a {@link org.apache.calcite.rel.core.Join} (including * {@link org.apache.calcite.rel.core.SemiJoin}). */ public RelOptPredicateList getPredicates(Join join, RelMetadataQuery mq) { RelOptCluster cluster = join.getCluster(); RexBuilder rexBuilder = cluster.getRexBuilder(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RelNode left = join.getInput(0); final RelNode right = join.getInput(1); final RelOptPredicateList leftInfo = mq.getPulledUpPredicates(left); final RelOptPredicateList rightInfo = mq.getPulledUpPredicates(right); JoinConditionBasedPredicateInference joinInference = new JoinConditionBasedPredicateInference(join, RexUtil.composeConjunction(rexBuilder, leftInfo.pulledUpPredicates), RexUtil.composeConjunction(rexBuilder, rightInfo.pulledUpPredicates), new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, executor)); return joinInference.inferPredicates(false); }
/** * Infers predicates for a {@link org.apache.calcite.rel.core.Join} (including * {@link org.apache.calcite.rel.core.SemiJoin}). */ public RelOptPredicateList getPredicates(Join join, RelMetadataQuery mq) { RelOptCluster cluster = join.getCluster(); RexBuilder rexBuilder = cluster.getRexBuilder(); final RexExecutor executor = Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR); final RelNode left = join.getInput(0); final RelNode right = join.getInput(1); final RelOptPredicateList leftInfo = mq.getPulledUpPredicates(left); final RelOptPredicateList rightInfo = mq.getPulledUpPredicates(right); JoinConditionBasedPredicateInference joinInference = new JoinConditionBasedPredicateInference(join, RexUtil.composeConjunction(rexBuilder, leftInfo.pulledUpPredicates), RexUtil.composeConjunction(rexBuilder, rightInfo.pulledUpPredicates), new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, executor)); return joinInference.inferPredicates(false); }
final RexExecutor executor = Util.first(context.unwrap(RexExecutor.class), Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR)); final RelOptPredicateList predicates = RelOptPredicateList.EMPTY; this.simplifier =
final RexExecutor executor = Util.first(context.unwrap(RexExecutor.class), Util.first(cluster.getPlanner().getExecutor(), RexUtil.EXECUTOR)); final RelOptPredicateList predicates = RelOptPredicateList.EMPTY; this.simplifier =