diff --git a/document/src/main/java/com/yahoo/document/ArrayDataType.java b/document/src/main/java/com/yahoo/document/ArrayDataType.java index 05b578f7445..4bb53bf6f77 100644 --- a/document/src/main/java/com/yahoo/document/ArrayDataType.java +++ b/document/src/main/java/com/yahoo/document/ArrayDataType.java @@ -42,7 +42,7 @@ public Class getValueClass() { @Override public FieldPath buildFieldPath(String remainFieldName) { - if (remainFieldName.length() > 0 && remainFieldName.charAt(0) == '[') { + if (!remainFieldName.isEmpty() && remainFieldName.charAt(0) == '[') { int endPos = remainFieldName.indexOf(']'); if (endPos == -1) { throw new IllegalArgumentException("Array subscript must be closed with ]"); diff --git a/document/src/main/java/com/yahoo/document/CollectionDataType.java b/document/src/main/java/com/yahoo/document/CollectionDataType.java index 98be8d4709f..0d328b6ee03 100644 --- a/document/src/main/java/com/yahoo/document/CollectionDataType.java +++ b/document/src/main/java/com/yahoo/document/CollectionDataType.java @@ -46,11 +46,9 @@ public PrimitiveDataType getPrimitiveType() { @Override public boolean isValueCompatible(FieldValue value) { - if (!(value instanceof CollectionFieldValue)) { - return false; - } - CollectionFieldValue cfv = (CollectionFieldValue) value; - return equals(cfv.getDataType()); + if (!(value instanceof CollectionFieldValue collectionValue)) return false; + if (collectionValue.getDataType().getClass() != this.getClass()) return false; + return collectionValue.getDataType().getNestedType().isAssignableTo(this.getNestedType()); } @Override diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/EmbeddingScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/EmbeddingScriptTestCase.java index 72b2ea87386..2ddfcc1670e 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/EmbeddingScriptTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/EmbeddingScriptTestCase.java @@ -360,4 +360,18 @@ public void testArrayEmbedTo2MappedTensor() { sparse2DTensor.getTensor().get()); } + @Test + public void testIt() { + var tester = new EmbeddingScriptTester(Map.of("emb1", new EmbeddingScriptTester.MockMappedEmbedder("myDocument.sections_embeddings"))); + var expression = tester.expressionFrom("input sections | for_each { ( _ || \"\") } | embed emb1 passage | attribute sections_embeddings | index sections_embeddings"); + + SimpleTestAdapter adapter = new SimpleTestAdapter(); + adapter.createField(new Field("sections", new ArrayDataType(DataType.STRING))); + TensorType tensorType = TensorType.fromSpec("tensor(passage{}, token{})"); + var tensorField = new Field("sections_embeddings", new TensorDataType(tensorType)); + adapter.createField(tensorField); + + expression.verify(new VerificationContext(adapter)); + } + } 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 6ed3feb0230..c1c9f505f3a 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java @@ -33,6 +33,7 @@ /** * @author Simon Thoresen Hult + * @author bratseth */ public class ScriptTestCase {