Package org.apache.druid.query.filter
Class EqualityFilter
- java.lang.Object
-
- org.apache.druid.query.filter.AbstractOptimizableDimFilter
-
- org.apache.druid.query.filter.EqualityFilter
-
public class EqualityFilter extends AbstractOptimizableDimFilter implements Filter
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.druid.query.filter.DimFilter
DimFilter.DimFilterToStringBuilder
-
-
Constructor Summary
Constructors Constructor Description EqualityFilter(String column, ColumnType matchValueType, Object matchValue, FilterTuning filterTuning)
-
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
.byte[]
getCacheKey()
Get a byte array used as a cache key.String
getColumn()
com.google.common.collect.RangeSet<String>
getDimensionRangeSet(String dimension)
Returns a RangeSet that represents the possible range of the input dimension for this DimFilter.This is applicable to filters that use dimensions such as select, in, bound, and logical filters such as and, or, not.FilterTuning
getFilterTuning()
Object
getMatchValue()
ColumnType
getMatchValueType()
Set<String>
getRequiredColumns()
Set of columns used by a filter.int
hashCode()
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.DimFilter
optimize()
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.boolean
supportsSelectivityEstimation(ColumnSelector columnSelector, ColumnIndexSelector indexSelector)
Indicates whether this filter supports selectivity estimation.Filter
toFilter()
Returns a Filter that implements this DimFilter.String
toString()
-
Methods inherited from class org.apache.druid.query.filter.AbstractOptimizableDimFilter
toOptimizedFilter
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.druid.query.filter.Filter
estimateSelectivity
-
-
-
-
Constructor Detail
-
EqualityFilter
public EqualityFilter(String column, ColumnType matchValueType, Object matchValue, @Nullable FilterTuning filterTuning)
-
-
Method Detail
-
getCacheKey
public byte[] getCacheKey()
Description copied from interface:Cacheable
Get a byte array used as a cache key.- Specified by:
getCacheKey
in interfaceCacheable
- Returns:
- a cache key
-
optimize
public DimFilter optimize()
-
toFilter
public Filter toFilter()
Description copied from interface:DimFilter
Returns a Filter that implements this DimFilter. This does not generally involve optimizing the DimFilter, so it does make sense to optimize first and then call toFilter on the resulting DimFilter.
-
getColumn
public String getColumn()
-
getMatchValueType
public ColumnType getMatchValueType()
-
getMatchValue
public Object getMatchValue()
-
getFilterTuning
@Nullable public FilterTuning getFilterTuning()
-
getDimensionRangeSet
public com.google.common.collect.RangeSet<String> getDimensionRangeSet(String dimension)
Description copied from interface:DimFilter
Returns a RangeSet that represents the possible range of the input dimension for this DimFilter.This is applicable to filters that use dimensions such as select, in, bound, and logical filters such as and, or, not. Null represents that the range cannot be determined, and will be returned for filters such as javascript and regex where there's no easy way to determine the filtered range. It is treated the same way as an all range in most cases, however there are some subtle difference at logical filters such as not filter, where complement of all is nothing while complement of null is still null.- Specified by:
getDimensionRangeSet
in interfaceDimFilter
- Parameters:
dimension
- name of the dimension to get range for- Returns:
- a RangeSet that represent the possible range of the input dimension, or null if it is not possible to determine for this DimFilter.
-
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.
-
supportsSelectivityEstimation
public boolean supportsSelectivityEstimation(ColumnSelector columnSelector, ColumnIndexSelector indexSelector)
Description copied from interface:Filter
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.- Specified by:
supportsSelectivityEstimation
in interfaceFilter
- 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
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
-
getRequiredColumns
public Set<String> getRequiredColumns()
Description copied from interface:Filter
Set of columns used by a filter.- Specified by:
getRequiredColumns
in interfaceDimFilter
- Specified by:
getRequiredColumns
in interfaceFilter
- Returns:
- a HashSet that represents all columns' name which the DimFilter required to do filter.
-
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
-
-