public final class AggregateExpandDistinctAggregatesRule extends RelOptRule
COUNT(DISTINCT x)) from a
LogicalAggregate.
How this is done depends upon the arguments to the function. If all
functions have the same argument
(e.g. COUNT(DISTINCT x), SUM(DISTINCT x) both have the argument
x) then one extra Aggregate is
sufficient.
If there are multiple arguments
(e.g. COUNT(DISTINCT x), COUNT(DISTINCT y))
the rule creates separate Aggregates and combines using a
Join.
| Modifier and Type | Field and Description |
|---|---|
static AggregateExpandDistinctAggregatesRule |
INSTANCE
The default instance of the rule; operates only on logical expressions.
|
description, operands| Constructor and Description |
|---|
AggregateExpandDistinctAggregatesRule(Class<? extends LogicalAggregate> clazz,
RelFactories.JoinFactory joinFactory) |
| Modifier and Type | Method and Description |
|---|---|
void |
onMatch(RelOptRuleCall call)
Receives notification about a rule match.
|
any, convert, convert, convertList, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, none, operand, operand, operand, operand, operand, some, toString, unorderedpublic static final AggregateExpandDistinctAggregatesRule INSTANCE
public AggregateExpandDistinctAggregatesRule(Class<? extends LogicalAggregate> clazz, RelFactories.JoinFactory joinFactory)
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>) to
register the expression.
onMatch in class RelOptRulecall - Rule callRelOptRule.matches(RelOptRuleCall)Copyright © 2012–2015 The Apache Software Foundation. All rights reserved.