aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model/src/main/javacc/SchemaParser.jj22
-rw-r--r--document/src/main/java/com/yahoo/document/Document.java6
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentUpdate.java3
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java6
-rw-r--r--searchlib/src/vespa/searchlib/expression/CMakeLists.txt1
-rw-r--r--searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp19
-rw-r--r--searchlib/src/vespa/searchlib/expression/simple_interpolate.cpp25
-rw-r--r--searchlib/src/vespa/searchlib/expression/simple_interpolate.h15
10 files changed, 70 insertions, 31 deletions
diff --git a/config-model/src/main/javacc/SchemaParser.jj b/config-model/src/main/javacc/SchemaParser.jj
index 7d251bd3514..255cc3cde70 100644
--- a/config-model/src/main/javacc/SchemaParser.jj
+++ b/config-model/src/main/javacc/SchemaParser.jj
@@ -2006,14 +2006,27 @@ void inputs(ParsedRankProfile profile) :
{
Reference reference;
TensorType type;
+ List<Reference> seenInputs = new ArrayList<>();
}
{
<INPUTS> <LBRACE> (<NL>)*
- ( input(profile) (<NL>)*) *
+ (
+ reference = input(profile) { seenInputs.add(reference); }
+ (<NL> { seenInputs.add(null); })*
+ )*
<RBRACE>
+ {
+ Reference last = null;
+ for (Reference current : seenInputs) {
+ if (last != null && current != null) {
+ deployLogger.logApplicationPackage(Level.WARNING, "Expected newline between inputs " + last + " and " + current);
+ }
+ last = current;
+ }
+ }
}
-void input(ParsedRankProfile profile) :
+Reference input(ParsedRankProfile profile) :
{
Reference reference;
InputType type = new InputType(TensorType.empty, false);
@@ -2021,7 +2034,10 @@ void input(ParsedRankProfile profile) :
}
{
reference = inputName() ( type = valueType(reference))? ( <COLON> (<NL>)* defaultValue = tensorValue(type.tensorType()) )?
- { profile.addInput(reference, new RankProfile.Input(reference, type, Optional.ofNullable(defaultValue))); }
+ {
+ profile.addInput(reference, new RankProfile.Input(reference, type, Optional.ofNullable(defaultValue)));
+ return reference;
+ }
}
/** Returns the reference "query(name)" for both "query(name)" and "name". */
diff --git a/document/src/main/java/com/yahoo/document/Document.java b/document/src/main/java/com/yahoo/document/Document.java
index 294750f40f3..15a898e76b1 100644
--- a/document/src/main/java/com/yahoo/document/Document.java
+++ b/document/src/main/java/com/yahoo/document/Document.java
@@ -123,8 +123,7 @@ public class Document extends StructuredFieldValue {
}
public int getSerializedSize() throws SerializationException {
- // TODO shouldn't this be createHead()?
- DocumentSerializer data = DocumentSerializerFactory.create6(new GrowableByteBuffer(64 * 1024, 2.0f));
+ DocumentSerializer data = DocumentSerializerFactory.createHead(new GrowableByteBuffer(8 * 1024, 2.0f));
data.write(this);
return data.getBuf().position();
}
@@ -136,8 +135,7 @@ public class Document extends StructuredFieldValue {
public final int getApproxSize() { return 4096; }
public void serialize(OutputStream out) throws SerializationException {
- // TODO shouldn't this be createHead()?
- DocumentSerializer writer = DocumentSerializerFactory.create6(new GrowableByteBuffer(64 * 1024, 2.0f));
+ DocumentSerializer writer = DocumentSerializerFactory.createHead(new GrowableByteBuffer(8 * 1024, 2.0f));
writer.write(this);
GrowableByteBuffer data = writer.getBuf();
byte[] array;
diff --git a/document/src/main/java/com/yahoo/document/DocumentUpdate.java b/document/src/main/java/com/yahoo/document/DocumentUpdate.java
index 26254f3c081..d3063b76feb 100644
--- a/document/src/main/java/com/yahoo/document/DocumentUpdate.java
+++ b/document/src/main/java/com/yahoo/document/DocumentUpdate.java
@@ -347,8 +347,7 @@ public class DocumentUpdate extends DocumentOperation implements Iterable<FieldP
}
public final void serialize(GrowableByteBuffer buf) {
- // TODO shouldn't this be createHead()?!
- serialize(DocumentSerializerFactory.create6(buf));
+ serialize(DocumentSerializerFactory.createHead(buf));
}
public void serialize(DocumentUpdateWriter data) {
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java b/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
index 0e0dc837bdc..beacf5e367d 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
@@ -31,7 +31,7 @@ public class DocumentSerializerFactory {
* This format is an extension of the 4.2 format.
*/
public static DocumentSerializer create6() {
- return new VespaDocumentSerializer6(new GrowableByteBuffer());
+ return new VespaDocumentSerializer6(new GrowableByteBuffer(8 * 1024, 2.0f));
}
}
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
index e14d2fea0a2..17ab3890bcf 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializer6.java
@@ -690,7 +690,7 @@ public class VespaDocumentSerializer6 extends BufferSerializer implements Docume
* @return The size in bytes.
*/
public static long getSerializedSize(Document doc) {
- DocumentSerializer serializer = new VespaDocumentSerializer6(new GrowableByteBuffer());
+ DocumentSerializer serializer = new VespaDocumentSerializer6(new GrowableByteBuffer(8 * 1024, 2.0f));
serializer.write(doc);
return serializer.getBuf().position();
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java
index ef1575e2101..778eaeda5f0 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java
@@ -193,8 +193,8 @@ abstract class RoutableFactories80 {
}
private static ByteBuffer serializeDoc(Document doc) {
- var buf = new GrowableByteBuffer();
- doc.serialize(buf);
+ var buf = new GrowableByteBuffer(8 * 1024, 2.0f);
+ doc.serialize(DocumentSerializerFactory.createHead(buf));
buf.flip();
return buf.getByteBuffer();
}
@@ -233,7 +233,7 @@ abstract class RoutableFactories80 {
}
private static ByteBuffer serializeUpdate(DocumentUpdate update) {
- var buf = new GrowableByteBuffer();
+ var buf = new GrowableByteBuffer(4 * 1024, 2.0f);
update.serialize(DocumentSerializerFactory.createHead(buf));
buf.flip();
return buf.getByteBuffer();
diff --git a/searchlib/src/vespa/searchlib/expression/CMakeLists.txt b/searchlib/src/vespa/searchlib/expression/CMakeLists.txt
index 391cc3b96ef..11c0b478e23 100644
--- a/searchlib/src/vespa/searchlib/expression/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/expression/CMakeLists.txt
@@ -31,6 +31,7 @@ vespa_add_library(searchlib_expression OBJECT
arrayatlookupfunctionnode.cpp
arrayoperationnode.cpp
aggregationrefnode.cpp
+ simple_interpolate.cpp
stringresultnode.cpp
rawresultnode.cpp
floatresultnode.cpp
diff --git a/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp b/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp
index c5a867151fe..fbc69a512d3 100644
--- a/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp
+++ b/searchlib/src/vespa/searchlib/expression/interpolatedlookupfunctionnode.cpp
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "interpolatedlookupfunctionnode.h"
#include "floatresultnode.h"
+#include "simple_interpolate.h"
#include <vespa/searchcommon/attribute/iattributecontext.h>
#include <vespa/searchlib/common/converters.h>
#include <vespa/vespalib/util/stringfmt.h>
@@ -38,22 +39,6 @@ InterpolatedLookup & InterpolatedLookup::operator= (const InterpolatedLookup &rh
namespace {
-double
-simpleInterpolate(const std::vector<double> & v, double lookup) {
- if (v.empty() || lookup < v[0])
- return 0;
- for (size_t i = 1; i < v.size(); ++i) {
- if (lookup < v[i]) {
- double total = v[i] - v[i - 1];
- double above = lookup - v[i - 1];
- double result = i - 1;
- result += (above / total);
- return result;
- }
- }
- return v.size() - 1;
-}
-
class InterpolateHandler : public AttributeNode::Handler {
public:
InterpolateHandler(FloatResultNode & result, const ExpressionNode * lookupExpression) noexcept
@@ -76,7 +61,7 @@ InterpolateHandler::handle(const AttributeResult &r) {
size_t numValues = r.getAttribute()->getValueCount(r.getDocId());
_values.resize(numValues);
r.getAttribute()->get(r.getDocId(), _values.data(), _values.size());
- _result.set(simpleInterpolate(_values, lookup));
+ _result.set(simple_interpolate(_values, lookup));
}
}
diff --git a/searchlib/src/vespa/searchlib/expression/simple_interpolate.cpp b/searchlib/src/vespa/searchlib/expression/simple_interpolate.cpp
new file mode 100644
index 00000000000..a3f8d55dec1
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/expression/simple_interpolate.cpp
@@ -0,0 +1,25 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "simple_interpolate.h"
+
+namespace search::expression {
+
+double
+simple_interpolate(const std::vector<double>& v, double lookup) noexcept
+{
+ if (v.empty() || lookup < v[0]) {
+ return 0;
+ }
+ for (size_t i = 1; i < v.size(); ++i) {
+ if (lookup < v[i]) {
+ double total = v[i] - v[i - 1];
+ double above = lookup - v[i - 1];
+ double result = i - 1;
+ result += (above / total);
+ return result;
+ }
+ }
+ return v.size() - 1;
+}
+
+}
diff --git a/searchlib/src/vespa/searchlib/expression/simple_interpolate.h b/searchlib/src/vespa/searchlib/expression/simple_interpolate.h
new file mode 100644
index 00000000000..92cc29904eb
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/expression/simple_interpolate.h
@@ -0,0 +1,15 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vector>
+
+namespace search::expression {
+
+/*
+ * Perform simple interpolation for interpolatedlookup function
+ * in grouping expression.
+ */
+double simple_interpolate(const std::vector<double>& v, double lookup) noexcept;
+
+}