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 Summary
Constructors Constructor Description NumericAnyBufferAggregator(TSelector valueSelector)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
aggregate(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.void
close()
Release any resources used by the aggregatorvoid
init(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
void
inspectRuntimeShape(RuntimeShapeInspector inspector)
Implementations of this method should callinspector.visit()
with all fields of this class, which meet two conditions: 1.
-
-
-
Constructor Detail
-
NumericAnyBufferAggregator
public NumericAnyBufferAggregator(TSelector valueSelector)
-
-
Method Detail
-
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 byAggregatorFactory.getMaxIntermediateSizeWithNulls()
in the correspondingAggregatorFactory
- Specified by:
init
in 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: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 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
-
close
public void close()
Description copied from interface:BufferAggregator
Release any resources used by the aggregator- Specified by:
close
in interfaceBufferAggregator
-
inspectRuntimeShape
public void inspectRuntimeShape(RuntimeShapeInspector inspector)
Description copied from interface:BufferAggregator
Implementations of this method should callinspector.visit()
with all fields of this class, which meet two conditions: 1. They are used in methods of this class, annotated withCalledFromHotLoop
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 typeSet
could beHashSet
orTreeSet
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 ofHotLoopCallee.inspectRuntimeShape(org.apache.druid.query.monomorphicprocessing.RuntimeShapeInspector)
.- Specified by:
inspectRuntimeShape
in interfaceBufferAggregator
- Specified by:
inspectRuntimeShape
in interfaceHotLoopCallee
-
-