Package org.apache.druid.segment.filter
Class OrFilter
- java.lang.Object
-
- org.apache.druid.segment.filter.OrFilter
-
- All Implemented Interfaces:
BooleanFilter
,Filter
public class OrFilter extends Object implements BooleanFilter
Logical OR filter operation
-
-
Field Summary
-
Fields inherited from interface org.apache.druid.query.filter.BooleanFilter
EMPTY_VALUE_MATCHER_ARRAY
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canVectorizeMatcher(ColumnInspector inspector)
Returns true if this filter can produce a vectorized matcher from its "makeVectorMatcher" method.boolean
equals(Object o)
BitmapColumnIndex
getBitmapColumnIndex(ColumnIndexSelector selector)
Returns aBitmapColumnIndex
if this filter supports using a bitmap index for filtering for the given inputColumnIndexSelector
.LinkedHashSet<Filter>
getFilters()
Returns the child filters for this filter.int
hashCode()
ValueMatcher
makeMatcher(ColumnIndexSelector selector, ColumnSelectorFactory columnSelectorFactory, RowOffsetMatcherFactory rowOffsetMatcherFactory)
Get a ValueMatcher that applies this filter to row values.ValueMatcher
makeMatcher(ColumnSelectorFactory factory)
Get aValueMatcher
that applies this filter to row values.VectorValueMatcher
makeVectorMatcher(VectorColumnSelectorFactory factory)
Get aVectorValueMatcher
that applies this filter to row vectors.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.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.String
toString()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.druid.query.filter.BooleanFilter
getRequiredColumns, supportsSelectivityEstimation
-
Methods inherited from interface org.apache.druid.query.filter.Filter
estimateSelectivity
-
-
-
-
Constructor Detail
-
OrFilter
public OrFilter(LinkedHashSet<Filter> filters)
-
-
Method Detail
-
getBitmapColumnIndex
@Nullable public BitmapColumnIndex getBitmapColumnIndex(ColumnIndexSelector selector)
Description copied from interface:Filter
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()
.- Specified by:
getBitmapColumnIndex
in interfaceFilter
- Parameters:
selector
- Object used to create BitmapColumnIndex- Returns:
- BitmapColumnIndex that can build ImmutableBitmap of matched row numbers
-
makeMatcher
public ValueMatcher makeMatcher(ColumnSelectorFactory factory)
Description copied from interface:Filter
Get aValueMatcher
that applies this filter to row values.- Specified by:
makeMatcher
in interfaceFilter
- Parameters:
factory
- Object used to create ValueMatchers- Returns:
- ValueMatcher that applies this filter to row values.
-
makeVectorMatcher
public VectorValueMatcher makeVectorMatcher(VectorColumnSelectorFactory factory)
Description copied from interface:Filter
Get aVectorValueMatcher
that applies this filter to row vectors.- Specified by:
makeVectorMatcher
in interfaceFilter
- Parameters:
factory
- Object used to create ValueMatchers- Returns:
- VectorValueMatcher that applies this filter to row vectors.
-
canVectorizeMatcher
public boolean canVectorizeMatcher(ColumnInspector inspector)
Description copied from interface:Filter
Returns true if this filter can produce a vectorized matcher from its "makeVectorMatcher" method.- Specified by:
canVectorizeMatcher
in interfaceFilter
- Parameters:
inspector
- Supplies type information for the selectors this filter will match against
-
makeMatcher
public ValueMatcher makeMatcher(ColumnIndexSelector selector, ColumnSelectorFactory columnSelectorFactory, RowOffsetMatcherFactory rowOffsetMatcherFactory)
Description copied from interface:BooleanFilter
Get a ValueMatcher that applies this filter to row values. Unlike makeMatcher(ValueMatcherFactory), this method allows the Filter to utilize bitmap indexes. An implementation should either: - return a ValueMatcher that checks row values, using the provided ValueMatcherFactory - or, if possible, get a bitmap index for this filter using the ColumnIndexSelector, and return a ValueMatcher that checks the current row offset, created using the bitmap index.- Specified by:
makeMatcher
in interfaceBooleanFilter
- Parameters:
selector
- Object used to retrieve bitmap indexescolumnSelectorFactory
- Object used to select columns for making ValueMatchersrowOffsetMatcherFactory
- Object used to create RowOffsetMatchers- Returns:
- ValueMatcher that applies this filter
-
getFilters
public LinkedHashSet<Filter> getFilters()
Description copied from interface:BooleanFilter
Returns the child filters for this filter. This is a LinkedHashSet because we don't want duplicates, but the order is also important in some cases (such as when filters are provided in an order that encourages short-circuiting.)- Specified by:
getFilters
in interfaceBooleanFilter
-
supportsRequiredColumnRewrite
public boolean supportsRequiredColumnRewrite()
Description copied from interface:Filter
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.- Specified by:
supportsRequiredColumnRewrite
in interfaceFilter
-
rewriteRequiredColumns
public Filter rewriteRequiredColumns(Map<String,String> columnRewrites)
Description copied from interface:Filter
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)- Specified by:
rewriteRequiredColumns
in interfaceFilter
- Parameters:
columnRewrites
- Column rewrite map- Returns:
- Copy of this filter that operates on new columns based on the rewrite map
-
-