/** Creates a {@link org.apache.calcite.rel.core.Filter} of a list of * predicates. * * <p>The predicates are combined using AND, * and optimized in a similar way to the {@link #and} method. * If the result is TRUE no filter is created. */ public HiveSubQRemoveRelBuilder filter(Iterable<? extends RexNode> predicates) { final RexNode x = RexUtil.simplifyAnds(cluster.getRexBuilder(), predicates, true); if (x.isAlwaysFalse()) { return empty(); } if (!x.isAlwaysTrue()) { final Frame frame = stack.pop(); final RelNode filter = filterFactory.createFilter(frame.rel, x); stack.push(new Frame(filter, frame.right)); } return this; }
/** Creates a {@link org.apache.calcite.rel.core.Filter} of a list of * predicates. * * <p>The predicates are combined using AND, * and optimized in a similar way to the {@link #and} method. * If the result is TRUE no filter is created. */ public HiveSubQRemoveRelBuilder filter(Iterable<? extends RexNode> predicates) { final RexNode x = RexUtil.simplifyAnds(cluster.getRexBuilder(), predicates, true); if (x.isAlwaysFalse()) { return empty(); } if (!x.isAlwaysTrue()) { final Frame frame = stack.pop(); final RelNode filter = filterFactory.createFilter(frame.rel, x); stack.push(new Frame(filter, frame.right)); } return this; }
RelNode newChildFilter = filterFactory.createFilter(filter.getInput(), newChildFilterCondition); RelNode newTopFilter = filterFactory.createFilter(newChildFilter, topFilterCondition);
/** Creates a filter using the default factory, * or returns the original relational expression if the * condition is trivial. */ public static RelNode createFilter(RelNode child, Iterable<? extends RexNode> conditions, RelFactories.FilterFactory filterFactory) { final RelOptCluster cluster = child.getCluster(); final RexNode condition = RexUtil.composeConjunction(cluster.getRexBuilder(), conditions, true); if (condition == null) { return child; } else { return filterFactory.createFilter(child, condition); } }
/** Creates a filter using the default factory, * or returns the original relational expression if the * condition is trivial. */ public static RelNode createFilter(RelNode child, Iterable<? extends RexNode> conditions, RelFactories.FilterFactory filterFactory) { final RelOptCluster cluster = child.getCluster(); final RexNode condition = RexUtil.composeConjunction(cluster.getRexBuilder(), conditions, true); if (condition == null) { return child; } else { return filterFactory.createFilter(child, condition); } }
/** * Original method {@link RelBuilder#empty} returns empty values rel. * In the order to preserve data row types, filter with false predicate is created. */ @Override public RelBuilder empty() { // pops the frame from the stack and returns its relational expression RelNode relNode = build(); // creates filter with false in the predicate final RelNode filter = filterFactory.createFilter(relNode, cluster.getRexBuilder().makeLiteral(false)); push(filter); return this; }
@Deprecated // to be removed before 2.0 public static RelNode createFilter(RelNode child, RexNode condition) { final RelFactories.FilterFactory factory = RelFactories.DEFAULT_FILTER_FACTORY; return factory.createFilter(child, condition); }
@Deprecated // to be removed before 2.0 public static RelNode createFilter(RelNode child, RexNode condition) { final RelFactories.FilterFactory factory = RelFactories.DEFAULT_FILTER_FACTORY; return factory.createFilter(child, condition); }
private static RelNode createHiveFilterConjunctiveCondition(FilterFactory filterFactory, RexBuilder rexBuilder, RelNode input, Collection<RexNode> conditions) { final RexNode newCondition = RexUtil.composeConjunction(rexBuilder, conditions, false); return filterFactory.createFilter(input, newCondition); } }
@Deprecated // to be removed before 2.0 public static RelNode createFilter(RelNode child, RexNode condition, RelFactories.FilterFactory filterFactory) { return filterFactory.createFilter(child, condition); }
@Deprecated // to be removed before 2.0 public static RelNode createFilter(RelNode child, RexNode condition, RelFactories.FilterFactory filterFactory) { return filterFactory.createFilter(child, condition); }
RelNode newChildFilter = filterFactory.createFilter(filter.getInput(), newChildFilterCondition); RelNode newTopFilter = filterFactory.createFilter(newChildFilter, topFilterCondition);
lChild = filterFactory.createFilter(lChild, newLeftPredicate); call.getPlanner().onCopy(curr, lChild); rChild = filterFactory.createFilter(rChild, newRightPredicate); call.getPlanner().onCopy(curr, rChild);
lChild = filterFactory.createFilter(lChild, newLeftPredicate); call.getPlanner().onCopy(curr, lChild); rChild = filterFactory.createFilter(rChild, newRightPredicate); call.getPlanner().onCopy(curr, rChild);
lChild = filterFactory.createFilter(lChild, newLeftPredicate); call.getPlanner().onCopy(curr, lChild); rChild = filterFactory.createFilter(rChild, newRightPredicate); call.getPlanner().onCopy(curr, rChild);
project.getInput(), newCondition) : filterFactory.createFilter(project.getInput(), newCondition);
project.getInput(), newCondition) : filterFactory.createFilter(project.getInput(), newCondition);
lChild = filterFactory.createFilter( lChild, newLeftPredicate.accept(new RexReplacer(lChild))); call.getPlanner().onCopy(curr, lChild); rChild = filterFactory.createFilter( rChild, newRightPredicate.accept(new RexReplacer(rChild))); call.getPlanner().onCopy(curr, rChild);
@Override public RelBuilder filter(Iterable<? extends RexNode> predicates) { final RexNode x = RexUtil.simplify(cluster.getRexBuilder(), RexUtil.composeConjunction(cluster.getRexBuilder(), predicates, false)); if (!x.isAlwaysTrue()) { final RelNode input = build(); final RelNode filter = HiveRelFactories.HIVE_FILTER_FACTORY.createFilter(input, x); return this.push(filter); } return this; }
@Override public RelBuilder filter(Iterable<? extends RexNode> predicates) { final RexNode x = RexUtil.simplify(cluster.getRexBuilder(), RexUtil.composeConjunction(cluster.getRexBuilder(), predicates, false)); if (!x.isAlwaysTrue()) { final RelNode input = build(); final RelNode filter = HiveRelFactories.HIVE_FILTER_FACTORY.createFilter(input, x); return this.push(filter); } return this; }