Interface AggImplementor

    • Method Detail

      • getStateType

        java.util.List<java.lang.reflect.Type> getStateType​(AggContext info)
        Returns the types of the intermediate variables used by the aggregate implementation.

        For instance, for "concatenate to string" this can be StringBuilder. Calcite calls this method before all other implement* methods.

        Parameters:
        info - Aggregate context
        Returns:
        Types of the intermediate variables used by the aggregate implementation
      • implementReset

        void implementReset​(AggContext info,
                            AggResetContext reset)
        Implements reset of the intermediate variables to the initial state. AggResetContext.accumulator() should be used to reference the state variables. For instance, to zero the count, use the following code:
        reset.currentBlock().add(
        Expressions.statement(
        Expressions.assign(reset.accumulator().get(0),
        Expressions.constant(0)));
        Parameters:
        info - Aggregate context
        reset - Reset context
      • implementAdd

        void implementAdd​(AggContext info,
                          AggAddContext add)
        Updates intermediate values to account for the newly added value. AggResetContext.accumulator() should be used to reference the state variables.
        Parameters:
        info - Aggregate context
        add - Add context
      • implementResult

        Expression implementResult​(AggContext info,
                                   AggResultContext result)
        Calculates the resulting value based on the intermediate variables. Note: this method must NOT destroy the intermediate variables as calcite might reuse the state when calculating sliding aggregates. AggResetContext.accumulator() should be used to reference the state variables.
        Parameters:
        info - Aggregate context
        result - Result context
        Returns:
        Expression that is a result of calculating final value of the aggregate being implemented