Class GroupByQueryEngineV2.GroupByEngineIterator<KeyType>
- java.lang.Object
-
- org.apache.druid.query.groupby.epinephelinae.GroupByQueryEngineV2.GroupByEngineIterator<KeyType>
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Iterator<ResultRow>
- Direct Known Subclasses:
GroupByQueryEngineV2.HashAggregateIterator
- Enclosing class:
- GroupByQueryEngineV2
public abstract static class GroupByQueryEngineV2.GroupByEngineIterator<KeyType> extends Object implements Iterator<ResultRow>, Closeable
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
allowMultiValueGrouping
protected boolean
allSingleValueDims
protected ByteBuffer
buffer
protected Cursor
cursor
protected CloseableGrouperIterator<KeyType,ResultRow>
delegate
protected GroupByColumnSelectorPlus[]
dims
protected Grouper.KeySerde<ByteBuffer>
keySerde
protected long
maxSelectorFootprint
protected GroupByQuery
query
protected GroupByQueryConfig
querySpecificConfig
protected org.joda.time.DateTime
timestamp
-
Constructor Summary
Constructors Constructor Description GroupByEngineIterator(GroupByQuery query, GroupByQueryConfig querySpecificConfig, DruidProcessingConfig processingConfig, Cursor cursor, ByteBuffer buffer, org.joda.time.DateTime fudgeTimestamp, GroupByColumnSelectorPlus[] dims, boolean allSingleValueDims)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract void
aggregateMultiValueDims(Grouper<KeyType> grouper)
Grouping dimensions can be multi-valued, and thus the given grouper should handle them properly during aggregation.protected abstract void
aggregateSingleValueDims(Grouper<KeyType> grouper)
Grouping dimensions are all single-valued, and thus the given grouper don't have to worry about multi-valued dimensions.protected void
checkIfMultiValueGroupingIsAllowed(String dimName)
ThrowsUnexpectedMultiValueDimensionException
if "allowMultiValueGrouping" is false.void
close()
protected int
getSingleValue(IndexedInts indexedInts)
boolean
hasNext()
protected abstract Grouper<KeyType>
newGrouper()
Create a new grouper.ResultRow
next()
protected abstract void
putToRow(KeyType key, ResultRow resultRow)
Add the key to the result row.void
remove()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Iterator
forEachRemaining
-
-
-
-
Field Detail
-
query
protected final GroupByQuery query
-
querySpecificConfig
protected final GroupByQueryConfig querySpecificConfig
-
cursor
protected final Cursor cursor
-
buffer
protected final ByteBuffer buffer
-
keySerde
protected final Grouper.KeySerde<ByteBuffer> keySerde
-
dims
protected final GroupByColumnSelectorPlus[] dims
-
timestamp
protected final org.joda.time.DateTime timestamp
-
delegate
@Nullable protected CloseableGrouperIterator<KeyType,ResultRow> delegate
-
allSingleValueDims
protected final boolean allSingleValueDims
-
allowMultiValueGrouping
protected final boolean allowMultiValueGrouping
-
maxSelectorFootprint
protected final long maxSelectorFootprint
-
-
Constructor Detail
-
GroupByEngineIterator
public GroupByEngineIterator(GroupByQuery query, GroupByQueryConfig querySpecificConfig, DruidProcessingConfig processingConfig, Cursor cursor, ByteBuffer buffer, @Nullable org.joda.time.DateTime fudgeTimestamp, GroupByColumnSelectorPlus[] dims, boolean allSingleValueDims)
-
-
Method Detail
-
close
public void close()
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
aggregateSingleValueDims
protected abstract void aggregateSingleValueDims(Grouper<KeyType> grouper)
Grouping dimensions are all single-valued, and thus the given grouper don't have to worry about multi-valued dimensions.
-
aggregateMultiValueDims
protected abstract void aggregateMultiValueDims(Grouper<KeyType> grouper)
Grouping dimensions can be multi-valued, and thus the given grouper should handle them properly during aggregation.
-
putToRow
protected abstract void putToRow(KeyType key, ResultRow resultRow)
Add the key to the result row. Some pre-processing like deserialization might be done for the key before adding to the map.
-
getSingleValue
protected int getSingleValue(IndexedInts indexedInts)
-
checkIfMultiValueGroupingIsAllowed
protected void checkIfMultiValueGroupingIsAllowed(String dimName)
ThrowsUnexpectedMultiValueDimensionException
if "allowMultiValueGrouping" is false.
-
-