@Value.Enclosing public class ProjectAggregateMergeRule extends RelRule<ProjectAggregateMergeRule.Config> implements TransformationRule
Project on a Aggregate
and projects away aggregate calls that are not used.
Also converts COALESCE(SUM(x), 0) to SUM0(x).
This transformation is useful because there are cases where
AggregateMergeRule can merge SUM0 but not SUM.
CoreRules.PROJECT_AGGREGATE_MERGE| Modifier and Type | Class and Description |
|---|---|
static interface |
ProjectAggregateMergeRule.Config
Rule configuration.
|
RelRule.Done, RelRule.MatchHandler<R extends RelOptRule>, RelRule.OperandBuilder, RelRule.OperandDetailBuilder<R extends RelNode>, RelRule.OperandTransformRelOptRule.ConverterRelOptRuleOperanddescription, operands, relBuilderFactory| Modifier | Constructor and Description |
|---|---|
protected |
ProjectAggregateMergeRule(ProjectAggregateMergeRule.Config config)
Creates a ProjectAggregateMergeRule.
|
| Modifier and Type | Method and Description |
|---|---|
void |
onMatch(RelOptRuleCall call)
Receives notification about a rule match.
|
any, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, none, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unorderedprotected ProjectAggregateMergeRule(ProjectAggregateMergeRule.Config config)
public void onMatch(RelOptRuleCall call)
RelOptRulecall.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>, org.apache.calcite.plan.RelHintsPropagator) to
register the expression.
onMatch in class RelOptRulecall - Rule callRelOptRule.matches(RelOptRuleCall)Copyright © 2012-2022 Apache Software Foundation. All Rights Reserved.