Class RexImpTable.LagImplementor

java.lang.Object
org.apache.calcite.adapter.enumerable.RexImpTable.LagImplementor
All Implemented Interfaces:
AggImplementor, WinAggImplementor
Enclosing class:
RexImpTable

public static class RexImpTable.LagImplementor extends Object
Implementor for the LAG windowed aggregate function.
  • Constructor Details

    • LagImplementor

      protected LagImplementor()
  • Method Details

    • getStateType

      public 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
    • implementReset

      public 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
    • implementAdd

      public 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
    • needCacheWhenFrameIntact

      public boolean needCacheWhenFrameIntact()
      Specified by:
      needCacheWhenFrameIntact in interface WinAggImplementor
    • implementResult

      public 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