public class NullableNumericVectorAggregator extends Object implements VectorAggregator
VectorValueSelector as input.
The result of this aggregator will be null if all the values to be aggregated are null values or no values are
aggregated at all. If any of the values are non-null, the result will be the aggregated value of the delegate
aggregator.
When wrapped by this class, the underlying aggregator's required storage space is increased by one byte. The extra
byte is a boolean that stores whether or not any non-null values have been seen. The extra byte is placed before
the underlying aggregator's normal state. (Buffer layout = [nullability byte] [delegate storage bytes])
The result of a NullableAggregator will be null if all the values to be aggregated are null values
or no values are aggregated at all. If any of the value is non-null, the result would be the aggregated
value of the delegate aggregator. Note that the delegate aggregator is not required to perform check for
VectorValueSelector.getNullVector() on the selector as only non-null values will be passed
to the delegate aggregator. This class is only used when SQL compatible null handling is enabled., the vectorized version.| Modifier and Type | Method and Description |
|---|---|
void |
aggregate(ByteBuffer buf,
int numRows,
int[] positions,
int[] rows,
int positionOffset)
Aggregate a list of rows ("rows") into a list of aggregation slots ("positions").
|
void |
aggregate(ByteBuffer buf,
int position,
int startRow,
int endRow)
Aggregate a range of rows into a single aggregation slot.
|
void |
close()
Release any resources used by the aggregator.
|
Object |
get(ByteBuffer buf,
int position)
|
void |
init(ByteBuffer buf,
int position)
|
void |
relocate(int oldPosition,
int newPosition,
ByteBuffer oldBuffer,
ByteBuffer newBuffer)
|
public void init(ByteBuffer buf, int position)
VectorAggregatorinit in interface VectorAggregatorpublic void aggregate(ByteBuffer buf, int position, int startRow, int endRow)
VectorAggregatoraggregate in interface VectorAggregatorbuf - byte buffer storing the byte array representation of the aggregateposition - offset within the byte buffer at which the current aggregate value is storedstartRow - first row of the range within the current batch to aggregate (inclusive)endRow - end row of the range (exclusive)public void aggregate(ByteBuffer buf, int numRows, int[] positions, @Nullable int[] rows, int positionOffset)
VectorAggregatoraggregate in interface VectorAggregatorbuf - byte buffer storing the byte array representation of the aggregatenumRows - number of rows to aggregatepositions - array of aggregate value positions within the buffer; must be at least as long as "numRows"rows - array of row numbers within the current row batch; must be at least as long as "numRows". If
null, the aggregator will aggregate rows from 0 (inclusive) to numRows (exclusive).positionOffset - an offset to apply to each value from "positions"@Nullable public Object get(ByteBuffer buf, int position)
VectorAggregatorget in interface VectorAggregatorpublic void relocate(int oldPosition,
int newPosition,
ByteBuffer oldBuffer,
ByteBuffer newBuffer)
VectorAggregatorrelocate in interface VectorAggregatorpublic void close()
VectorAggregatorclose in interface VectorAggregatorCopyright © 2011–2023 The Apache Software Foundation. All rights reserved.