summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-01-14 22:36:25 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2019-01-14 22:36:25 +0100
commit32dcc4e448f3d2fe17228ea7ed8968ba4760fb58 (patch)
tree8b5d5b6a785d7ff5b3ee4ad2e297955f74f0670c /container-search
parent86336dc42b3d412abf7eb986fbe2bc9c44ea8e68 (diff)
Also handle the reverse conversion in the GroupingExecutor.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java4
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java3
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java8
4 files changed, 28 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java
new file mode 100644
index 00000000000..fbb59262828
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/BoolId.java
@@ -0,0 +1,13 @@
+// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.grouping.result;
+
+/**
+ * This class is used in {@link Group} instances where the identifying expression evaluated to a {@link Boolean}.
+ *
+ * @author @baldersheim
+ */
+public class BoolId extends ValueGroupId<Boolean> {
+ public BoolId(Boolean value) {
+ super("bool", value);
+ }
+}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java
index bbcead37acc..2402be27b9c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultBuilder.java
@@ -3,6 +3,7 @@ package com.yahoo.search.grouping.vespa;
import com.yahoo.search.grouping.Continuation;
import com.yahoo.search.grouping.GroupingRequest;
+import com.yahoo.search.grouping.result.BoolId;
import com.yahoo.search.grouping.result.DoubleBucketId;
import com.yahoo.search.grouping.result.DoubleId;
import com.yahoo.search.grouping.result.Group;
@@ -30,6 +31,7 @@ import com.yahoo.searchlib.aggregation.MinAggregationResult;
import com.yahoo.searchlib.aggregation.StandardDeviationAggregationResult;
import com.yahoo.searchlib.aggregation.SumAggregationResult;
import com.yahoo.searchlib.aggregation.XorAggregationResult;
+import com.yahoo.searchlib.expression.BoolResultNode;
import com.yahoo.searchlib.expression.ExpressionNode;
import com.yahoo.searchlib.expression.FloatBucketResultNode;
import com.yahoo.searchlib.expression.FloatResultNode;
@@ -212,6 +214,8 @@ class ResultBuilder {
return new DoubleId(res.getFloat());
} else if (res instanceof IntegerResultNode) {
return new LongId(res.getInteger());
+ } else if (res instanceof BoolResultNode) {
+ return new BoolId(((BoolResultNode)res).getValue());
} else if (res instanceof NullResultNode) {
return new NullId();
} else if (res instanceof RawResultNode) {
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java
index 9ca2efb8e07..c2ce29a9e7d 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java
@@ -35,6 +35,9 @@ public class GroupIdTestCase {
rangeId = new StringBucketId("6", "9");
assertEquals("6", rangeId.getFrom());
assertEquals("9", rangeId.getTo());
+
+ valueId = new BoolId(true);
+ assertEquals(true, valueId.getValue());
}
@Test
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
index 657c169720e..6d2c66f34b8 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
@@ -43,6 +43,14 @@ public class HitRendererTestCase {
"<group relevance=\"1.0\">\n" +
"<id type=\"long\">69</id>\n" +
"</group>\n");
+ assertRender(newGroup(new BoolId(true)),
+ "<group relevance=\"1.0\">\n" +
+ "<id type=\"bool\">true</id>\n" +
+ "</group>\n");
+ assertRender(newGroup(new BoolId(false)),
+ "<group relevance=\"1.0\">\n" +
+ "<id type=\"bool\">false</id>\n" +
+ "</group>\n");
assertRender(newGroup(new NullId()),
"<group relevance=\"1.0\">\n" +
"<id type=\"null\"/>\n" +