Package org.apache.druid.segment.filter
Class ColumnComparisonFilter
- java.lang.Object
-
- org.apache.druid.segment.filter.ColumnComparisonFilter
-
- All Implemented Interfaces:
Filter
public class ColumnComparisonFilter extends Object implements Filter
Compares values between columns, first converting them all to strings. This filter behaves like "not distinct from", e.g. given columns x and y, the SQL equivalent would be "x is not distinct from y" (and so ignoresincludeUnknown).
-
-
Constructor Summary
Constructors Constructor Description ColumnComparisonFilter(List<DimensionSpec> dimensions)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object o)BitmapColumnIndexgetBitmapColumnIndex(ColumnIndexSelector selector)Returns aBitmapColumnIndexif this filter supports using a bitmap index for filtering for the given inputColumnIndexSelector.Set<String>getRequiredColumns()Set of columns used by a filter.inthashCode()ValueMatchermakeMatcher(ColumnSelectorFactory factory)Get aValueMatcherthat applies this filter to row values.static ValueMatchermakeValueMatcher(List<Supplier<String[]>> valueGetters)static booleanoverlap(String[] as, String[] bs)overlap returns true when: as and bs have one or more elements in common, as and bs are both null, or as and bs are both empty.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.druid.query.filter.Filter
canVectorizeMatcher, makeFilterBundle, makeVectorMatcher, rewriteRequiredColumns, supportsRequiredColumnRewrite
-
-
-
-
Constructor Detail
-
ColumnComparisonFilter
public ColumnComparisonFilter(List<DimensionSpec> dimensions)
-
-
Method Detail
-
getBitmapColumnIndex
@Nullable public BitmapColumnIndex getBitmapColumnIndex(ColumnIndexSelector selector)
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
public ValueMatcher makeMatcher(ColumnSelectorFactory factory)
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.
-
makeValueMatcher
public static ValueMatcher makeValueMatcher(List<Supplier<String[]>> valueGetters)
-
overlap
public static boolean overlap(@Nullable String[] as, @Nullable String[] bs)
overlap returns true when: as and bs have one or more elements in common, as and bs are both null, or as and bs are both empty.
-
getRequiredColumns
public Set<String> getRequiredColumns()
Description copied from interface:FilterSet of columns used by a filter.- Specified by:
getRequiredColumnsin interfaceFilter
-
-