diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-05-03 15:56:00 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-03 17:20:54 +0200 |
commit | 727e7fbd337944386453624d3ec56b8d052e1a57 (patch) | |
tree | edcbe2b6b102307e821a3de58f4eca167f032637 | |
parent | d5a461a371611f4fb2a2dd1972bd4a96dd6b8623 (diff) |
Don't require overriding max() if using predef as grouping expression
15 files changed, 32 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java index a88450c7d1d..ba1d7730e46 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/RequestBuilder.java @@ -16,6 +16,7 @@ import com.yahoo.searchlib.aggregation.Grouping; import com.yahoo.searchlib.aggregation.GroupingLevel; import com.yahoo.searchlib.aggregation.HitsAggregationResult; import com.yahoo.searchlib.expression.ExpressionNode; +import com.yahoo.searchlib.expression.RangeBucketPreDefFunctionNode; import java.util.ArrayList; import java.util.LinkedList; @@ -430,6 +431,10 @@ class RequestBuilder { private int validateSummaryMax(GroupingLevel lvl) { int max = transform.getMax(lvl.getGroupPrototype().getTag()); + if (lvl.getExpression() instanceof RangeBucketPreDefFunctionNode) { + int maxBuckets = ((RangeBucketPreDefFunctionNode) lvl.getExpression()).getBucketList().size() + 1; // +1 for "null" bucket + if (maxBuckets < max || max <= 0) max = maxBuckets; + } if (max <= 0) throw new IllegalInputException( "Cannot return unbounded number of groups when 'grouping.globalMaxGroups' is enabled. " + "Either restrict group count with max() or disable 'grouping.globalMaxGroups'. " + diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java index 5fa086c2ed1..cfcbc435ba5 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/RequestBuilderTestCase.java @@ -780,6 +780,7 @@ public class RequestBuilderTestCase { "all(" + " all(group(a) max(3) each(output(count()) max(5) each(output(summary())))) " + " all(group(b) max(3) each(output(count()) max(5) each(output(summary())))))"); + assertTotalGroupsAndSummaries(3, "all(group(predefined(a,bucket(1,3),bucket(6,9))) each(output(count())))"); } @Test diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java index 03fccc9f893..525f7becd67 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/BoolResultNodeVector.java @@ -24,6 +24,8 @@ public class BoolResultNodeVector extends ResultNodeVector { return add((BoolResultNode)r); } + @Override public int size() { return vector.size(); } + @Override protected int onGetClassId() { return classId; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java index 9c8438aa485..bedfdbaedc0 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatBucketResultNodeVector.java @@ -35,6 +35,8 @@ public class FloatBucketResultNodeVector extends ResultNodeVector { return add((FloatBucketResultNode)r); } + @Override public int size() { return vector.size(); } + public ArrayList<FloatBucketResultNode> getVector() { return vector; } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java index 456b5227b63..1d4b00047dd 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java @@ -31,6 +31,8 @@ public class FloatResultNodeVector extends ResultNodeVector { return this; } + @Override public int size() { return vector.size(); } + public ResultNodeVector add(ResultNode r) { return add((FloatResultNode)r); } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java index 3bf24a6ca01..db73fcd2d8f 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int16ResultNodeVector.java @@ -34,6 +34,8 @@ public class Int16ResultNodeVector extends ResultNodeVector { return add((Int16ResultNode)r); } + @Override public int size() { return vector.size(); } + @Override protected int onGetClassId() { return classId; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java index aa2ca98669b..7230ee00cca 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int32ResultNodeVector.java @@ -35,6 +35,8 @@ public class Int32ResultNodeVector extends ResultNodeVector { return add((Int32ResultNode)r); } + @Override public int size() { return vector.size(); } + @Override protected int onGetClassId() { return classId; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java index 23debefed14..c5a6d720ce3 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/Int8ResultNodeVector.java @@ -35,6 +35,8 @@ public class Int8ResultNodeVector extends ResultNodeVector { return add((Int8ResultNode)r); } + @Override public int size() { return vector.size(); } + @Override protected int onGetClassId() { return classId; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java index 4f92b66d834..33f20b92696 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeVector.java @@ -40,6 +40,8 @@ public class IntegerBucketResultNodeVector extends ResultNodeVector { return add((IntegerBucketResultNode)r); } + @Override public int size() { return vector.size(); } + @Override protected void onSerialize(Serializer buf) { super.onSerialize(buf); diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java index 986ffad8a28..e328b5a7037 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerResultNodeVector.java @@ -35,6 +35,8 @@ public class IntegerResultNodeVector extends ResultNodeVector { return add((IntegerResultNode)r); } + @Override public int size() { return vector.size(); } + @Override protected int onGetClassId() { return classId; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java index 7f9cab91a3a..1b739fe005f 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawBucketResultNodeVector.java @@ -31,6 +31,8 @@ public class RawBucketResultNodeVector extends ResultNodeVector { return add((RawBucketResultNode)r); } + @Override public int size() { return vector.size(); } + public ArrayList<RawBucketResultNode> getVector() { return vector; } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java index 9619dc5e949..bb7e69f5187 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/RawResultNodeVector.java @@ -35,6 +35,8 @@ public class RawResultNodeVector extends ResultNodeVector { return add((RawResultNode)r); } + @Override public int size() { return vector.size(); } + public ArrayList<RawResultNode> getVector() { return vector; } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java index ccbfc50a4e3..05508f3005e 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ResultNodeVector.java @@ -42,4 +42,6 @@ public abstract class ResultNodeVector extends ResultNode { } public abstract ResultNodeVector add(ResultNode r); + + public abstract int size(); } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java index af035c6dc7a..9cfb2085cc0 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringBucketResultNodeVector.java @@ -35,6 +35,8 @@ public class StringBucketResultNodeVector extends ResultNodeVector { return add((StringBucketResultNode)r); } + @Override public int size() { return vector.size(); } + public ArrayList<StringBucketResultNode> getVector() { return vector; } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java index c4b8b3579d7..98273faaf57 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/StringResultNodeVector.java @@ -35,6 +35,8 @@ public class StringResultNodeVector extends ResultNodeVector { return add((StringResultNode)r); } + @Override public int size() { return vector.size(); } + public ArrayList<StringResultNode> getVector() { return vector; } |