Class FirstLastVectorAggregator<RhsType,PairType extends SerializablePair<Long,RhsType>>

java.lang.Object
org.apache.druid.query.aggregation.firstlast.FirstLastVectorAggregator<RhsType,PairType>
All Implemented Interfaces:
VectorAggregator
Direct Known Subclasses:
DoubleFirstLastVectorAggregator, FloatFirstLastVectorAggregator, LongFirstLastVectorAggregator, SingleStringFirstLastDimensionVectorAggregator, StringFirstLastVectorAggregator

public abstract class FirstLastVectorAggregator<RhsType,PairType extends SerializablePair<Long,RhsType>> extends Object implements VectorAggregator
Base type for vectorized version of on heap 'last' aggregator for primitive numeric column selectors..
  • Field Details

  • Constructor Details

  • Method Details

    • aggregate

      public void aggregate(ByteBuffer buf, int position, int startRow, int endRow)
      Description copied from interface: VectorAggregator
      Aggregate a range of rows into a single aggregation slot. Implementations must not change the position, limit or mark of the given buffer
      Specified by:
      aggregate in interface VectorAggregator
      Parameters:
      buf - byte buffer storing the byte array representation of the aggregate
      position - offset within the byte buffer at which the current aggregate value is stored
      startRow - first row of the range within the current batch to aggregate (inclusive)
      endRow - end row of the range (exclusive)
    • aggregate

      public void aggregate(ByteBuffer buf, int numRows, int[] positions, @Nullable int[] rows, int positionOffset)
      Description copied from interface: VectorAggregator
      Aggregate a list of rows ("rows") into a list of aggregation slots ("positions"). Implementations must not change the position, limit or mark of the given buffer
      Specified by:
      aggregate in interface VectorAggregator
      Parameters:
      buf - byte buffer storing the byte array representation of the aggregate
      numRows - number of rows to aggregate
      positions - array of aggregate value positions within the buffer; must be at least as long as "numRows"
      rows - array of row numbers within the current row batch; must be at least as long as "numRows". If null, the aggregator will aggregate rows from 0 (inclusive) to numRows (exclusive).
      positionOffset - an offset to apply to each value from "positions"
    • putValue

      protected abstract void putValue(ByteBuffer buf, int position, long time, RhsType value)
      Sets the value at the position. Subclasses can assume that the value isn't null 'position' refers to the location where the value of the pair will get updated (as opposed to the beginning of the serialized pair) It is only used if objectSelector is supplied
    • putValue

      protected abstract void putValue(ByteBuffer buf, int position, long time, VectorValueSelector valueSelector, int index)
      Sets the value represented by the valueSelector at the given index. A slightly redundant method to putValue(ByteBuffer, int, long, Object) to avoid autoboxing for the numeric types. Subclasses can assume that valueSelector.getNullVector[index] is false (i.e. the value represented at the index isn't null) It is used if valueSelector is supplied
    • putNull

      protected abstract void putNull(ByteBuffer buf, int position, long time)
    • readPairFromVectorSelectors

      protected abstract PairType readPairFromVectorSelectors(boolean[] timeNullityVector, long[] timeVector, Object[] maybeFoldedObjects, int index)
    • close

      public void close()
      Description copied from interface: VectorAggregator
      Release any resources used by the aggregator. The aggregator may be reused after this call, by calling VectorAggregator.init(ByteBuffer, int) followed by other methods as normal. This call would be more properly named "reset", but we use the name "close" to improve compatibility with existing aggregator implementations in extensions.
      Specified by:
      close in interface VectorAggregator