mirror of https://github.com/apache/druid.git
DimFilterUtils: Exit filterShards early when filter is null. (#16774)
When the filter is null, there is no need to run the converter on all the input objects.
This commit is contained in:
parent
b645d09c5d
commit
8b8ca0d7fc
|
@ -20,6 +20,7 @@
|
|||
package org.apache.druid.query.filter;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.RangeSet;
|
||||
import org.apache.druid.query.planning.DataSourceAnalysis;
|
||||
import org.apache.druid.timeline.partition.ShardSpec;
|
||||
|
@ -116,13 +117,19 @@ public class DimFilterUtils
|
|||
final Map<String, Optional<RangeSet<String>>> dimensionRangeCache
|
||||
)
|
||||
{
|
||||
if (dimFilter == null) {
|
||||
// ImmutableSet retains order from "input".
|
||||
return ImmutableSet.copyOf(input);
|
||||
}
|
||||
|
||||
// LinkedHashSet retains order from "input".
|
||||
Set<T> retSet = new LinkedHashSet<>();
|
||||
|
||||
for (T obj : input) {
|
||||
ShardSpec shard = converter.apply(obj);
|
||||
boolean include = true;
|
||||
|
||||
if (dimFilter != null && shard != null) {
|
||||
if (shard != null) {
|
||||
Map<String, RangeSet<String>> filterDomain = new HashMap<>();
|
||||
List<String> dimensions = shard.getDomainDimensions();
|
||||
for (String dimension : dimensions) {
|
||||
|
|
Loading…
Reference in New Issue