public interface ColumnCapabilities
| Modifier and Type | Interface and Description |
|---|---|
static class |
ColumnCapabilities.Capable |
static interface |
ColumnCapabilities.CoercionLogic
This interface define the shape of a mechnism to allow for bespoke coercion of
ColumnCapabilities.Capable.UNKNOWN into
ColumnCapabilities.Capable.TRUE or ColumnCapabilities.Capable.FALSE for each ColumnCapabilities.Capable of a ColumnCapabilities, as is
appropriate for the situation of the caller. |
| Modifier and Type | Method and Description |
|---|---|
ColumnCapabilities.Capable |
areDictionaryValuesSorted()
If the column is dictionary encoded, are those values sorted? Useful to know for optimizations that can defer
looking up values and allowing sorting with the dictionary ids directly
|
ColumnCapabilities.Capable |
areDictionaryValuesUnique()
If the column is dictionary encoded, is there a 1:1 mapping of dictionary ids to values? If this is true, it
unlocks optimizations such as allowing for things like grouping directly on dictionary ids and deferred value
lookup
|
String |
getComplexTypeName()
If ValueType is COMPLEX, then the typeName associated with it.
|
ValueType |
getType()
Column type, good to know so caller can know what to expect and which optimal selector to use
|
boolean |
hasBitmapIndexes()
Does the column have an inverted index bitmap for each value? If so, these may be employed to 'pre-filter' the
column by examining if the values match the filter and intersecting the bitmaps, to avoid having to scan and
evaluate if every row matches the filter
|
ColumnCapabilities.Capable |
hasMultipleValues()
String columns are sneaky, and might have multiple values, this is to allow callers to know and appropriately
prepare themselves
|
ColumnCapabilities.Capable |
hasNulls()
Does this column contain null values? If so, callers, especially for primitive numeric columns, will need to check
for null value rows and act accordingly
|
boolean |
hasSpatialIndexes()
Does the column have spatial indexes available to allow use with spatial filtering?
|
ColumnCapabilities.Capable |
isDictionaryEncoded()
Is the column dictionary encoded? If so, a DimensionDictionarySelector may be used instead of using a value
selector, allowing algorithms to operate on primitive integer dictionary ids rather than the looked up dictionary
values
|
boolean |
isFilterable()
All Druid primitive columns support filtering, maybe with or without indexes, but by default complex columns
do not support direct filtering, unless provided by through a custom implementation.
|
ValueType getType()
@Nullable String getComplexTypeName()
ColumnCapabilities.Capable isDictionaryEncoded()
ColumnCapabilities.Capable areDictionaryValuesSorted()
ColumnCapabilities.Capable areDictionaryValuesUnique()
ColumnCapabilities.Capable hasMultipleValues()
boolean hasBitmapIndexes()
boolean hasSpatialIndexes()
boolean isFilterable()
ColumnCapabilities.Capable hasNulls()
Copyright © 2011–2021 The Apache Software Foundation. All rights reserved.