public interface AggregateCombiner<T> extends ColumnValueSelector<T>
IndexMerger).
The state of the implementations of this interface is an aggregation value (either a primitive or an object), that
could be queried via ColumnValueSelector's methods. Before reset(org.apache.druid.segment.ColumnValueSelector) is ever called on an
AggregateCombiner, it's state is undefined and ColumnValueSelector's methods could return something random,
or null, or throw an exception.
This interface would probably better be called "AggregateFolder", but somebody may confuse it with "folder" as
"directory" synonym.EMPTY_ARRAY| Modifier and Type | Method and Description |
|---|---|
void |
fold(ColumnValueSelector selector)
Folds this AggregateCombiner's state value with the value of the given selector and saves it in this
AggregateCombiner's state, e.
|
default void |
inspectRuntimeShape(RuntimeShapeInspector inspector)
Implementations of this method should call
inspector.visit() with all fields of this class, which meet two
conditions:
1. |
default boolean |
isNull()
Returns true if the primitive long, double, or float value returned by this selector should be treated as null.
|
void |
reset(ColumnValueSelector selector)
Resets this AggregateCombiner's state value to the value of the given selector, e.
|
getLonggetDoublegetFloatclassOfObject, getObjectvoid reset(ColumnValueSelector selector)
ObjectColumnSelector, the object returned from BaseObjectColumnValueSelector.getObject() must not be modified, and must not become a subject for
modification during subsequent fold(org.apache.druid.segment.ColumnValueSelector) calls.void fold(ColumnValueSelector selector)
aggregatorFactory.combine(combiner.get*(), selector.get*()) call.
Unlike AggregatorFactory.combine(java.lang.Object, java.lang.Object), if the selector is an ObjectColumnSelector, the
object returned from BaseObjectColumnValueSelector.getObject() must not be modified, and must not
become a subject for modification during subsequent fold() calls.
Since the state of AggregateCombiner is undefined before reset(org.apache.druid.segment.ColumnValueSelector) is ever called on it, the effects of
calling fold() are also undefined in this case.default boolean isNull()
BaseNullableColumnValueSelectorBaseLongColumnValueSelector.getLong(), BaseDoubleColumnValueSelector.getDouble()
and BaseFloatColumnValueSelector.getFloat() must check this method first, or else they may improperly
use placeholder values returned by the primitive get methods.
Users of BaseObjectColumnValueSelector.getObject() should not call this method. Instead, call "getObject"
and check if it is null.isNull in interface BaseNullableColumnValueSelectordefault void inspectRuntimeShape(RuntimeShapeInspector inspector)
HotLoopCalleeinspector.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.inspectRuntimeShape in interface HotLoopCalleeCopyright © 2011–2023 The Apache Software Foundation. All rights reserved.