diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java b/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java index d96f490909e..790b5c4e601 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java @@ -75,8 +75,22 @@ public class GroupingValidator extends Searcher { public void visitExpression(GroupingExpression exp) { if (exp instanceof AttributeValue) { String name = ((AttributeValue)exp).getAttributeName(); - if (!attributeNames.contains(name)) { - throw new UnavailableAttributeException(clusterName, name); + int leftBracePos = name.indexOf('{'); + if (leftBracePos == -1) { + if (!attributeNames.contains(name)) { + throw new UnavailableAttributeException(clusterName, name); + } + } else { + String baseName = name.substring(0, leftBracePos); + String keyName = baseName + ".key"; + if (!attributeNames.contains(keyName)) { + throw new UnavailableAttributeException(clusterName, keyName); + } + int rightBracePos = name.lastIndexOf('}'); + String valueName = baseName + ".value" + name.substring(rightBracePos + 1); + if (!attributeNames.contains(valueName)) { + throw new UnavailableAttributeException(clusterName, valueName); + } } } } |