Package org.apache.druid.query.filter
Interface Filter
-
- All Known Subinterfaces:
BooleanFilter
- All Known Implementing Classes:
AndFilter
,BoundFilter
,ColumnComparisonFilter
,DimensionPredicateFilter
,EqualityFilter
,ExpressionFilter
,FalseFilter
,InDimFilter
,IsBooleanFilter
,JavaScriptFilter
,LikeFilter
,NotFilter
,NullFilter
,OrFilter
,RangeFilter
,RegexFilter
,SearchQueryFilter
,SelectorFilter
,SpatialFilter
,TrueFilter
@SubclassesMustOverrideEqualsAndHashCode public interface Filter
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default boolean
canVectorizeMatcher(ColumnInspector inspector)
Returns true if this filter can produce a vectorized matcher from its "makeVectorMatcher" method.default double
estimateSelectivity(ColumnIndexSelector indexSelector)
Estimate selectivity of this filter.BitmapColumnIndex
getBitmapColumnIndex(ColumnIndexSelector selector)
Returns aBitmapColumnIndex
if this filter supports using a bitmap index for filtering for the given inputColumnIndexSelector
.Set<String>
getRequiredColumns()
Set of columns used by a filter.ValueMatcher
makeMatcher(ColumnSelectorFactory factory)
Get aValueMatcher
that applies this filter to row values.default VectorValueMatcher
makeVectorMatcher(VectorColumnSelectorFactory factory)
Get aVectorValueMatcher
that applies this filter to row vectors.default Filter
rewriteRequiredColumns(Map<String,String> columnRewrites)
Return a copy of this filter that is identical to the this filter except that it operates on different columns, based on a renaming map where the key is the column to be renamed in the filter, and the value is the new column name.default boolean
supportsRequiredColumnRewrite()
Returns true is this filter is able to return a copy of this filter that is identical to this filter except that it operates on different columns, based on a renaming map.boolean
supportsSelectivityEstimation(ColumnSelector columnSelector, ColumnIndexSelector indexSelector)
Indicates whether this filter supports selectivity estimation.
-
-
-
Method Detail
-
getBitmapColumnIndex
@Nullable BitmapColumnIndex getBitmapColumnIndex(ColumnIndexSelector selector)
Returns aBitmapColumnIndex
if this filter supports using a bitmap index for filtering for the given inputColumnIndexSelector
. TheBitmapColumnIndex
can be used to compute into a bitmap indicating rows that match this filter resultBitmapColumnIndex.computeBitmapResult(BitmapResultFactory, boolean)
, or examine details about the index prior to computing it, viaBitmapColumnIndex.getIndexCapabilities()
.- Parameters:
selector
- Object used to create BitmapColumnIndex- Returns:
- BitmapColumnIndex that can build ImmutableBitmap of matched row numbers
-
makeMatcher
ValueMatcher makeMatcher(ColumnSelectorFactory factory)
Get aValueMatcher
that applies this filter to row values.- Parameters:
factory
- Object used to create ValueMatchers- Returns:
- ValueMatcher that applies this filter to row values.
-
makeVectorMatcher
default VectorValueMatcher makeVectorMatcher(VectorColumnSelectorFactory factory)
Get aVectorValueMatcher
that applies this filter to row vectors.- Parameters:
factory
- Object used to create ValueMatchers- Returns:
- VectorValueMatcher that applies this filter to row vectors.
-
estimateSelectivity
default double estimateSelectivity(ColumnIndexSelector indexSelector)
Estimate selectivity of this filter. This method can be used for cost-based query planning like inAutoStrategy
. To avoid significant performance degradation for calculating the exact cost, implementation of this method targets to achieve rapid selectivity estimation with reasonable sacrifice of the accuracy. As a result, the estimated selectivity might be different from the exact value.- Parameters:
indexSelector
- Object used to retrieve indexes- Returns:
- an estimated selectivity ranging from 0 (filter selects no rows) to 1 (filter selects all rows).
- See Also:
getBitmapColumnIndex(ColumnIndexSelector)
-
supportsSelectivityEstimation
boolean supportsSelectivityEstimation(ColumnSelector columnSelector, ColumnIndexSelector indexSelector)
Indicates whether this filter supports selectivity estimation. A filter supports selectivity estimation if it supports bitmap index and the dimension which the filter evaluates does not have multi values.- Parameters:
columnSelector
- Object to check the dimension has multi values.indexSelector
- Object used to retrieve bitmap indexes- Returns:
- true if this Filter supports selectivity estimation, false otherwise.
-
canVectorizeMatcher
default boolean canVectorizeMatcher(ColumnInspector inspector)
Returns true if this filter can produce a vectorized matcher from its "makeVectorMatcher" method.- Parameters:
inspector
- Supplies type information for the selectors this filter will match against
-
supportsRequiredColumnRewrite
default boolean supportsRequiredColumnRewrite()
Returns true is this filter is able to return a copy of this filter that is identical to this filter except that it operates on different columns, based on a renaming map.
-
rewriteRequiredColumns
default Filter rewriteRequiredColumns(Map<String,String> columnRewrites)
Return a copy of this filter that is identical to the this filter except that it operates on different columns, based on a renaming map where the key is the column to be renamed in the filter, and the value is the new column name. For example, if I have a filter (A = hello), and I have a renaming map (A -> B), this should return the filter (B = hello)- Parameters:
columnRewrites
- Column rewrite map- Returns:
- Copy of this filter that operates on new columns based on the rewrite map
-
-