Class DictionaryBuildingStringGroupByColumnSelectorStrategy
- java.lang.Object
-
- org.apache.druid.query.groupby.epinephelinae.column.StringGroupByColumnSelectorStrategy
-
- org.apache.druid.query.groupby.epinephelinae.column.DictionaryBuildingStringGroupByColumnSelectorStrategy
-
- All Implemented Interfaces:
ColumnSelectorStrategy
,GroupByColumnSelectorStrategy
public class DictionaryBuildingStringGroupByColumnSelectorStrategy extends StringGroupByColumnSelectorStrategy
A String strategy that builds an internal String<->Integer dictionary for DimensionSelectors that return false for nameLookupPossibleInAdvance()
-
-
Constructor Summary
Constructors Constructor Description DictionaryBuildingStringGroupByColumnSelectorStrategy()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Grouper.BufferComparator
bufferComparator(int keyBufferPosition, StringComparator stringComparator)
Return BufferComparator for values written using this strategy when limit is pushed down to segment scan.int
initColumnValues(ColumnValueSelector selector, int columnIndex, Object[] valuess)
Retrieve a row object from theColumnValueSelector
and put it in valuess at columnIndex.void
processValueFromGroupingKey(GroupByColumnSelectorPlus selectorPlus, ByteBuffer key, ResultRow resultRow, int keyBufferPosition)
Read a value from a grouping key and add it to the group by query result row, using the output name specified in a DimensionSpec.void
reset()
Reset any internal state held by this selector.int
writeToKeyBuffer(int keyBufferPosition, ColumnValueSelector selector, ByteBuffer keyBuffer)
Write a single object from the given selector to the keyBuffer at keyBufferPosition.-
Methods inherited from class org.apache.druid.query.groupby.epinephelinae.column.StringGroupByColumnSelectorStrategy
checkRowIndexAndAddValueToGroupingKey, getGroupingKeySize, initGroupingKeyColumnValue, writeToKeyBuffer
-
-
-
-
Method Detail
-
processValueFromGroupingKey
public void processValueFromGroupingKey(GroupByColumnSelectorPlus selectorPlus, ByteBuffer key, ResultRow resultRow, int keyBufferPosition)
Description copied from interface:GroupByColumnSelectorStrategy
Read a value from a grouping key and add it to the group by query result row, using the output name specified in a DimensionSpec. An implementation may choose to not add anything to the result row (e.g., as the String implementation does for empty rows) selectorPlus provides access to: - the keyBufferPosition offset from which to read the value - the dimension value selector - the DimensionSpec for this dimension from the query- Specified by:
processValueFromGroupingKey
in interfaceGroupByColumnSelectorStrategy
- Overrides:
processValueFromGroupingKey
in classStringGroupByColumnSelectorStrategy
- Parameters:
selectorPlus
- dimension info containing the key offset, value selector, and dimension speckey
- grouping keyresultRow
- result row for the group by query being servedkeyBufferPosition
- buffer position for the grouping key, added to support chaining multipleColumnSelectorStrategy
-
initColumnValues
public int initColumnValues(ColumnValueSelector selector, int columnIndex, Object[] valuess)
Description copied from interface:GroupByColumnSelectorStrategy
Retrieve a row object from theColumnValueSelector
and put it in valuess at columnIndex.- Specified by:
initColumnValues
in interfaceGroupByColumnSelectorStrategy
- Overrides:
initColumnValues
in classStringGroupByColumnSelectorStrategy
- Parameters:
selector
- Value selector for a column.columnIndex
- Index of the column within the row values arrayvaluess
- Row values array, one index per column- Returns:
- estimated increase in internal state footprint, in bytes, as a result of this operation. May be zero if memory did not increase as a result of this operation. Will not be negative.
-
writeToKeyBuffer
public int writeToKeyBuffer(int keyBufferPosition, ColumnValueSelector selector, ByteBuffer keyBuffer)
Description copied from interface:GroupByColumnSelectorStrategy
Write a single object from the given selector to the keyBuffer at keyBufferPosition. The reading column must have a single value. The position of the keyBuffer may be modified.- Specified by:
writeToKeyBuffer
in interfaceGroupByColumnSelectorStrategy
- Overrides:
writeToKeyBuffer
in classStringGroupByColumnSelectorStrategy
- Parameters:
keyBufferPosition
- starting offset for this column's value within the grouping keyselector
- selector to retrieve row value object fromkeyBuffer
- grouping key- Returns:
- estimated increase in internal state footprint, in bytes, as a result of this operation. May be zero if memory did not increase as a result of this operation. Will not be negative.
-
bufferComparator
public Grouper.BufferComparator bufferComparator(int keyBufferPosition, @Nullable StringComparator stringComparator)
Description copied from interface:GroupByColumnSelectorStrategy
Return BufferComparator for values written using this strategy when limit is pushed down to segment scan.- Specified by:
bufferComparator
in interfaceGroupByColumnSelectorStrategy
- Overrides:
bufferComparator
in classStringGroupByColumnSelectorStrategy
- Parameters:
keyBufferPosition
- starting offset for this column's value within the grouping keystringComparator
- stringComparator from LimitSpec for this column. If this is null, implementations will use theStringComparators.LEXICOGRAPHIC
comparator.- Returns:
- BufferComparator for comparing values written
-
reset
public void reset()
Description copied from interface:GroupByColumnSelectorStrategy
Reset any internal state held by this selector. After this method is called, any row objects or key objects generated by any methods of this class must be considered unreadable. CallingGroupByColumnSelectorStrategy.processValueFromGroupingKey(org.apache.druid.query.groupby.epinephelinae.column.GroupByColumnSelectorPlus, java.nio.ByteBuffer, org.apache.druid.query.groupby.ResultRow, int)
on that memory has undefined behavior.- Specified by:
reset
in interfaceGroupByColumnSelectorStrategy
- Overrides:
reset
in classStringGroupByColumnSelectorStrategy
-
-