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:VectorColumnProcessorFactoryCalled 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:
makeSingleValueDimensionProcessorin interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeMultiValueDimensionProcessor
public GroupByVectorColumnSelector makeMultiValueDimensionProcessor(ColumnCapabilities capabilities, MultiValueDimensionVectorSelector selector)
Description copied from interface:VectorColumnProcessorFactoryCalled 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:
makeMultiValueDimensionProcessorin interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeFloatProcessor
public GroupByVectorColumnSelector makeFloatProcessor(ColumnCapabilities capabilities, VectorValueSelector selector)
Description copied from interface:VectorColumnProcessorFactoryCalled whenTypeSignature.getType()is FLOAT.- Specified by:
makeFloatProcessorin interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeDoubleProcessor
public GroupByVectorColumnSelector makeDoubleProcessor(ColumnCapabilities capabilities, VectorValueSelector selector)
Description copied from interface:VectorColumnProcessorFactoryCalled whenTypeSignature.getType()is DOUBLE.- Specified by:
makeDoubleProcessorin interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeLongProcessor
public GroupByVectorColumnSelector makeLongProcessor(ColumnCapabilities capabilities, VectorValueSelector selector)
Description copied from interface:VectorColumnProcessorFactoryCalled whenTypeSignature.getType()is LONG.- Specified by:
makeLongProcessorin interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeArrayProcessor
public GroupByVectorColumnSelector makeArrayProcessor(ColumnCapabilities capabilities, VectorObjectSelector selector)
Description copied from interface:VectorColumnProcessorFactoryCalled whenTypeSignature.getType()is ARRAY.- Specified by:
makeArrayProcessorin interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
makeObjectProcessor
public GroupByVectorColumnSelector makeObjectProcessor(ColumnCapabilities capabilities, VectorObjectSelector selector)
Description copied from interface:VectorColumnProcessorFactoryCalled 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:
makeObjectProcessorin 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 otherVectorColumnProcessorFactoryimplementations. Basically, if a valid dictionary exists, we will use it to group on dictionary ids (so that we can useSingleValueStringGroupByVectorColumnSelectorwhenever 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:
useDictionaryEncodedSelectorin interfaceVectorColumnProcessorFactory<GroupByVectorColumnSelector>
-
-