Class StrictAggImplementor

java.lang.Object
org.apache.calcite.adapter.enumerable.StrictAggImplementor
All Implemented Interfaces:
AggImplementor
Direct Known Subclasses:
RexImpTable.UserDefinedAggReflectiveImplementor, StrictWinAggImplementor

public abstract class StrictAggImplementor extends Object implements AggImplementor
The base implementation of strict aggregate function.
See Also:
  • RexImpTable.CountImplementor
  • RexImpTable.SumImplementor
  • Constructor Details

    • StrictAggImplementor

      public StrictAggImplementor()
  • Method Details

    • nonDefaultOnEmptySet

      protected boolean nonDefaultOnEmptySet(AggContext info)
    • getStateSize

      protected final int getStateSize()
    • accAdvance

      protected static void accAdvance(AggAddContext add, Expression acc, Expression next)
    • getStateType

      public final List<Type> getStateType(AggContext info)
      Description copied from interface: AggImplementor
      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.

      Specified by:
      getStateType in interface AggImplementor
      Parameters:
      info - Aggregate context
      Returns:
      Types of the intermediate variables used by the aggregate implementation
    • getNotNullState

      public List<Type> getNotNullState(AggContext info)
    • implementReset

      public final void implementReset(AggContext info, AggResetContext reset)
      Description copied from interface: AggImplementor
      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)));
      Specified by:
      implementReset in interface AggImplementor
      Parameters:
      info - Aggregate context
      reset - Reset context
    • implementNotNullReset

      protected void implementNotNullReset(AggContext info, AggResetContext reset)
    • implementAdd

      public final void implementAdd(AggContext info, AggAddContext add)
      Description copied from interface: AggImplementor
      Updates intermediate values to account for the newly added value. AggResetContext.accumulator() should be used to reference the state variables.
      Specified by:
      implementAdd in interface AggImplementor
      Parameters:
      info - Aggregate context
      add - Add context
    • implementNotNullAdd

      protected abstract void implementNotNullAdd(AggContext info, AggAddContext add)
    • implementResult

      public final Expression implementResult(AggContext info, AggResultContext result)
      Description copied from interface: AggImplementor
      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.
      Specified by:
      implementResult in interface AggImplementor
      Parameters:
      info - Aggregate context
      result - Result context
      Returns:
      Expression that is a result of calculating final value of the aggregate being implemented
    • implementNotNullResult

      protected Expression implementNotNullResult(AggContext info, AggResultContext result)