Package org.apache.calcite.rel.rules
Class ReduceExpressionsRule.CalcReduceExpressionsRule
- java.lang.Object
-
- org.apache.calcite.plan.RelOptRule
-
- org.apache.calcite.rel.rules.ReduceExpressionsRule
-
- org.apache.calcite.rel.rules.ReduceExpressionsRule.CalcReduceExpressionsRule
-
- Enclosing class:
- ReduceExpressionsRule
public static class ReduceExpressionsRule.CalcReduceExpressionsRule extends ReduceExpressionsRule
Rule that reduces constants inside aCalc
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.calcite.rel.rules.ReduceExpressionsRule
ReduceExpressionsRule.CalcReduceExpressionsRule, ReduceExpressionsRule.CaseShuttle, ReduceExpressionsRule.FilterReduceExpressionsRule, ReduceExpressionsRule.JoinReduceExpressionsRule, ReduceExpressionsRule.ProjectReduceExpressionsRule, ReduceExpressionsRule.ReducibleExprLocator, ReduceExpressionsRule.RexReplacer
-
-
Field Summary
-
Fields inherited from class org.apache.calcite.rel.rules.ReduceExpressionsRule
CALC_INSTANCE, EXCLUSION_PATTERN, FILTER_INSTANCE, JOIN_INSTANCE, matchNullability, PROJECT_INSTANCE
-
Fields inherited from class org.apache.calcite.plan.RelOptRule
description, operands, relBuilderFactory
-
-
Constructor Summary
Constructors Constructor Description CalcReduceExpressionsRule(java.lang.Class<? extends Calc> calcClass, boolean matchNullability, RelBuilderFactory relBuilderFactory)
CalcReduceExpressionsRule(java.lang.Class<? extends Calc> calcClass, RelBuilderFactory relBuilderFactory)
Deprecated.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected RelNode
createEmptyRelOrEquivalent(RelOptRuleCall call, Calc 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(RelOptRuleCall call)
Receives notification about a rule match.-
Methods inherited from class org.apache.calcite.rel.rules.ReduceExpressionsRule
findReducibleExps, predicateConstants, pushPredicateIntoCase, reduceExpressions, reduceExpressions, reduceExpressions, reduceExpressionsInternal, substitute
-
Methods inherited from class org.apache.calcite.plan.RelOptRule
any, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, none, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unordered
-
-
-
-
Constructor Detail
-
CalcReduceExpressionsRule
@Deprecated public CalcReduceExpressionsRule(java.lang.Class<? extends Calc> calcClass, RelBuilderFactory relBuilderFactory)
Deprecated.
-
CalcReduceExpressionsRule
public CalcReduceExpressionsRule(java.lang.Class<? extends Calc> calcClass, boolean matchNullability, RelBuilderFactory relBuilderFactory)
-
-
Method Detail
-
onMatch
public void onMatch(RelOptRuleCall call)
Description copied from class:RelOptRule
Receives notification about a rule match. At the time that this method is called,call.rels
holds the set of relational expressions which match the operands to the rule;call.rels[0]
is the root expression.Typically a rule would check that the nodes are valid matches, creates a new expression, then calls back
RelOptRuleCall.transformTo(org.apache.calcite.rel.RelNode, java.util.Map<org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode>)
to register the expression.- Specified by:
onMatch
in classRelOptRule
- Parameters:
call
- Rule call- See Also:
RelOptRule.matches(RelOptRuleCall)
-
createEmptyRelOrEquivalent
protected RelNode createEmptyRelOrEquivalent(RelOptRuleCall call, Calc 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. In dynamic schema environments, the filter might have an unknown input type, in these cases they must define a system specific alternative to a Values operator, such as inserting a limit 0 instead of a filter on top of the original input.The default implementation of this method is to call
RelBuilder.empty()
, which for the static schema will be optimized to an emptyValues
.- Parameters:
input
- rel to replace, assumes caller has already determined equivalence to Values operation for 0 records or a false filter.- Returns:
- equivalent but less expensive replacement rel
-
-