From be5c6d79b1f50147be6273d6081585a57071cbb5 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Tue, 7 Feb 2023 12:53:34 +0100 Subject: Handle missing values --- .../indexinglanguage/expressions/EmbedExpression.java | 1 + .../yahoo/vespa/indexinglanguage/ScriptTestCase.java | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'indexinglanguage/src') 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 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 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); -- cgit v1.2.3