@@ -30,6 +30,8 @@ public class RangeMatchDimFilter implements DimensionFilter {
30
30
private Long lowOrdinal ;
31
31
private Long highOrdinal ;
32
32
33
+ private boolean skipRangeCollection = false ;
34
+
33
35
public RangeMatchDimFilter (String dimensionName , Object low , Object high , boolean includeLow , boolean includeHigh ) {
34
36
this .dimensionName = dimensionName ;
35
37
this .low = low ;
@@ -40,6 +42,7 @@ public RangeMatchDimFilter(String dimensionName, Object low, Object high, boolea
40
42
41
43
@ Override
42
44
public void initialiseForSegment (StarTreeValues starTreeValues , SearchContext searchContext ) {
45
+ skipRangeCollection = false ;
43
46
DimensionFilterMapper dimensionFilterMapper = DimensionFilterMapper .Factory .fromMappedFieldType (
44
47
searchContext .mapperService ().fieldType (dimensionName )
45
48
);
@@ -51,6 +54,7 @@ public void initialiseForSegment(StarTreeValues starTreeValues, SearchContext se
51
54
lowOrdinal = lowOrdinalFound .get ();
52
55
} else { // This is only valid for Non-numeric fields.
53
56
lowOrdinal = highOrdinal = Long .MAX_VALUE ;
57
+ skipRangeCollection = true ;
54
58
return ; // High can't be found since nothing >= low exists.
55
59
}
56
60
}
@@ -65,7 +69,7 @@ public void initialiseForSegment(StarTreeValues starTreeValues, SearchContext se
65
69
@ Override
66
70
public void matchStarTreeNodes (StarTreeNode parentNode , StarTreeValues starTreeValues , StarTreeNodeCollector collector )
67
71
throws IOException {
68
- if (parentNode != null ) {
72
+ if (parentNode != null && ! skipRangeCollection ) {
69
73
parentNode .collectChildrenInRange (lowOrdinal , highOrdinal , collector );
70
74
}
71
75
}
0 commit comments