summaryrefslogtreecommitdiffstats
path: root/indexinglanguage
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-02-07 12:53:34 +0100
committerJon Bratseth <bratseth@gmail.com>2023-02-07 12:53:34 +0100
commitbe5c6d79b1f50147be6273d6081585a57071cbb5 (patch)
tree974bd7749ec403f10db87d2e4c737fdb5195f903 /indexinglanguage
parent3ba555fe6f2abe29ba1057492e12617dcc7e86b1 (diff)
Handle missing values
Diffstat (limited to 'indexinglanguage')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java1
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java17
2 files changed, 13 insertions, 5 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java
index 328cd00742f..9f2260e5b94 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java
@@ -66,6 +66,7 @@ public class EmbedExpression extends Expression {
@Override
protected void doExecute(ExecutionContext context) {
+ if (context.getValue() == null) return;
Tensor output;
if (context.getValue().getDataType() == DataType.STRING) {
output = embedSingleValue(context);
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
index c446c04065a..ce42f4e727f 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
@@ -189,6 +189,8 @@ public class ScriptTestCase {
"input text", "[105, 110, 112, 117]");
testEmbedStatement("input myText | embed 'emb1' | attribute 'myTensor'", embedder,
"input text", "[105, 110, 112, 117]");
+ testEmbedStatement("input myText | embed 'emb1' | attribute 'myTensor'", embedder,
+ null, null);
Map<String, Embedder> embedders = Map.of(
"emb1", new MockEmbedder("myDocument.myTensor"),
@@ -200,9 +202,9 @@ public class ScriptTestCase {
"my input", "[110.0, 122.0, 33.0, 106.0]");
assertThrows(() -> testEmbedStatement("input myText | embed | attribute 'myTensor'", embedders, "input text", "[105, 110, 112, 117]"),
- "Multiple embedders are provided but no embedder id is given. Valid embedders are emb1,emb2");
+ "Multiple embedders are provided but no embedder id is given. Valid embedders are emb1,emb2");
assertThrows(() -> testEmbedStatement("input myText | embed emb3 | attribute 'myTensor'", embedders, "input text", "[105, 110, 112, 117]"),
- "Can't find embedder 'emb3'. Valid embedders are emb1,emb2");
+ "Can't find embedder 'emb3'. Valid embedders are emb1,emb2");
}
private void testEmbedStatement(String expressionString, Map<String, Embedder> embedders, String input, String expected) {
@@ -224,9 +226,14 @@ public class ScriptTestCase {
ExecutionContext context = new ExecutionContext(adapter);
expression.execute(context);
- assertTrue(adapter.values.containsKey("myTensor"));
- assertEquals(Tensor.from(tensorType, expected),
- ((TensorFieldValue) adapter.values.get("myTensor")).getTensor().get());
+ if (input == null) {
+ assertFalse(adapter.values.containsKey("myTensor"));
+ }
+ else {
+ assertTrue(adapter.values.containsKey("myTensor"));
+ assertEquals(Tensor.from(tensorType, expected),
+ ((TensorFieldValue) adapter.values.get("myTensor")).getTensor().get());
+ }
}
catch (ParseException e) {
throw new IllegalArgumentException(e);