public abstract class PushLocalAggIntoScanRuleBase
extends org.apache.calcite.plan.RelOptRule
BatchPhysicalTableSourceScan
whose table is a TableSourceTable
with a source supporting SupportsAggregatePushDown
.
The aggregate push down does not support a number of more complex statements at present:
Constructor and Description |
---|
PushLocalAggIntoScanRuleBase(org.apache.calcite.plan.RelOptRuleOperand operand,
String description) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
canPushDown(org.apache.calcite.plan.RelOptRuleCall call,
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalGroupAggregateBase aggregate,
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalTableSourceScan tableSourceScan) |
protected int[] |
getRefFiledIndex(org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalCalc calc) |
protected boolean |
isInputRefOnly(org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalCalc calc)
Currently, we only supports to push down aggregate above calc which has input ref only.
|
protected boolean |
isProjectionNotPushedDown(org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalTableSourceScan tableSourceScan) |
protected void |
pushLocalAggregateIntoScan(org.apache.calcite.plan.RelOptRuleCall call,
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalGroupAggregateBase localAgg,
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalTableSourceScan oldScan) |
protected void |
pushLocalAggregateIntoScan(org.apache.calcite.plan.RelOptRuleCall call,
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalGroupAggregateBase localAgg,
org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalTableSourceScan oldScan,
int[] calcRefFields) |
protected List<org.apache.calcite.rel.core.AggregateCall> |
translateAggCallArgIndex(List<org.apache.calcite.rel.core.AggregateCall> aggCallList,
int[] refFields) |
protected List<int[]> |
translateGroupingArgIndex(List<int[]> groupingSets,
int[] refFields) |
any, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, none, onMatch, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unordered
public PushLocalAggIntoScanRuleBase(org.apache.calcite.plan.RelOptRuleOperand operand, String description)
protected boolean canPushDown(org.apache.calcite.plan.RelOptRuleCall call, org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalGroupAggregateBase aggregate, org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalTableSourceScan tableSourceScan)
protected void pushLocalAggregateIntoScan(org.apache.calcite.plan.RelOptRuleCall call, org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalGroupAggregateBase localAgg, org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalTableSourceScan oldScan)
protected void pushLocalAggregateIntoScan(org.apache.calcite.plan.RelOptRuleCall call, org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalGroupAggregateBase localAgg, org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalTableSourceScan oldScan, int[] calcRefFields)
protected boolean isProjectionNotPushedDown(org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalTableSourceScan tableSourceScan)
protected boolean isInputRefOnly(org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalCalc calc)
calc
- BatchPhysicalCalcprotected int[] getRefFiledIndex(org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalCalc calc)
protected List<int[]> translateGroupingArgIndex(List<int[]> groupingSets, int[] refFields)
Copyright © 2014–2023 The Apache Software Foundation. All rights reserved.