Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public FilteredAggregatorFactory(
public Aggregator factorize(ColumnSelectorFactory columnSelectorFactory)
{
final ValueMatcherFactory valueMatcherFactory = new FilteredAggregatorValueMatcherFactory(columnSelectorFactory);
final ValueMatcher valueMatcher = Filters.convertDimensionFilters(filter).makeMatcher(valueMatcherFactory);
final ValueMatcher valueMatcher = Filters.toFilter(filter).makeMatcher(valueMatcherFactory);
return new FilteredAggregator(
valueMatcher,
delegate.factorize(columnSelectorFactory)
Expand All @@ -71,7 +71,7 @@ public Aggregator factorize(ColumnSelectorFactory columnSelectorFactory)
public BufferAggregator factorizeBuffered(ColumnSelectorFactory columnSelectorFactory)
{
final ValueMatcherFactory valueMatcherFactory = new FilteredAggregatorValueMatcherFactory(columnSelectorFactory);
final ValueMatcher valueMatcher = Filters.convertDimensionFilters(filter).makeMatcher(valueMatcherFactory);
final ValueMatcher valueMatcher = Filters.toFilter(filter).makeMatcher(valueMatcherFactory);
return new FilteredBufferAggregator(
valueMatcher,
delegate.factorizeBuffered(columnSelectorFactory)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import io.druid.query.Druids;
import io.druid.segment.filter.AndFilter;
import io.druid.segment.filter.Filters;

import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -73,6 +75,12 @@ public DimFilter apply(DimFilter input)
})).build();
}

@Override
public Filter toFilter()
{
return new AndFilter(Filters.toFilters(fields));
}

@Override
public boolean equals(Object o)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Preconditions;
import com.metamx.common.StringUtils;
import io.druid.segment.filter.BoundFilter;

import java.nio.ByteBuffer;

Expand Down Expand Up @@ -133,6 +134,12 @@ public DimFilter optimize()
return this;
}

@Override
public Filter toFilter()
{
return new BoundFilter(this);
}

@Override
public boolean equals(Object o)
{
Expand Down
8 changes: 8 additions & 0 deletions processing/src/main/java/io/druid/query/filter/DimFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,12 @@ public interface DimFilter
* returning the same filter can be a straightforward default implementation.
*/
public DimFilter optimize();

/**
* 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.
*
* @return a Filter that implements this DimFilter, or null if this DimFilter is a no-op.
*/
public Filter toFilter();
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import io.druid.query.extraction.ExtractionFn;
import io.druid.query.lookup.LookupExtractionFn;
import io.druid.query.lookup.LookupExtractor;
import io.druid.segment.filter.ExtractionFilter;

import java.nio.ByteBuffer;
import java.util.List;
Expand Down Expand Up @@ -116,6 +117,12 @@ public DimFilter apply(String input)
return this;
}

@Override
public Filter toFilter()
{
return new ExtractionFilter(dimension, value, extractionFn);
}

@Override
public String toString()
{
Expand Down
27 changes: 26 additions & 1 deletion processing/src/main/java/io/druid/query/filter/InDimFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,13 @@

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.metamx.common.StringUtils;
import io.druid.segment.filter.OrFilter;
import io.druid.segment.filter.SelectorFilter;

import java.nio.ByteBuffer;
import java.util.Collections;
Expand Down Expand Up @@ -70,7 +75,7 @@ public byte[] getCacheKey()
.put(DimFilterCacheHelper.IN_CACHE_ID)
.put(dimensionBytes)
.put(DimFilterCacheHelper.STRING_SEPARATOR);
for (byte [] bytes: valuesBytes) {
for (byte[] bytes : valuesBytes) {
filterCacheKey.put(bytes)
.put((byte) 0xFF);
}
Expand All @@ -83,6 +88,26 @@ public DimFilter optimize()
return this;
}

@Override
public Filter toFilter()
{
final List<Filter> selectorFilters = ImmutableList.copyOf(
Iterables.transform(
values,
new Function<String, Filter>()
{
@Override
public Filter apply(String input)
{
return new SelectorFilter(dimension, input);
}
}
)
);

return new OrFilter(selectorFilters);
}

@Override
public int hashCode()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Preconditions;
import com.metamx.common.StringUtils;
import io.druid.segment.filter.JavaScriptFilter;

import java.nio.ByteBuffer;

Expand Down Expand Up @@ -75,6 +76,12 @@ public DimFilter optimize()
return this;
}

@Override
public Filter toFilter()
{
return new JavaScriptFilter(dimension, function);
}

@Override
public String toString()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,10 @@ public DimFilter optimize()
{
return this;
}

@Override
public Filter toFilter()
{
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Preconditions;
import io.druid.query.Druids;
import io.druid.segment.filter.NotFilter;

import java.nio.ByteBuffer;

Expand Down Expand Up @@ -61,6 +62,12 @@ public DimFilter optimize()
return Druids.newNotDimFilterBuilder().field(this.getField().optimize()).build();
}

@Override
public Filter toFilter()
{
return new NotFilter(field.toFilter());
}

@Override
public boolean equals(Object o)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import io.druid.query.Druids;
import io.druid.segment.filter.Filters;
import io.druid.segment.filter.OrFilter;

import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -73,6 +75,12 @@ public DimFilter apply(DimFilter input)
})).build();
}

@Override
public Filter toFilter()
{
return new OrFilter(Filters.toFilters(fields));
}

@Override
public boolean equals(Object o)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Preconditions;
import com.metamx.common.StringUtils;
import io.druid.segment.filter.RegexFilter;

import java.nio.ByteBuffer;

Expand Down Expand Up @@ -77,6 +78,12 @@ public DimFilter optimize()
return this;
}

@Override
public Filter toFilter()
{
return new RegexFilter(dimension, pattern);
}

@Override
public String toString()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.google.common.base.Preconditions;
import com.metamx.common.StringUtils;
import io.druid.query.search.search.SearchQuerySpec;
import io.druid.segment.filter.SearchQueryFilter;

import java.nio.ByteBuffer;

Expand Down Expand Up @@ -77,6 +78,12 @@ public DimFilter optimize()
return this;
}

@Override
public Filter toFilter()
{
return new SearchQueryFilter(dimension, query);
}

@Override
public String toString()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Preconditions;
import com.metamx.common.StringUtils;
import io.druid.segment.filter.SelectorFilter;

import java.nio.ByteBuffer;

Expand Down Expand Up @@ -65,6 +66,12 @@ public DimFilter optimize()
return this;
}

@Override
public Filter toFilter()
{
return new SelectorFilter(dimension, value);
}

@JsonProperty
public String getDimension()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.google.common.base.Preconditions;
import com.metamx.collections.spatial.search.Bound;
import com.metamx.common.StringUtils;
import io.druid.segment.filter.SpatialFilter;

import java.nio.ByteBuffer;

Expand Down Expand Up @@ -78,6 +79,12 @@ public Bound getBound()
return bound;
}

@Override
public Filter toFilter()
{
return new SpatialFilter(dimension, bound);
}

@Override
public boolean equals(Object o)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public Sequence<Row> process(final GroupByQuery query, final StorageAdapter stor
}

final Sequence<Cursor> cursors = storageAdapter.makeCursors(
Filters.convertDimensionFilters(query.getDimFilter()),
Filters.toFilter(query.getDimFilter()),
intervals.get(0),
query.getGranularity(),
false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public Sequence<Result<SearchResultValue>> run(
}

final SearchQuery query = (SearchQuery) input;
final Filter filter = Filters.convertDimensionFilters(query.getDimensionsFilter());
final Filter filter = Filters.toFilter(query.getDimensionsFilter());
final List<DimensionSpec> dimensions = query.getDimensions();
final SearchQuerySpec searchQuerySpec = query.getQuery();
final int limit = query.getLimit();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public Sequence<Result<SelectResultValue>> process(final SelectQuery query, fina
return QueryRunnerHelper.makeCursorBasedQuery(
adapter,
query.getQuerySegmentSpec().getIntervals(),
Filters.convertDimensionFilters(query.getDimensionsFilter()),
Filters.toFilter(query.getDimensionsFilter()),
query.isDescending(),
query.getGranularity(),
new Function<Cursor, Result<SelectResultValue>>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public Sequence<Result<TimeseriesResultValue>> process(final TimeseriesQuery que
return QueryRunnerHelper.makeCursorBasedQuery(
adapter,
query.getQuerySegmentSpec().getIntervals(),
Filters.convertDimensionFilters(query.getDimensionsFilter()),
Filters.toFilter(query.getDimensionsFilter()),
query.isDescending(),
query.getGranularity(),
new Function<Cursor, Result<TimeseriesResultValue>>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public Sequence<Result<TopNResultValue>> query(final TopNQuery query, final Stor
}

final List<Interval> queryIntervals = query.getQuerySegmentSpec().getIntervals();
final Filter filter = Filters.convertDimensionFilters(query.getDimensionsFilter());
final Filter filter = Filters.toFilter(query.getDimensionsFilter());
final QueryGranularity granularity = query.getGranularity();
final Function<Cursor, Result<TopNResultValue>> mapFn = getMapFn(query, adapter);

Expand Down
Loading