public class AggregateMergeRule extends RelOptRule
Aggregate
on a Aggregate
and the top aggregate's group key is a subset of the lower aggregate's
group key, and the aggregates are expansions of rollups, then it would
convert into a single aggregate.
For example, SUM of SUM becomes SUM; SUM of COUNT becomes COUNT; MAX of MAX becomes MAX; MIN of MIN becomes MIN. AVG of AVG would not match, nor would COUNT of COUNT.
Modifier and Type | Field and Description |
---|---|
static AggregateMergeRule |
INSTANCE |
description, operands, relBuilderFactory
Modifier | Constructor and Description |
---|---|
private |
AggregateMergeRule() |
|
AggregateMergeRule(RelOptRuleOperand operand,
RelBuilderFactory relBuilderFactory)
Creates an AggregateMergeRule.
|
Modifier and Type | Method and Description |
---|---|
private boolean |
isAggregateSupported(AggregateCall aggCall) |
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, unordered
public static final AggregateMergeRule INSTANCE
private AggregateMergeRule()
public AggregateMergeRule(RelOptRuleOperand operand, RelBuilderFactory relBuilderFactory)
private boolean isAggregateSupported(AggregateCall aggCall)
public void onMatch(RelOptRuleCall call)
RelOptRule
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.
onMatch
in class RelOptRule
call
- Rule callRelOptRule.matches(RelOptRuleCall)
Copyright © 2012–2019 The Apache Software Foundation. All rights reserved.