public static class HiveReduceExpressionsRule.FilterReduceExpressionsRule
extends org.apache.calcite.rel.rules.ReduceExpressionsRule
Filter
.
If the condition is a constant, the filter is removed (if TRUE) or replaced with
an empty Values
(if FALSE or NULL).org.apache.calcite.rel.rules.ReduceExpressionsRule.CalcReduceExpressionsRule, org.apache.calcite.rel.rules.ReduceExpressionsRule.CaseShuttle, org.apache.calcite.rel.rules.ReduceExpressionsRule.FilterReduceExpressionsRule, org.apache.calcite.rel.rules.ReduceExpressionsRule.JoinReduceExpressionsRule, org.apache.calcite.rel.rules.ReduceExpressionsRule.ProjectReduceExpressionsRule, org.apache.calcite.rel.rules.ReduceExpressionsRule.ReducibleExprLocator, org.apache.calcite.rel.rules.ReduceExpressionsRule.RexReplacer
Constructor and Description |
---|
FilterReduceExpressionsRule(Class<? extends org.apache.calcite.rel.core.Filter> filterClass,
org.apache.calcite.tools.RelBuilderFactory relBuilderFactory) |
Modifier and Type | Method and Description |
---|---|
protected org.apache.calcite.rel.RelNode |
createEmptyRelOrEquivalent(org.apache.calcite.plan.RelOptRuleCall call,
org.apache.calcite.rel.core.Filter input)
For static schema systems, a filter that is always false or null can be
replaced by a values operator that produces no rows, as the schema
information can just be taken from the input Rel.
|
void |
onMatch(org.apache.calcite.plan.RelOptRuleCall call) |
findReducibleExps, predicateConstants, pushPredicateIntoCase, reduceExpressions, reduceExpressions, reduceExpressions, reduceExpressionsInternal, substitute
public FilterReduceExpressionsRule(Class<? extends org.apache.calcite.rel.core.Filter> filterClass, org.apache.calcite.tools.RelBuilderFactory relBuilderFactory)
public void onMatch(org.apache.calcite.plan.RelOptRuleCall call)
onMatch
in class org.apache.calcite.plan.RelOptRule
protected org.apache.calcite.rel.RelNode createEmptyRelOrEquivalent(org.apache.calcite.plan.RelOptRuleCall call, org.apache.calcite.rel.core.Filter input)
The default implementation of this method is to call
RelBuilder.empty()
, which for the static schema will be optimized
to an empty
Values
.
input
- rel to replace, assumes caller has already determined
equivalence to Values operation for 0 records or a
false filter.Copyright © 2022 The Apache Software Foundation. All rights reserved.