public abstract class NumericAnyBufferAggregator<TSelector extends BaseNullableColumnValueSelector> extends Object implements BufferAggregator
| Constructor and Description |
|---|
NumericAnyBufferAggregator(TSelector valueSelector) |
| Modifier and Type | Method and 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 aggregator
|
void |
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 by
AggregatorFactory.getMaxIntermediateSizeWithNulls()
in the corresponding AggregatorFactory |
void |
inspectRuntimeShape(RuntimeShapeInspector inspector)
Implementations of this method should call
inspector.visit() with all fields of this class, which meet two
conditions:
1. |
public NumericAnyBufferAggregator(TSelector valueSelector)
public void init(ByteBuffer buf, int position)
BufferAggregatorAggregatorFactory.getMaxIntermediateSizeWithNulls()
in the corresponding AggregatorFactoryinit in interface BufferAggregatorbuf - byte buffer to initializeposition - offset within the byte buffer for initializationpublic void aggregate(ByteBuffer buf, int position)
BufferAggregatoraggregate in interface BufferAggregatorbuf - byte buffer storing the byte array representation of the aggregateposition - offset within the byte buffer at which the current aggregate value is storedpublic void close()
BufferAggregatorclose in interface BufferAggregatorpublic void inspectRuntimeShape(RuntimeShapeInspector inspector)
BufferAggregatorinspector.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).
inspectRuntimeShape in interface BufferAggregatorinspectRuntimeShape in interface HotLoopCalleeCopyright © 2011–2023 The Apache Software Foundation. All rights reserved.