summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-03-23 20:30:23 +0100
committerGitHub <noreply@github.com>2022-03-23 20:30:23 +0100
commit73b080b527e303a60a365b2bb95b72dcc2f81f4c (patch)
treee24f76238e11794e82a6fa5dcb29e3aca2a45af1 /container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
parentb07fc575ba690710f6524004848e5fc01b3a3152 (diff)
parent9b505f09092c7df8900da85b9f1d08149466c96d (diff)
Merge pull request #21787 from vespa-engine/bjorncs/grouping-max-infv7.564.19
Bjorncs/grouping max inf
Diffstat (limited to 'container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj')
-rw-r--r--container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj10
1 files changed, 9 insertions, 1 deletions
diff --git a/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj b/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
index 6d4ca1e9841..8d7ad7a3ffd 100644
--- a/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
+++ b/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
@@ -245,6 +245,7 @@ GroupingOperation eachOperation(GroupingOperation parent) :
void operationBody(GroupingOperation parent) :
{
+ ConstantValue<?> maxOperand = null;
String str;
Number num;
GroupingExpression exp;
@@ -255,7 +256,14 @@ void operationBody(GroupingOperation parent) :
( ( <ACCURACY> lbrace() num = number() rbrace() { parent.setAccuracy(num.doubleValue()); } ) |
( <ALIAS> lbrace() str = identifier() comma() exp = exp(parent) rbrace() { parent.putAlias(str, exp); } ) |
( <HINT> lbrace() str = identifier() rbrace() { parent.addHint(str); } ) |
- ( <MAX> lbrace() num = number() rbrace() { parent.setMax(num.intValue()); } ) |
+ ( <MAX> lbrace() ( maxOperand = infinitePositiveValue() | maxOperand = constantValue() ) rbrace()
+ {
+ if (maxOperand instanceof InfiniteValue) {
+ parent.setMax(GroupingOperation.UNLIMITED_MAX);
+ } else {
+ parent.setMax(((Number)maxOperand.getValue()).intValue());
+ }
+ } ) |
( <ORDER> lbrace() lst = expList(parent) rbrace() { parent.addOrderBy(lst); } ) |
( <OUTPUT> lbrace() lst = expList(parent) rbrace() { parent.addOutputs(lst); } ) |
( <PRECISION> lbrace() num = number() rbrace() { parent.setPrecision(num.intValue()); } ) |