Class NumericAnyBufferAggregator<TSelector extends BaseNullableColumnValueSelector>

java.lang.Object
org.apache.druid.query.aggregation.any.NumericAnyBufferAggregator<TSelector>
All Implemented Interfaces:
BufferAggregator, HotLoopCallee
Direct Known Subclasses:
DoubleAnyBufferAggregator, FloatAnyBufferAggregator, LongAnyBufferAggregator

public abstract class NumericAnyBufferAggregator<TSelector extends BaseNullableColumnValueSelector> extends Object implements BufferAggregator
Base type for buffer based 'any' aggregator for primitive numeric column selectors
  • Constructor Details

    • NumericAnyBufferAggregator

      public NumericAnyBufferAggregator(TSelector valueSelector)
  • Method Details

    • init

      public void init(ByteBuffer buf, int position)
      Description copied from interface: BufferAggregator
      Initializes the buffer location Implementations of this method must initialize the byte buffer at the given position Implementations must not change the position, limit or mark of the given buffer This method must not exceed the number of bytes returned by AggregatorFactory.getMaxIntermediateSizeWithNulls() in the corresponding AggregatorFactory
      Specified by:
      init in interface BufferAggregator
      Parameters:
      buf - byte buffer to initialize
      position - offset within the byte buffer for initialization
    • aggregate

      public void aggregate(ByteBuffer buf, int position)
      Description copied from interface: BufferAggregator
      Aggregates metric values into the given aggregate byte representation Implementations of this method must read in the aggregate value from the buffer at the given position, aggregate the next element of data and write the updated aggregate value back into the buffer. Implementations must not change the position, limit or mark of the given buffer
      Specified by:
      aggregate in interface BufferAggregator
      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
    • close

      public void close()
      Description copied from interface: BufferAggregator
      Release any resources used by the aggregator. The aggregator may be reused after this call, by calling BufferAggregator.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 BufferAggregator
    • inspectRuntimeShape

      public void inspectRuntimeShape(RuntimeShapeInspector inspector)
      Description copied from interface: BufferAggregator
      Implementations of this method should call inspector.visit() with all fields of this class, which meet two conditions: 1. They are used in methods of this class, annotated with CalledFromHotLoop 2. They are either: a. Nullable objects b. Instances of HotLoopCallee c. Objects, which don't always have a specific class in runtime. For example, a field of type Set could be HashSet or TreeSet in runtime, depending on how this instance (the instance on which inspectRuntimeShape() is called) is configured. d. ByteBuffer or similar objects, where byte order matters e. boolean flags, affecting branch taking f. Arrays of objects, meeting any of conditions a-e.

      The default implementation inspects nothing. Classes that implement BufferAggregator are encouraged to override this method, following the specification of HotLoopCallee.inspectRuntimeShape(org.apache.druid.query.monomorphicprocessing.RuntimeShapeInspector).

      Specified by:
      inspectRuntimeShape in interface BufferAggregator
      Specified by:
      inspectRuntimeShape in interface HotLoopCallee