public class FallbackVirtualColumn extends Object implements VirtualColumn
If you are using this virtual column and want to have a decorator/extraction function on your DimensionSpec, it is expected that you will put it on the specs in the list rather than on the spec that references this virtual column. That is, when this virtual column resolves a dimension, it ignores the decoration from the spec that it was given and instead uses the spec as defined in the list as-is to delegate to the column that it chose.
| Constructor and Description |
|---|
FallbackVirtualColumn(String name,
ArrayList<DimensionSpec> columns) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canVectorize(ColumnInspector inspector) |
ColumnCapabilities |
capabilities(ColumnInspector inspector,
String columnName)
Return the
ColumnCapabilities which best describe the optimal selector to read from this virtual column. |
ColumnCapabilities |
capabilities(String columnName)
This method is deprecated in favor of
VirtualColumn.capabilities(ColumnInspector, String), which should be used whenever
possible and can support virtual column implementations that need to inspect other columns as inputs. |
byte[] |
getCacheKey()
Get a byte array used as a cache key.
|
ArrayList<DimensionSpec> |
getColumns() |
ColumnIndexSupplier |
getIndexSupplier(String columnName,
ColumnSelector columnSelector)
Get the
ColumnIndexSupplier for the specified virtual column, with the assistance of a
ColumnSelector to allow reading things from segments. |
String |
getOutputName()
Output name of this column.
|
ColumnValueSelector<?> |
makeColumnValueSelector(String columnName,
ColumnSelectorFactory factory)
Build a
ColumnValueSelector corresponding to this virtual column. |
DimensionSelector |
makeDimensionSelector(DimensionSpec dimensionSpec,
ColumnSelectorFactory factory)
Build a selector corresponding to this virtual column.
|
MultiValueDimensionVectorSelector |
makeMultiValueVectorDimensionSelector(DimensionSpec dimensionSpec,
VectorColumnSelectorFactory factory)
Build a
MultiValueDimensionVectorSelector corresponding to this virtual column. |
SingleValueDimensionVectorSelector |
makeSingleValueVectorDimensionSelector(DimensionSpec dimensionSpec,
VectorColumnSelectorFactory factory)
Build a
SingleValueDimensionVectorSelector corresponding to this virtual column. |
VectorObjectSelector |
makeVectorObjectSelector(String columnName,
VectorColumnSelectorFactory factory)
Build a
VectorObjectSelector corresponding to this virtual column. |
VectorValueSelector |
makeVectorValueSelector(String columnName,
VectorColumnSelectorFactory factory)
Build a
VectorValueSelector corresponding to this virtual column. |
List<String> |
requiredColumns()
Returns a list of columns that this virtual column will access.
|
boolean |
usesDotNotation()
Indicates that this virtual column can be referenced with dot notation.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitmakeColumnValueSelector, makeDimensionSelector, makeMultiValueVectorDimensionSelector, makeSingleValueVectorDimensionSelector, makeVectorObjectSelector, makeVectorValueSelectorpublic FallbackVirtualColumn(String name, ArrayList<DimensionSpec> columns)
public String getOutputName()
VirtualColumngetOutputName in interface VirtualColumnpublic ArrayList<DimensionSpec> getColumns()
public byte[] getCacheKey()
CacheablegetCacheKey in interface Cacheablepublic DimensionSelector makeDimensionSelector(DimensionSpec dimensionSpec, ColumnSelectorFactory factory)
VirtualColumnDimensionSpec.getDimension(), which
is useful if this column uses dot notation. The virtual column is expected to apply any
necessary decoration from the dimensionSpec.makeDimensionSelector in interface VirtualColumnpublic ColumnValueSelector<?> makeColumnValueSelector(String columnName, ColumnSelectorFactory factory)
VirtualColumnColumnValueSelector corresponding to this virtual column. Also provides the name that the
virtual column was referenced with, which is useful if this column uses dot notation.makeColumnValueSelector in interface VirtualColumnpublic boolean canVectorize(ColumnInspector inspector)
canVectorize in interface VirtualColumnpublic SingleValueDimensionVectorSelector makeSingleValueVectorDimensionSelector(DimensionSpec dimensionSpec, VectorColumnSelectorFactory factory)
VirtualColumnSingleValueDimensionVectorSelector corresponding to this virtual column. Also provides the name
that the virtual column was referenced with (through DimensionSpec.getDimension(), which is useful if this
column uses dot notation. The virtual column is expected to apply any necessary decoration from the
DimensionSpec.makeSingleValueVectorDimensionSelector in interface VirtualColumnpublic MultiValueDimensionVectorSelector makeMultiValueVectorDimensionSelector(DimensionSpec dimensionSpec, VectorColumnSelectorFactory factory)
VirtualColumnMultiValueDimensionVectorSelector corresponding to this virtual column. Also provides
the name that the virtual column was referenced with (through DimensionSpec.getDimension(), which is useful
if this column uses dot notation. The virtual column is expected to apply any necessary decoration from the
DimensionSpec.makeMultiValueVectorDimensionSelector in interface VirtualColumnpublic VectorValueSelector makeVectorValueSelector(String columnName, VectorColumnSelectorFactory factory)
VirtualColumnVectorValueSelector corresponding to this virtual column. Also provides the name that the
virtual column was referenced with, which is useful if this column uses dot notation.makeVectorValueSelector in interface VirtualColumnpublic VectorObjectSelector makeVectorObjectSelector(String columnName, VectorColumnSelectorFactory factory)
VirtualColumnVectorObjectSelector corresponding to this virtual column. Also provides the name that the
virtual column was referenced with, which is useful if this column uses dot notation.makeVectorObjectSelector in interface VirtualColumnpublic ColumnCapabilities capabilities(String columnName)
VirtualColumnVirtualColumn.capabilities(ColumnInspector, String), which should be used whenever
possible and can support virtual column implementations that need to inspect other columns as inputs.
This is a fallback implementation to return the capabilities of this virtual column, which includes a type that
corresponds to the best performing base selector supertype (e. g. BaseLongColumnValueSelector) of the
object, returned from VirtualColumn.makeColumnValueSelector(String, ColumnSelectorFactory). May vary based on columnName
if this column uses dot notation.capabilities in interface VirtualColumncolumnName - the name this virtual column was referenced with@Nullable public ColumnCapabilities capabilities(ColumnInspector inspector, String columnName)
VirtualColumnColumnCapabilities which best describe the optimal selector to read from this virtual column.
The ColumnInspector (most likely corresponding to an underlying ColumnSelectorFactory of a query)
allows the virtual column to consider this information if necessary to compute its output type details.
Examples of this include the ExpressionVirtualColumn, which takes input from other columns and uses the
ColumnInspector to infer the output type of expressions based on the types of the inputs.
capabilities in interface VirtualColumninspector - column inspector to provide additional information of other available columnscolumnName - the name this virtual column was referenced withpublic List<String> requiredColumns()
VirtualColumnrequiredColumns in interface VirtualColumnpublic boolean usesDotNotation()
VirtualColumnusesDotNotation in interface VirtualColumn@Nullable public ColumnIndexSupplier getIndexSupplier(String columnName, ColumnSelector columnSelector)
VirtualColumnColumnIndexSupplier for the specified virtual column, with the assistance of a
ColumnSelector to allow reading things from segments. If the virtual column has no indexes, this method
will return null, or may also return a non-null supplier whose methods may return null values - having a supplier
is no guarantee that the column has indexes.getIndexSupplier in interface VirtualColumnCopyright © 2011–2023 The Apache Software Foundation. All rights reserved.