Class SimpleLongBufferAggregator

java.lang.Object
org.apache.druid.query.aggregation.SimpleLongBufferAggregator
All Implemented Interfaces:
BufferAggregator, HotLoopCallee
Direct Known Subclasses:
LongMaxBufferAggregator, LongMinBufferAggregator, LongSumBufferAggregator

public abstract class SimpleLongBufferAggregator extends Object implements BufferAggregator
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Release any resources used by the aggregator.
    get(ByteBuffer buf, int position)
    Returns the intermediate object representation of the given aggregate.
    double
    getDouble(ByteBuffer buf, int position)
    Returns the double representation of the given aggregate byte array Converts the given byte buffer representation into the intermediate aggregate value.
    float
    getFloat(ByteBuffer buf, int position)
    Returns the float representation of the given aggregate byte array Converts the given byte buffer representation into the intermediate aggregate value.
    long
    getLong(ByteBuffer buf, int position)
    Returns the long representation of the given aggregate byte array Converts the given byte buffer representation into the intermediate aggregate value.
    void
    Implementations of this method should call inspector.visit() with all fields of this class, which meet two conditions: 1.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.druid.query.aggregation.BufferAggregator

    aggregate, init, isNull, relocate
  • Method Details

    • get

      public Object get(ByteBuffer buf, int position)
      Description copied from interface: BufferAggregator
      Returns the intermediate object representation of the given aggregate. Converts the given byte buffer representation into an intermediate aggregate Object Implementations must not change the position, limit or mark of the given buffer. The object returned must not have any references to the given buffer (i.e., make a copy), since the underlying buffer is a shared resource and may be given to another processing thread while the objects returned by this aggregator are still in use. If the corresponding AggregatorFactory.combine(Object, Object) method for this aggregator expects its inputs to be mutable, then the object returned by this method must be mutable.
      Specified by:
      get in interface BufferAggregator
      Parameters:
      buf - byte buffer storing the byte array representation of the aggregate
      position - offset within the byte buffer at which the aggregate value is stored
      Returns:
      the Object representation of the aggregate
    • getFloat

      public float getFloat(ByteBuffer buf, int position)
      Description copied from interface: BufferAggregator
      Returns the float representation of the given aggregate byte array Converts the given byte buffer representation into the intermediate aggregate value. Implementations must not change the position, limit or mark of the given buffer Implementations are only required to support this method if they are aggregations which have an AggregatorFactory.getIntermediateType() ()} of ValueType.FLOAT. If unimplemented, throwing an UnsupportedOperationException is common and recommended.
      Specified by:
      getFloat in interface BufferAggregator
      Parameters:
      buf - byte buffer storing the byte array representation of the aggregate
      position - offset within the byte buffer at which the aggregate value is stored
      Returns:
      the float representation of the aggregate
    • getLong

      public long getLong(ByteBuffer buf, int position)
      Description copied from interface: BufferAggregator
      Returns the long representation of the given aggregate byte array Converts the given byte buffer representation into the intermediate aggregate value. Implementations must not change the position, limit or mark of the given buffer Implementations are only required to support this method if they are aggregations which have an AggregatorFactory.getIntermediateType() of of ValueType.LONG. If unimplemented, throwing an UnsupportedOperationException is common and recommended.
      Specified by:
      getLong in interface BufferAggregator
      Parameters:
      buf - byte buffer storing the byte array representation of the aggregate
      position - offset within the byte buffer at which the aggregate value is stored
      Returns:
      the long representation of the aggregate
    • getDouble

      public double getDouble(ByteBuffer buf, int position)
      Description copied from interface: BufferAggregator
      Returns the double representation of the given aggregate byte array Converts the given byte buffer representation into the intermediate aggregate value. Implementations must not change the position, limit or mark of the given buffer Implementations are only required to support this method if they are aggregations which have an AggregatorFactory.getIntermediateType() of of ValueType.DOUBLE. If unimplemented, throwing an UnsupportedOperationException is common and recommended. The default implementation casts BufferAggregator.getFloat(ByteBuffer, int) to double. This default method is added to enable smooth backward compatibility, please re-implement it if your aggregators work with numeric double columns.
      Specified by:
      getDouble in interface BufferAggregator
      Parameters:
      buf - byte buffer storing the byte array representation of the aggregate
      position - offset within the byte buffer at which the aggregate value is stored
      Returns:
      the double representation of the aggregate
    • 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