Package org.apache.calcite.sql
Class SqlSplittableAggFunction.AbstractSumSplitter
- java.lang.Object
-
- org.apache.calcite.sql.SqlSplittableAggFunction.AbstractSumSplitter
-
- All Implemented Interfaces:
SqlSplittableAggFunction
- Direct Known Subclasses:
SqlSplittableAggFunction.Sum0Splitter
,SqlSplittableAggFunction.SumSplitter
- Enclosing interface:
- SqlSplittableAggFunction
public abstract static class SqlSplittableAggFunction.AbstractSumSplitter extends java.lang.Object implements SqlSplittableAggFunction
Common splitting strategy forSUM
andSUM0
functions.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.calcite.sql.SqlSplittableAggFunction
SqlSplittableAggFunction.AbstractSumSplitter, SqlSplittableAggFunction.CountSplitter, SqlSplittableAggFunction.Registry<E>, SqlSplittableAggFunction.SelfSplitter, SqlSplittableAggFunction.Sum0Splitter, SqlSplittableAggFunction.SumSplitter
-
-
Constructor Summary
Constructors Constructor Description AbstractSumSplitter()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract SqlAggFunction
getMergeAggFunctionOfTopSplit()
AggregateCall
other(RelDataTypeFactory typeFactory, AggregateCall e)
Called to generate an aggregate for the other side of the join than the side aggregate call's arguments come from.RexNode
singleton(RexBuilder rexBuilder, RelDataType inputRowType, AggregateCall aggregateCall)
Generates an expression for the value of the aggregate function when applied to a single row.AggregateCall
split(AggregateCall aggregateCall, Mappings.TargetMapping mapping)
AggregateCall
topSplit(RexBuilder rexBuilder, SqlSplittableAggFunction.Registry<RexNode> extra, int offset, RelDataType inputRowType, AggregateCall aggregateCall, int leftSubTotal, int rightSubTotal)
Generates an aggregate call to merge sub-totals.
-
-
-
Method Detail
-
singleton
public RexNode singleton(RexBuilder rexBuilder, RelDataType inputRowType, AggregateCall aggregateCall)
Description copied from interface:SqlSplittableAggFunction
Generates an expression for the value of the aggregate function when applied to a single row.For example, if there is one row:
SUM(x)
isx
MIN(x)
isx
MAX(x)
isx
COUNT(x)
isCASE WHEN x IS NOT NULL THEN 1 ELSE 0 END 1
which can be simplified to1
ifx
is never nullCOUNT(*)
is 1
- Specified by:
singleton
in interfaceSqlSplittableAggFunction
- Parameters:
rexBuilder
- Rex builderinputRowType
- Input row typeaggregateCall
- Aggregate call- Returns:
- Expression for single row
-
split
public AggregateCall split(AggregateCall aggregateCall, Mappings.TargetMapping mapping)
- Specified by:
split
in interfaceSqlSplittableAggFunction
-
other
public AggregateCall other(RelDataTypeFactory typeFactory, AggregateCall e)
Description copied from interface:SqlSplittableAggFunction
Called to generate an aggregate for the other side of the join than the side aggregate call's arguments come from. Returns null if no aggregate is required.- Specified by:
other
in interfaceSqlSplittableAggFunction
-
topSplit
public AggregateCall topSplit(RexBuilder rexBuilder, SqlSplittableAggFunction.Registry<RexNode> extra, int offset, RelDataType inputRowType, AggregateCall aggregateCall, int leftSubTotal, int rightSubTotal)
Description copied from interface:SqlSplittableAggFunction
Generates an aggregate call to merge sub-totals.Most implementations will add a single aggregate call to
aggCalls
, and return aRexInputRef
that points to it.- Specified by:
topSplit
in interfaceSqlSplittableAggFunction
- Parameters:
rexBuilder
- Rex builderextra
- Place to define extra input expressionsoffset
- Offset due to grouping columns (and indicator columns if applicable)inputRowType
- Input row typeaggregateCall
- Source aggregate callleftSubTotal
- Ordinal of the sub-total coming from the left side of the join, or -1 if there is no such sub-totalrightSubTotal
- Ordinal of the sub-total coming from the right side of the join, or -1 if there is no such sub-total- Returns:
- Aggregate call
-
getMergeAggFunctionOfTopSplit
protected abstract SqlAggFunction getMergeAggFunctionOfTopSplit()
-
-