Package org.apache.druid.segment.vector
Class QueryableIndexVectorColumnSelectorFactory
- java.lang.Object
-
- org.apache.druid.segment.vector.QueryableIndexVectorColumnSelectorFactory
-
- All Implemented Interfaces:
Expr.InputBindingInspector
,ColumnInspector
,VectorColumnSelectorFactory
public class QueryableIndexVectorColumnSelectorFactory extends Object implements VectorColumnSelectorFactory
-
-
Constructor Summary
Constructors Constructor Description QueryableIndexVectorColumnSelectorFactory(QueryableIndex index, ReadableVectorOffset offset, ColumnCache columnCache, VirtualColumns virtualColumns)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ColumnCapabilities
getColumnCapabilities(String columnName)
Returns capabilities of a particular column, or null if the column doesn't exist.ReadableVectorInspector
getReadableVectorInspector()
Returns aReadableVectorInspector
for theVectorCursor
that generated this object.MultiValueDimensionVectorSelector
makeMultiValueDimensionSelector(DimensionSpec dimensionSpec)
Returns a dictionary encoded, string-typed, multi-value-per-row column selector.VectorObjectSelector
makeObjectSelector(String columnName)
Returns an object selector.SingleValueDimensionVectorSelector
makeSingleValueDimensionSelector(DimensionSpec dimensionSpec)
Returns a dictionary encoded, string-typed, single-value-per-row column selector.VectorValueSelector
makeValueSelector(String columnName)
Returns a primitive column selector.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.druid.segment.ColumnInspector
getColumnCapabilitiesWithDefault, getType
-
Methods inherited from interface org.apache.druid.math.expr.Expr.InputBindingInspector
areNumeric, areNumeric, areSameTypes, areSameTypes, areScalar, areScalar, canVectorize, canVectorize
-
Methods inherited from interface org.apache.druid.segment.vector.VectorColumnSelectorFactory
getMaxVectorSize
-
-
-
-
Constructor Detail
-
QueryableIndexVectorColumnSelectorFactory
public QueryableIndexVectorColumnSelectorFactory(QueryableIndex index, ReadableVectorOffset offset, ColumnCache columnCache, VirtualColumns virtualColumns)
-
-
Method Detail
-
getReadableVectorInspector
public ReadableVectorInspector getReadableVectorInspector()
Description copied from interface:VectorColumnSelectorFactory
Returns aReadableVectorInspector
for theVectorCursor
that generated this object.- Specified by:
getReadableVectorInspector
in interfaceVectorColumnSelectorFactory
-
makeMultiValueDimensionSelector
public MultiValueDimensionVectorSelector makeMultiValueDimensionSelector(DimensionSpec dimensionSpec)
Description copied from interface:VectorColumnSelectorFactory
Returns a dictionary encoded, string-typed, multi-value-per-row column selector. Should only be called on columns whereVectorColumnSelectorFactory.getColumnCapabilities(java.lang.String)
indicates they return STRING. UnlikeVectorColumnSelectorFactory.makeSingleValueDimensionSelector(org.apache.druid.query.dimension.DimensionSpec)
, this should not be called on nonexistent columns. If you need to write code that adapts to different input types, you should write aVectorColumnProcessorFactory
and use one of theColumnProcessors.makeVectorProcessor(java.lang.String, org.apache.druid.segment.VectorColumnProcessorFactory<T>, org.apache.druid.segment.vector.VectorColumnSelectorFactory)
functions instead of using this method.- Specified by:
makeMultiValueDimensionSelector
in interfaceVectorColumnSelectorFactory
-
makeSingleValueDimensionSelector
public SingleValueDimensionVectorSelector makeSingleValueDimensionSelector(DimensionSpec dimensionSpec)
Description copied from interface:VectorColumnSelectorFactory
Returns a dictionary encoded, string-typed, single-value-per-row column selector. Should only be called on columns whereVectorColumnSelectorFactory.getColumnCapabilities(java.lang.String)
indicates they return STRING, or on nonexistent columns. Since the selector created with this method operates directly on the dictionary encoded input, STRING values must be translated from the dictionary id for a given row value usingDimensionDictionarySelector.lookupName(int)
, but this selector can prove optimal for operations which can be done directly on the underlying dictionary ids, such as grouping within a segment. If you need to write code that adapts to different input types, you should write aVectorColumnProcessorFactory
and use one of theColumnProcessors.makeVectorProcessor(java.lang.String, org.apache.druid.segment.VectorColumnProcessorFactory<T>, org.apache.druid.segment.vector.VectorColumnSelectorFactory)
functions instead of using this method.- Specified by:
makeSingleValueDimensionSelector
in interfaceVectorColumnSelectorFactory
-
makeValueSelector
public VectorValueSelector makeValueSelector(String columnName)
Description copied from interface:VectorColumnSelectorFactory
Returns a primitive column selector. Should only be called on columns whereVectorColumnSelectorFactory.getColumnCapabilities(java.lang.String)
indicates they return DOUBLE, FLOAT, or LONG, or on nonexistent columns. If you need to write code that adapts to different input types, you should write aVectorColumnProcessorFactory
and use one of theColumnProcessors.makeVectorProcessor(java.lang.String, org.apache.druid.segment.VectorColumnProcessorFactory<T>, org.apache.druid.segment.vector.VectorColumnSelectorFactory)
functions instead of using this method.- Specified by:
makeValueSelector
in interfaceVectorColumnSelectorFactory
-
makeObjectSelector
public VectorObjectSelector makeObjectSelector(String columnName)
Description copied from interface:VectorColumnSelectorFactory
Returns an object selector. Should only be called on columns whereVectorColumnSelectorFactory.getColumnCapabilities(java.lang.String)
indicates that they return STRING, ARRAY, or COMPLEX, or on nonexistent columns. For STRING, this is needed if values are not dictionary encoded, such as computed virtual columns, or can optionally be used in place ofSingleValueDimensionVectorSelector
when using the dictionary isn't helpful. Currently, this should only be called on single valued STRING inputs (multi-value STRING vector object selector is not yet implemented). If you need to write code that adapts to different input types, you should write aVectorColumnProcessorFactory
and use one of theColumnProcessors.makeVectorProcessor(java.lang.String, org.apache.druid.segment.VectorColumnProcessorFactory<T>, org.apache.druid.segment.vector.VectorColumnSelectorFactory)
functions instead of using this method.- Specified by:
makeObjectSelector
in interfaceVectorColumnSelectorFactory
-
getColumnCapabilities
@Nullable public ColumnCapabilities getColumnCapabilities(String columnName)
Description copied from interface:VectorColumnSelectorFactory
Returns capabilities of a particular column, or null if the column doesn't exist. Unlike ColumnSelectorFactory, null does not potentially indicate a dynamically discovered column.- Specified by:
getColumnCapabilities
in interfaceColumnInspector
- Specified by:
getColumnCapabilities
in interfaceVectorColumnSelectorFactory
- Parameters:
columnName
- column name- Returns:
- capabilities, or null if the column doesn't exist.
-
-