Package org.apache.druid.segment.index
Interface BitmapColumnIndex
- All Known Implementing Classes:
AllFalseBitmapColumnIndex,AllTrueBitmapColumnIndex,AllUnknownBitmapColumnIndex,DictionaryRangeScanningBitmapIndex,DictionaryScanningBitmapIndex,SimpleBitmapColumnIndex,SimpleImmutableBitmapDelegatingIterableIndex,SimpleImmutableBitmapIndex,SimpleImmutableBitmapIterableIndex,ValueSetIndexes.BaseValueSetIndexesFromIterable
public interface BitmapColumnIndex
Common interface for bitmap indexes for use by
Filter for cursor creation, to
allow fast row skipping during query processing. Ideally implementaitons of this are 'lazy', and not do any real
work until computeBitmapResult(BitmapResultFactory, int, int, boolean) or
computeBitmapResult(BitmapResultFactory, boolean) is called.-
Method Summary
Modifier and TypeMethodDescription<T> TcomputeBitmapResult(BitmapResultFactory<T> bitmapResultFactory, boolean includeUnknown) Compute a bitmap result wrapped with theBitmapResultFactoryrepresenting the rows matched by this index.default <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.
-
Method Details
-
getIndexCapabilities
ColumnIndexCapabilities getIndexCapabilities() -
estimatedComputeCost
int estimatedComputeCost()Returns 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
Compute a bitmap result wrapped with theBitmapResultFactoryrepresenting the rows matched by this index. If building a cursor, usecomputeBitmapResult(BitmapResultFactory, int, int, boolean)instead.- Parameters:
bitmapResultFactory- helper to format theImmutableBitmapin a form ready for consumption by callersincludeUnknown- 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
-
computeBitmapResult
@Nullable default <T> T computeBitmapResult(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.- 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
-