summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-03-21 09:44:22 +0100
committerGitHub <noreply@github.com>2023-03-21 09:44:22 +0100
commit33eeb6ed96722baa0cdc05c8e0d38ed01bacb4ca (patch)
tree143e3d6686155d08f9202654ff174014a8f51a57
parentf54343d798a304c620b42a5cc6aa783ea53cc784 (diff)
parent4e99438d7b334986354999503c689963858d9f30 (diff)
Merge pull request #26506 from vespa-engine/balder/presize-array
Balder/presize array
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java7
-rw-r--r--vespajlib/abi-spec.json1
-rw-r--r--vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java22
6 files changed, 26 insertions, 13 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
index 47982174d4f..a5fe73dfc5d 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
@@ -53,7 +53,7 @@ public class FastHit extends Hit {
* This ensures that values set from code overwrites any value received as
* summary data, and fetching a new summary overrides previous summaries.
*
- * The reason we keep this rather than eagerly decoding into a the field map
+ * The reason we keep this rather than eagerly decoding into a field map
* is to reduce garbage collection and decoding cost, with the assumption
* that most fields passes through the container with no processing most
* of the time.
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java b/container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java
index 30dee0e540e..e56b88c3d3e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/result/FlatteningSearcher.java
@@ -45,8 +45,9 @@ public class FlatteningSearcher extends Searcher {
// If we count the number of unique groups, use that as total hit count.
if (level == 0 && (hit instanceof RootGroup)) {
- if (hit.fields().get("count()") != null)
- result.setTotalHitCount((long)hit.fields().get("count()"));
+ Object countField = hit.getField("count()");
+ if (countField != null)
+ result.setTotalHitCount((long)countField);
}
if (hit instanceof HitGroup) {
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 352a31553e7..44620179c1d 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
@@ -730,7 +730,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
if (wset != null) return wset;
}
if (settings.convertDeep()) {
- var array = new Value.ArrayValue();
+ var array = new Value.ArrayValue(data.entryCount());
for (int i = 0; i < data.entryCount(); i++) {
Inspector obj = data.entry(i);
array.add(deepMaybeConvert(obj));
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java b/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java
index f8fdfb34ca0..06fa3982b18 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/testutil/DocumentSourceSearcher.java
@@ -4,6 +4,7 @@ package com.yahoo.search.searchchain.testutil;
import java.util.Collection;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
import java.util.Map;
import java.util.HashMap;
@@ -145,9 +146,9 @@ public class DocumentSourceSearcher extends Searcher {
copyFieldValuesThatExist(filledHit,hitToFill,fieldsToFill);
} else {
// TODO: remove this block and update fieldsToFill above to throw an exception if no appropriate summary class is found
- for (Map.Entry<String,Object> propertyEntry : filledHit.fields().entrySet()) {
- hitToFill.setField(propertyEntry.getKey(),
- propertyEntry.getValue());
+ for (var iter = filledHit.fieldIterator(); iter.hasNext();) {
+ var propertyEntry = iter.next();
+ hitToFill.setField(propertyEntry.getKey(), propertyEntry.getValue());
}
}
hitToFill.setFilled(summaryClass == null ? DEFAULT_SUMMARY_CLASS : summaryClass);
diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json
index 88872fef8a1..48d519b3a62 100644
--- a/vespajlib/abi-spec.json
+++ b/vespajlib/abi-spec.json
@@ -145,6 +145,7 @@
],
"methods" : [
"public void <init>()",
+ "public void <init>(int)",
"public boolean valid()",
"public com.yahoo.data.access.Type type()",
"public int entryCount()",
diff --git a/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java b/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java
index 2f4c8c59f1d..c4333ee2c29 100644
--- a/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java
+++ b/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java
@@ -1,7 +1,11 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.data.access.simple;
-import com.yahoo.data.access.*;
+import com.yahoo.data.access.ArrayTraverser;
+import com.yahoo.data.access.Inspector;
+import com.yahoo.data.access.ObjectTraverser;
+import com.yahoo.data.access.Type;
+
import java.util.Collections;
import java.util.Map;
import java.util.LinkedHashMap;
@@ -54,7 +58,7 @@ public class Value implements Inspector {
public byte[] asData() { return empty_array; }
}
static public class BoolValue extends Value {
- private boolean value;
+ private final boolean value;
public BoolValue(boolean v) { value = v; }
public boolean valid() { return true; }
public Type type() { return Type.BOOL; }
@@ -62,7 +66,7 @@ public class Value implements Inspector {
public boolean asBool(boolean x) { return value; }
}
static public class LongValue extends Value {
- private long value;
+ private final long value;
public LongValue(long v) { value = v; }
public boolean valid() { return true; }
public Type type() { return Type.LONG; }
@@ -72,7 +76,7 @@ public class Value implements Inspector {
public double asDouble(double x) { return (double)value; }
}
static public class DoubleValue extends Value {
- private double value;
+ private final double value;
public DoubleValue(double v) { value = v; }
public boolean valid() { return true; }
public Type type() { return Type.DOUBLE; }
@@ -129,7 +133,13 @@ public class Value implements Inspector {
public byte[] asData(byte[] x) { return value; }
}
static public class ArrayValue extends Value {
- private List<Inspector> values = new ArrayList<>();
+ private final List<Inspector> values;
+ public ArrayValue() {
+ values = new ArrayList<>();
+ }
+ public ArrayValue(int capacity) {
+ values = new ArrayList<>(capacity);
+ }
public boolean valid() { return true; }
public Type type() { return Type.ARRAY; }
public int entryCount() { return values.size(); }
@@ -169,7 +179,7 @@ public class Value implements Inspector {
}
}
static public class ObjectValue extends Value {
- private Map<java.lang.String,Inspector> values = new LinkedHashMap<>();
+ private final Map<java.lang.String,Inspector> values = new LinkedHashMap<>();
public boolean valid() { return true; }
public Type type() { return Type.OBJECT; }
public int fieldCount() { return values.size(); }