public class AggregateFilterTransposeRule extends RelOptRule
Aggregate
on a Filter
and transposes them,
pushing the aggregate below the filter.
In some cases, it is necessary to split the aggregate.
This rule does not directly improve performance. The aggregate will have to process more rows, to produce aggregated rows that will be thrown away. The rule might be beneficial if the predicate is very expensive to evaluate. The main use of the rule is to match a query that has a filter under an aggregate to an existing aggregate table.
FilterAggregateTransposeRule
Modifier and Type | Field and Description |
---|---|
static AggregateFilterTransposeRule |
INSTANCE |
description, operands, relBuilderFactory
Modifier | Constructor and Description |
---|---|
private |
AggregateFilterTransposeRule() |
|
AggregateFilterTransposeRule(RelOptRuleOperand operand,
RelBuilderFactory relBuilderFactory)
Creates an AggregateFilterTransposeRule.
|
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, unordered
public static final AggregateFilterTransposeRule INSTANCE
private AggregateFilterTransposeRule()
public AggregateFilterTransposeRule(RelOptRuleOperand operand, RelBuilderFactory relBuilderFactory)
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.