summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java
diff options
context:
space:
mode:
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.java18
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);
+ }
}
}
}