Package org.apache.druid.query.filter
Class AbstractOptimizableDimFilter
java.lang.Object
org.apache.druid.query.filter.AbstractOptimizableDimFilter
- Direct Known Subclasses:
AndDimFilter,ArrayContainsElementFilter,BoundDimFilter,ColumnComparisonDimFilter,EqualityFilter,ExpressionDimFilter,ExtractionDimFilter,FalseDimFilter,InDimFilter,IntervalDimFilter,IsBooleanDimFilter,JavaScriptDimFilter,LikeDimFilter,NotDimFilter,NullFilter,OrDimFilter,RangeFilter,RegexDimFilter,SearchQueryDimFilter,SelectorDimFilter,SpatialDimFilter,TrueDimFilter,TypedInFilter
Base class for most
DimFilter.
This abstract class provides a default implementation of toOptimizedFilter(boolean) that uses a memoized
supplier relying on optimize(boolean) and DimFilter.toFilter(). This fulfils the expectation that
toOptimizedFilter(boolean) returns the same instance when called multiple times.-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.druid.query.filter.DimFilter
DimFilter.DimFilterToStringBuilder -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionoptimize(boolean mayIncludeUnknown) Returns an optimized version of this filter.final FiltertoOptimizedFilter(boolean mayIncludeUnknown) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.druid.java.util.common.Cacheable
getCacheKeyMethods inherited from interface org.apache.druid.query.filter.DimFilter
getDimensionRangeSet, getRequiredColumns, toFilter
-
Constructor Details
-
AbstractOptimizableDimFilter
public AbstractOptimizableDimFilter()
-
-
Method Details
-
optimize
Description copied from interface:DimFilterReturns an optimized version of this filter. -
toOptimizedFilter
- Specified by:
toOptimizedFilterin interfaceDimFilter- Parameters:
mayIncludeUnknown- whether the optimized filter may need to operate in "includeUnknown" mode.- Returns:
- Return a Filter that implements this DimFilter, after applying optimizations to this DimFilter.
A typical implementation will return the result of `optimize().toFilter()`
See abstract base class
AbstractOptimizableDimFilterfor a common implementation shared by current DimFilters. The Filter returned by this method across multiple calls must be the same object: parts of the query stack compare Filters, and returning the same object allows these checks to avoid deep comparisons. (seeHashJoinSegmentCursorFactory.makeCursorHolder(CursorBuildSpec)for an example}
-