Class StringAnyBufferAggregator
- java.lang.Object
-
- org.apache.druid.query.aggregation.any.StringAnyBufferAggregator
-
- All Implemented Interfaces:
BufferAggregator,HotLoopCallee
public class StringAnyBufferAggregator extends Object implements BufferAggregator
-
-
Constructor Summary
Constructors Constructor Description StringAnyBufferAggregator(BaseObjectColumnValueSelector valueSelector, int maxStringBytes, boolean aggregateMultipleValues)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaggregate(ByteBuffer buf, int position)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.voidclose()Release any resources used by the aggregator.Objectget(ByteBuffer buf, int position)Returns the intermediate object representation of the given aggregate.doublegetDouble(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.floatgetFloat(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.longgetLong(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.voidinit(ByteBuffer buf, int position)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 byAggregatorFactory.getMaxIntermediateSizeWithNulls()in the correspondingAggregatorFactory-
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
inspectRuntimeShape, isNull, relocate
-
-
-
-
Constructor Detail
-
StringAnyBufferAggregator
public StringAnyBufferAggregator(BaseObjectColumnValueSelector valueSelector, int maxStringBytes, boolean aggregateMultipleValues)
-
-
Method Detail
-
init
public void init(ByteBuffer buf, int position)
Description copied from interface:BufferAggregatorInitializes 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 byAggregatorFactory.getMaxIntermediateSizeWithNulls()in the correspondingAggregatorFactory- Specified by:
initin interfaceBufferAggregator- Parameters:
buf- byte buffer to initializeposition- offset within the byte buffer for initialization
-
aggregate
public void aggregate(ByteBuffer buf, int position)
Description copied from interface:BufferAggregatorAggregates 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:
aggregatein interfaceBufferAggregator- Parameters:
buf- byte buffer storing the byte array representation of the aggregateposition- offset within the byte buffer at which the current aggregate value is stored
-
get
public Object get(ByteBuffer buf, int position)
Description copied from interface:BufferAggregatorReturns 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 correspondingAggregatorFactory.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:
getin interfaceBufferAggregator- Parameters:
buf- byte buffer storing the byte array representation of the aggregateposition- 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:BufferAggregatorReturns 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 anAggregatorFactory.getIntermediateType()()} ofValueType.FLOAT. If unimplemented, throwing anUnsupportedOperationExceptionis common and recommended.- Specified by:
getFloatin interfaceBufferAggregator- Parameters:
buf- byte buffer storing the byte array representation of the aggregateposition- 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:BufferAggregatorReturns 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 anAggregatorFactory.getIntermediateType()of ofValueType.LONG. If unimplemented, throwing anUnsupportedOperationExceptionis common and recommended.- Specified by:
getLongin interfaceBufferAggregator- Parameters:
buf- byte buffer storing the byte array representation of the aggregateposition- 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:BufferAggregatorReturns 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 anAggregatorFactory.getIntermediateType()of ofValueType.DOUBLE. If unimplemented, throwing anUnsupportedOperationExceptionis common and recommended. The default implementation castsBufferAggregator.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:
getDoublein interfaceBufferAggregator- Parameters:
buf- byte buffer storing the byte array representation of the aggregateposition- 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:BufferAggregatorRelease any resources used by the aggregator. The aggregator may be reused after this call, by callingBufferAggregator.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:
closein interfaceBufferAggregator
-
-