Class SqlSplittableAggFunction.AbstractSumSplitter

    • Constructor Detail

      • AbstractSumSplitter

        public AbstractSumSplitter()
    • 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) is x
        • MIN(x) is x
        • MAX(x) is x
        • COUNT(x) is CASE WHEN x IS NOT NULL THEN 1 ELSE 0 END 1 which can be simplified to 1 if x is never null
        • COUNT(*) is 1
        Specified by:
        singleton in interface SqlSplittableAggFunction
        Parameters:
        rexBuilder - Rex builder
        inputRowType - Input row type
        aggregateCall - Aggregate call
        Returns:
        Expression for single row
      • 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 a RexInputRef that points to it.

        Specified by:
        topSplit in interface SqlSplittableAggFunction
        Parameters:
        rexBuilder - Rex builder
        extra - Place to define extra input expressions
        offset - Offset due to grouping columns (and indicator columns if applicable)
        inputRowType - Input row type
        aggregateCall - Source aggregate call
        leftSubTotal - Ordinal of the sub-total coming from the left side of the join, or -1 if there is no such sub-total
        rightSubTotal - 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()