Package org.apache.druid.segment.index
Class DictionaryScanningBitmapIndex
java.lang.Object
org.apache.druid.segment.index.SimpleBitmapColumnIndex
org.apache.druid.segment.index.SimpleImmutableBitmapIterableIndex
org.apache.druid.segment.index.DictionaryScanningBitmapIndex
- All Implemented Interfaces:
BitmapColumnIndex
Common
BitmapColumnIndex implementation for indexes which are computed by scanning the entire value
dictionary of the underlying column to check if the value index matches the filter. Contains logic to skip computing
indexes with computeBitmapResult(BitmapResultFactory, int, int, boolean) if 'selectionRowCount' does not
equal 'totalRowCount' and 'selectionRowCount' is smaller than dictionarySize multiplied by
scaleThreshold. The default scaleThreshold value is 1.0, meaning that if dictionarySize
is larger than 'selectionRowCount' we skip using indexes, the idea being we would either have to perform the check
against the values in the dictionary or the values in the remaining rows, since remaining rows is smaller we should
just do that instead of spending time to compute indexes to further shrink 'selectionRowCount'.-
Field Summary
Fields inherited from class org.apache.druid.segment.index.SimpleBitmapColumnIndex
CAPABILITIES -
Constructor Summary
ConstructorsConstructorDescriptionDictionaryScanningBitmapIndex(int dictionarySize) DictionaryScanningBitmapIndex(int dictionarySize, double scaleThreshold) -
Method Summary
Modifier and TypeMethodDescriptionfinal <T> TcomputeBitmapResult(BitmapResultFactory<T> bitmapResultFactory, int applyRowCount, int totalRowCount, boolean includeUnknown) Compute a bitmap result wrapped with theBitmapResultFactoryrepresenting the rows matched by this index, or null if the index cannot (or should not) be computed.intReturns an estimated cost for computing the bitmap result.Methods inherited from class org.apache.druid.segment.index.SimpleImmutableBitmapIterableIndex
computeBitmapResult, getBitmapIterableMethods inherited from class org.apache.druid.segment.index.SimpleBitmapColumnIndex
getIndexCapabilities
-
Constructor Details
-
DictionaryScanningBitmapIndex
public DictionaryScanningBitmapIndex(int dictionarySize) -
DictionaryScanningBitmapIndex
public DictionaryScanningBitmapIndex(int dictionarySize, double scaleThreshold)
-
-
Method Details
-
estimatedComputeCost
public int estimatedComputeCost()Description copied from interface:BitmapColumnIndexReturns an estimated cost for computing the bitmap result. Generally this is equivalent to number of bitmap union or intersection operations need to be performed. E.x. null value index bitmap has a cost of 0, non-null value index bitmap union with null bitmap has a cost of 1, range (size of 10) scanning index bitmap union with null bitmap has a cost of 10. -
computeBitmapResult
@Nullable public final <T> T computeBitmapResult(BitmapResultFactory<T> bitmapResultFactory, int applyRowCount, int totalRowCount, boolean includeUnknown) Description copied from interface:BitmapColumnIndexCompute a bitmap result wrapped with theBitmapResultFactoryrepresenting the rows matched by this index, or null if the index cannot (or should not) be computed.- Parameters:
bitmapResultFactory- helper to format theImmutableBitmapin a form ready for consumption by callersapplyRowCount- upper bound on number of rows this filter would be applied to, after removing rows short-circuited by prior bundle operations. For example, given "x AND y", if "x" is resolved using an index, then "y" will receive the number of rows that matched the filter "x". As another example, given "x OR y", if "x" is resolved using an index, then "y" will receive the number of rows that did *not* match the filter "x".totalRowCount- total number of rows to be scanned if no indexes are usedincludeUnknown- mapping for Druid native two state logic system into SQL three-state logic system. If set to true, bitmaps returned by this method should include true bits for any rows where the matching result is 'unknown', such as from the input being null valued.- Returns:
- bitmap result representing rows matched by this index
-