Package org.apache.druid.segment.filter
Class AndFilter
java.lang.Object
org.apache.druid.segment.filter.AndFilter
- All Implemented Interfaces:
BooleanFilter,Filter
Logical AND filter operation
-
Field Summary
Fields -
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(BitmapFactory bitmapFactory, List<FilterBundle.Builder> childBuilders) Specialized alternative toFilter.getBitmapColumnIndex(ColumnIndexSelector)to allow reuse any precomputedBitmapColumnIndexcreated as part of aFilterBundle.BuildergetBitmapColumnIndex(ColumnIndexSelector selector) Returns aBitmapColumnIndexif this filter supports using a bitmap index for filtering for the given inputColumnIndexSelector.Returns the child filters for this filter.inthashCode()<T> FilterBundlemakeFilterBundle(FilterBundle.Builder filterBundleBuilder, BitmapResultFactory<T> bitmapResultFactory, int applyRowCount, int totalRowCount, boolean includeUnknown) Compute indexes and build a containerFilterBundleto be used duringCursororVectorCursorcreation, combining the computed outputs ofFilter.getBitmapColumnIndex(ColumnIndexSelector)as well as references toFilter.makeMatcher(ColumnSelectorFactory)andFilter.makeVectorMatcher(VectorColumnSelectorFactory).static ValueMatchermakeMatcher(ValueMatcher[] baseMatchers) makeMatcher(ColumnSelectorFactory factory) Get aValueMatcherthat applies this filter to row values.static VectorValueMatchermakeVectorMatcher(VectorValueMatcher[] baseMatchers) 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.BooleanFilter
getRequiredColumns
-
Field Details
-
AND_JOINER
public static final com.google.common.base.Joiner AND_JOINER
-
-
Constructor Details
-
AndFilter
-
AndFilter
-
-
Method Details
-
makeMatcher
-
makeVectorMatcher
-
makeFilterBundle
public <T> FilterBundle makeFilterBundle(FilterBundle.Builder filterBundleBuilder, BitmapResultFactory<T> bitmapResultFactory, int applyRowCount, int totalRowCount, boolean includeUnknown) Description copied from interface:FilterCompute indexes and build a containerFilterBundleto be used duringCursororVectorCursorcreation, combining the computed outputs ofFilter.getBitmapColumnIndex(ColumnIndexSelector)as well as references toFilter.makeMatcher(ColumnSelectorFactory)andFilter.makeVectorMatcher(VectorColumnSelectorFactory).Filters populating the
FilterBundlecontainer should only set the values which MUST be evaluated by the cursor. If both are set, the cursor will effectively perform a logical AND to combine them. SeeFilterBundlefor additional details.- Specified by:
makeFilterBundlein interfaceFilter- Type Parameters:
T- type ofBitmapResultFactoryresults,ImmutableBitmapby default- Parameters:
filterBundleBuilder- containsBitmapColumnIndexandColumnIndexSelector, and some additional info needed.bitmapResultFactory- wrapper forImmutableBitmapoperations to tie intoQueryMetricsand build the output indexesapplyRowCount- 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 appliedincludeUnknown- 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:
FilterBundlecontaining any indexes and/or matchers that are needed to build a cursor
-
getBitmapColumnIndex
@Nullable public BitmapColumnIndex getBitmapColumnIndex(BitmapFactory bitmapFactory, List<FilterBundle.Builder> childBuilders) Description copied from interface:BooleanFilterSpecialized alternative toFilter.getBitmapColumnIndex(ColumnIndexSelector)to allow reuse any precomputedBitmapColumnIndexcreated as part of aFilterBundle.Builder- Specified by:
getBitmapColumnIndexin interfaceBooleanFilter
-
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
-
getFilters
Description copied from interface:BooleanFilterReturns 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:
getFiltersin interfaceBooleanFilter
-
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()
-