Class GroupByVectorColumnProcessorFactory
- java.lang.Object
-
- org.apache.druid.query.groupby.epinephelinae.vector.GroupByVectorColumnProcessorFactory
-
- All Implemented Interfaces:
VectorColumnProcessorFactory<GroupByVectorColumnSelector>
public class GroupByVectorColumnProcessorFactory extends Object implements VectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
-
Method Summary
-
-
-
Method Detail
-
instance
public static GroupByVectorColumnProcessorFactory instance()
-
makeSingleValueDimensionProcessor
public GroupByVectorColumnSelector makeSingleValueDimensionProcessor(ColumnCapabilities capabilities, SingleValueDimensionVectorSelector selector)
Description copied from interface:VectorColumnProcessorFactory
Called only ifTypeSignature.getType()
is STRING and the underlying column always has a single value per row. Note that for STRING-typed columns where the dictionary does not exist or is not expected to be useful,VectorColumnProcessorFactory.makeObjectProcessor(org.apache.druid.segment.column.ColumnCapabilities, org.apache.druid.segment.vector.VectorObjectSelector)
may be called instead. To handle all string inputs properly, processors must implement all three methods (single-value, multi-value, object).- Specified by:
makeSingleValueDimensionProcessor
in interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeMultiValueDimensionProcessor
public GroupByVectorColumnSelector makeMultiValueDimensionProcessor(ColumnCapabilities capabilities, MultiValueDimensionVectorSelector selector)
Description copied from interface:VectorColumnProcessorFactory
Called only ifTypeSignature.getType()
is STRING and the underlying column may have multiple values per row. Note that for STRING-typed columns where the dictionary does not exist or is not expected to be useful,VectorColumnProcessorFactory.makeObjectProcessor(org.apache.druid.segment.column.ColumnCapabilities, org.apache.druid.segment.vector.VectorObjectSelector)
may be called instead. To handle all string inputs properly, processors must implement all three methods (single-value, multi-value, object).- Specified by:
makeMultiValueDimensionProcessor
in interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeFloatProcessor
public GroupByVectorColumnSelector makeFloatProcessor(ColumnCapabilities capabilities, VectorValueSelector selector)
Description copied from interface:VectorColumnProcessorFactory
Called whenTypeSignature.getType()
is FLOAT.- Specified by:
makeFloatProcessor
in interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeDoubleProcessor
public GroupByVectorColumnSelector makeDoubleProcessor(ColumnCapabilities capabilities, VectorValueSelector selector)
Description copied from interface:VectorColumnProcessorFactory
Called whenTypeSignature.getType()
is DOUBLE.- Specified by:
makeDoubleProcessor
in interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeLongProcessor
public GroupByVectorColumnSelector makeLongProcessor(ColumnCapabilities capabilities, VectorValueSelector selector)
Description copied from interface:VectorColumnProcessorFactory
Called whenTypeSignature.getType()
is LONG.- Specified by:
makeLongProcessor
in interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeArrayProcessor
public GroupByVectorColumnSelector makeArrayProcessor(ColumnCapabilities capabilities, VectorObjectSelector selector)
Description copied from interface:VectorColumnProcessorFactory
Called whenTypeSignature.getType()
is ARRAY.- Specified by:
makeArrayProcessor
in interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeObjectProcessor
public GroupByVectorColumnSelector makeObjectProcessor(ColumnCapabilities capabilities, VectorObjectSelector selector)
Description copied from interface:VectorColumnProcessorFactory
Called whenTypeSignature.getType()
is COMPLEX. May also be called for STRING typed columns in cases where the dictionary does not exist or is not expected to be useful.- Specified by:
makeObjectProcessor
in interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
- See Also:
for details on what can appear here when type is STRING
-
useDictionaryEncodedSelector
public boolean useDictionaryEncodedSelector(ColumnCapabilities capabilities)
The group by engine vector processor has a more relaxed approach to choosing to use a dictionary encoded string selector over an object selector than some of the otherVectorColumnProcessorFactory
implementations. Basically, if a valid dictionary exists, we will use it to group on dictionary ids (so that we can useSingleValueStringGroupByVectorColumnSelector
whenever possible instead ofDictionaryBuildingSingleValueStringGroupByVectorColumnSelector
). We do this even for things like virtual columns that have a single string input, because it allows deferring accessing any of the actual string values, which involves at minimum reading utf8 byte values and converting them to string form (if not already cached), and in the case of expressions, computing the expression output for the string input.- Specified by:
useDictionaryEncodedSelector
in interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
-