summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-04-17 19:22:22 +0200
committerGitHub <noreply@github.com>2023-04-17 19:22:22 +0200
commit0bdbc2db3a6324be13ecac3ffa56018c1467c066 (patch)
treeba0992d046380a95eb6423a527bb72e789b8abf3 /container-search
parented8d16fb6ca6cfae34fc4d399038306e721a07f0 (diff)
parentf88ce30d4598b9b2a96ee0205ad3fb2dbedfcbe0 (diff)
Merge pull request #26758 from vespa-engine/balder/render-raw-in-grouping-as-base64
Render raw values in grouping as base64.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java16
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/GroupIdTestCase.java4
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java4
5 files changed, 20 insertions, 13 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java
index 9576f548f4a..129c6aadee8 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/RawBucketId.java
@@ -2,6 +2,7 @@
package com.yahoo.search.grouping.result;
import java.util.Arrays;
+import java.util.Base64;
/**
* This class is used in {@link Group} instances where the identifying
@@ -18,6 +19,8 @@ public class RawBucketId extends BucketGroupId<byte[]> {
* @param to The identifying exclusive-to raw buffer.
*/
public RawBucketId(byte[] from, byte[] to) {
- super("raw_bucket", from, Arrays.toString(from), to, Arrays.toString(to));
+ super("raw_bucket",
+ from, Base64.getEncoder().withoutPadding().encodeToString(from),
+ to, Base64.getEncoder().withoutPadding().encodeToString(to));
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java b/container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java
index de711d0c218..f160f9b66af 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/RawId.java
@@ -1,7 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.result;
-import java.util.Arrays;
+import java.util.Base64;
/**
* This class is used in {@link Group} instances where the identifying expression evaluated to a {@link Byte} array.
@@ -16,6 +16,6 @@ public class RawId extends ValueGroupId<byte[]> {
* @param value The identifying byte array.
*/
public RawId(byte[] value) {
- super("raw", value, Arrays.toString(value));
+ super("raw", value, Base64.getEncoder().withoutPadding().encodeToString(value));
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
index b36c8788877..003d6e01685 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
@@ -57,7 +57,7 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.util.ArrayDeque;
-import java.util.Arrays;
+import java.util.Base64;
import java.util.Deque;
import java.util.Map;
import java.util.Optional;
@@ -420,9 +420,9 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
}
protected void renderGroupMetadata(GroupId id) throws IOException {
- if (!(id instanceof ValueGroupId || id instanceof BucketGroupId)) return;
+ if (!(id instanceof ValueGroupId<?> || id instanceof BucketGroupId)) return;
- if (id instanceof ValueGroupId valueId) {
+ if (id instanceof ValueGroupId<?> valueId) {
generator.writeStringField(GROUPING_VALUE, getIdValue(valueId));
} else {
BucketGroupId<?> bucketId = (BucketGroupId<?>) id;
@@ -434,15 +434,19 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
}
private static String getIdValue(ValueGroupId<?> id) {
- return (id instanceof RawId ? Arrays.toString(((RawId) id).getValue()) : id.getValue()).toString();
+ return (id instanceof RawId ? id : id.getValue()).toString();
}
private static String getBucketFrom(BucketGroupId<?> id) {
- return (id instanceof RawBucketId ? Arrays.toString(((RawBucketId) id).getFrom()) : id.getFrom()).toString();
+ if (id instanceof RawBucketId rawBucketId)
+ return Base64.getEncoder().withoutPadding().encodeToString(rawBucketId.getFrom());
+ return id.getFrom().toString();
}
private static String getBucketTo(BucketGroupId<?> id) {
- return (id instanceof RawBucketId ? Arrays.toString(((RawBucketId) id).getTo()) : id.getTo()).toString();
+ if (id instanceof RawBucketId rawBucketId)
+ return Base64.getEncoder().withoutPadding().encodeToString(rawBucketId.getTo());
+ return id.getTo().toString();
}
protected void renderTotalHitCount(Hit hit) throws IOException {
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 7b2f0d52742..f986c593fae 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
@@ -47,8 +47,8 @@ public class GroupIdTestCase {
assertEquals("group:long:69", new LongId(69L).toString());
assertEquals("group:long_bucket:6:9", new LongBucketId(6L, 9L).toString());
assertEquals("group:null", new NullId().toString());
- assertEquals("group:raw:[6, 9]", new RawId(new byte[]{6, 9}).toString());
- assertEquals("group:raw_bucket:[6, 9]:[9, 6]", new RawBucketId(new byte[]{6, 9}, new byte[]{9, 6}).toString());
+ assertEquals("group:raw:Bgk", new RawId(new byte[]{6, 9}).toString());
+ assertEquals("group:raw_bucket:Bgk:CQY", new RawBucketId(new byte[]{6, 9}, new byte[]{9, 6}).toString());
assertTrue(new RootId(0).toString().startsWith("group:root:"));
assertEquals("group:string:69", new StringId("69").toString());
assertEquals("group:string_bucket:6:9", new StringBucketId("6", "9").toString());
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java
index 019a022b7e6..28a6b6a2c1d 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/ResultBuilderTestCase.java
@@ -33,12 +33,12 @@ public class ResultBuilderTestCase {
assertGroupId("group:6.9", new FloatResultNode(6.9));
assertGroupId("group:69", new IntegerResultNode(69));
assertGroupId("group:null", new NullResultNode());
- assertGroupId("group:[6, 9]", new RawResultNode(new byte[]{6, 9}));
+ assertGroupId("group:Bgk", new RawResultNode(new byte[]{6, 9}));
assertGroupId("group:a", new StringResultNode("a"));
assertGroupId("group:6.9:9.6", new FloatBucketResultNode(6.9, 9.6));
assertGroupId("group:6:9", new IntegerBucketResultNode(6, 9));
assertGroupId("group:a:b", new StringBucketResultNode("a", "b"));
- assertGroupId("group:[6, 9]:[9, 6]", new RawBucketResultNode(new RawResultNode(new byte[]{6, 9}),
+ assertGroupId("group:Bgk:CQY", new RawBucketResultNode(new RawResultNode(new byte[]{6, 9}),
new RawResultNode(new byte[]{9, 6})));
}