diff --git a/server/src/main/java/org/opensearch/search/startree/StarTreeQueryContext.java b/server/src/main/java/org/opensearch/search/startree/StarTreeQueryContext.java index ca0ab9ce52f6e..78e6f0a12559a 100644 --- a/server/src/main/java/org/opensearch/search/startree/StarTreeQueryContext.java +++ b/server/src/main/java/org/opensearch/search/startree/StarTreeQueryContext.java @@ -172,11 +172,13 @@ private static boolean validateDateHistogramSupport( CompositeDataCubeFieldType compositeIndexFieldInfo, AggregatorFactory aggregatorFactory ) { - if (!(aggregatorFactory instanceof DateHistogramAggregatorFactory dateHistogramAggregatorFactory) + if (!(aggregatorFactory instanceof DateHistogramAggregatorFactory) || aggregatorFactory.getSubFactories().getFactories().length < 1) { return false; } + DateHistogramAggregatorFactory dateHistogramAggregatorFactory = (DateHistogramAggregatorFactory) aggregatorFactory; + // Find the DateDimension in the dimensions list DateDimension starTreeDateDimension = null; for (Dimension dimension : compositeIndexFieldInfo.getDimensions()) { diff --git a/server/src/main/java/org/opensearch/search/startree/StarTreeQueryHelper.java b/server/src/main/java/org/opensearch/search/startree/StarTreeQueryHelper.java index edbccb53853d5..0ace3431fb772 100644 --- a/server/src/main/java/org/opensearch/search/startree/StarTreeQueryHelper.java +++ b/server/src/main/java/org/opensearch/search/startree/StarTreeQueryHelper.java @@ -34,6 +34,7 @@ import java.util.Map; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.stream.Collectors; /** * Helper class for building star-tree query @@ -146,7 +147,7 @@ public static Dimension getMatchingDimensionOrThrow(String dimensionName, List orderedDimensions) { - List matchingDimensions = orderedDimensions.stream().filter(x -> x.getField().equals(dimensionName)).toList(); + List matchingDimensions = orderedDimensions.stream().filter(x -> x.getField().equals(dimensionName)).collect(Collectors.toList()); if (matchingDimensions.size() != 1) { return null; } diff --git a/server/src/main/java/org/opensearch/search/startree/filter/provider/DimensionFilterMapper.java b/server/src/main/java/org/opensearch/search/startree/filter/provider/DimensionFilterMapper.java index 8afdb00864b22..dff9a1fda2153 100644 --- a/server/src/main/java/org/opensearch/search/startree/filter/provider/DimensionFilterMapper.java +++ b/server/src/main/java/org/opensearch/search/startree/filter/provider/DimensionFilterMapper.java @@ -363,13 +363,20 @@ public Optional getMatchingOrdinal( case GTE: return seekStatus == TermsEnum.SeekStatus.END ? Optional.empty() : Optional.of(termsEnum.ord()); case GT: - return switch (seekStatus) { - case END -> Optional.empty(); - case FOUND -> ((termsEnum.ord() + 1) < sortedSetIterator.getValueCount()) - ? Optional.of(termsEnum.ord() + 1) - : Optional.empty(); - case NOT_FOUND -> Optional.of(termsEnum.ord()); - }; + switch (seekStatus) { + case END: + return Optional.empty(); + case FOUND: + if ((termsEnum.ord() + 1) < sortedSetIterator.getValueCount()) { + return Optional.of(termsEnum.ord() + 1); + } else { + return Optional.empty(); + } + case NOT_FOUND: + return Optional.of(termsEnum.ord()); + default: + throw new IllegalStateException("Unexpected value: " + seekStatus); + } case LTE: if (seekStatus == TermsEnum.SeekStatus.NOT_FOUND) { return ((termsEnum.ord() - 1) >= 0) ? Optional.of(termsEnum.ord() - 1) : Optional.empty();