Class NotFilter
- All Implemented Interfaces:
BooleanUnaryFilter,Filter
This filter inverts the includeUnknown flag to properly ap Druids native two-valued logic (true, false) to
SQL three-valued logic (true, false, unknown). At the top level, this flag is always passed in as 'false', and is
only flipped by this filter. Other logical filters (AndFilter and OrFilter) propagate the value of
includeUnknown to their children.
For example, if the base filter is equality, by default value matchers and indexes only return true for the rows that are equal to the value. When wrapped in a not filter, the not filter indicates that the equality matchers and indexes should also include the null or 'unknown' values as matches, so that inverting the match does not incorrectly include these null values as matches.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanVectorizeMatcher(ColumnInspector inspector) Returns true if this filter can produce a vectorized matcher from its "makeVectorMatcher" method.booleangetBitmapColumnIndex(int numRows, FilterBundle.Builder baseBuilder) Specialized alternative toFilter.getBitmapColumnIndex(ColumnIndexSelector)to allow reuse ofBitmapColumnIndexcreated as part of aFilterBundle.BuildergetBitmapColumnIndex(ColumnIndexSelector selector) Returns aBitmapColumnIndexif this filter supports using a bitmap index for filtering for the given inputColumnIndexSelector.Set of columns used by a filter.inthashCode()makeMatcher(ColumnSelectorFactory factory) Get aValueMatcherthat applies this filter to row values.Get aVectorValueMatcherthat applies this filter to row vectors.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.booleanReturns 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.toString()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.druid.query.filter.Filter
makeFilterBundle
-
Constructor Details
-
NotFilter
-
-
Method Details
-
getBitmapColumnIndex
@Nullable public BitmapColumnIndex getBitmapColumnIndex(int numRows, FilterBundle.Builder baseBuilder) Description copied from interface:BooleanUnaryFilterSpecialized alternative toFilter.getBitmapColumnIndex(ColumnIndexSelector)to allow reuse ofBitmapColumnIndexcreated as part of aFilterBundle.Builder- Specified by:
getBitmapColumnIndexin interfaceBooleanUnaryFilter
-
getBitmapColumnIndex
Description copied from interface:FilterReturns aBitmapColumnIndexif this filter supports using a bitmap index for filtering for the given inputColumnIndexSelector. TheBitmapColumnIndexcan 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:
getBitmapColumnIndexin interfaceFilter- Parameters:
selector- Object used to create BitmapColumnIndex- Returns:
- BitmapColumnIndex that can build ImmutableBitmap of matched row numbers
-
makeMatcher
Description copied from interface:FilterGet aValueMatcherthat applies this filter to row values.- Specified by:
makeMatcherin interfaceFilter- Parameters:
factory- Object used to create ValueMatchers- Returns:
- ValueMatcher that applies this filter to row values.
-
makeVectorMatcher
Description copied from interface:FilterGet aVectorValueMatcherthat applies this filter to row vectors.- Specified by:
makeVectorMatcherin interfaceFilter- Parameters:
factory- Object used to create ValueMatchers- Returns:
- VectorValueMatcher that applies this filter to row vectors.
-
canVectorizeMatcher
Description copied from interface:FilterReturns true if this filter can produce a vectorized matcher from its "makeVectorMatcher" method.- Specified by:
canVectorizeMatcherin interfaceFilter- Parameters:
inspector- Supplies type information for the selectors this filter will match against
-
getRequiredColumns
Description copied from interface:FilterSet of columns used by a filter.- Specified by:
getRequiredColumnsin interfaceFilter
-
supportsRequiredColumnRewrite
public boolean supportsRequiredColumnRewrite()Description copied from interface:FilterReturns 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:
supportsRequiredColumnRewritein interfaceFilter
-
rewriteRequiredColumns
Description copied from interface:FilterReturn 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:
rewriteRequiredColumnsin interfaceFilter- Parameters:
columnRewrites- Column rewrite map- Returns:
- Copy of this filter that operates on new columns based on the rewrite map
-
toString
-
equals
-
hashCode
public int hashCode() -
getBaseFilter
- Specified by:
getBaseFilterin interfaceBooleanUnaryFilter
-