summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/javacc/com/yahoo/search/grouping/request/parser/GroupingParser.jj
diff options
context:
space:
mode:
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()); } ) |