diff options
-rw-r--r-- | docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java | 12 | ||||
-rw-r--r-- | indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java | 9 |
2 files changed, 14 insertions, 7 deletions
diff --git a/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java b/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java index ed88667a14a..056185e9811 100644 --- a/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java +++ b/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java @@ -80,7 +80,7 @@ public class DocumentScriptTestCase { out = (StringFieldValue)processFieldUpdate(in).getValue(); assertSpanTrees(out, "mySpanTree"); - out = (StringFieldValue)processPathUpdate(in); + out = (StringFieldValue)processPathUpdate(in).getValue(); assertSpanTrees(out, "mySpanTree"); } @@ -97,7 +97,7 @@ public class DocumentScriptTestCase { assertEquals(1, out.size()); assertSpanTrees(out.get(0), "mySpanTree"); - out = (Array<StringFieldValue>)processPathUpdate(in); + out = (Array<StringFieldValue>)processPathUpdate(in).getValue(); assertEquals(1, out.size()); assertSpanTrees(out.get(0), "mySpanTree"); } @@ -115,7 +115,7 @@ public class DocumentScriptTestCase { assertEquals(1, out.size()); assertSpanTrees(out.keySet().iterator().next(), "mySpanTree"); - out = (WeightedSet<StringFieldValue>)processPathUpdate(in); + out = (WeightedSet<StringFieldValue>)processPathUpdate(in).getValue(); assertEquals(1, out.size()); assertSpanTrees(out.keySet().iterator().next(), "mySpanTree"); } @@ -138,7 +138,7 @@ public class DocumentScriptTestCase { assertSpanTrees(out.keySet().iterator().next(), "myKeySpanTree"); assertSpanTrees(out.values().iterator().next(), "myValueSpanTree"); - out = (MapFieldValue<StringFieldValue, StringFieldValue>)processPathUpdate(in); + out = (MapFieldValue<StringFieldValue, StringFieldValue>)processPathUpdate(in).getValue(); assertEquals(1, out.size()); assertSpanTrees(out.keySet().iterator().next(), "myKeySpanTree"); assertSpanTrees(out.values().iterator().next(), "myValueSpanTree"); @@ -235,13 +235,13 @@ public class DocumentScriptTestCase { return update.getFieldUpdate("myField").getValueUpdate(0); } - private static FieldValue processPathUpdate(FieldValue fieldValue) { + private static ValueUpdate<?> processPathUpdate(FieldValue fieldValue) { DocumentType docType = new DocumentType("myDocumentType"); docType.addField("myField", fieldValue.getDataType()); DocumentUpdate update = new DocumentUpdate(docType, "doc:scheme:"); update.addFieldPathUpdate(new AssignFieldPathUpdate(docType, "myField", fieldValue)); update = newScript(docType).execute(ADAPTER_FACTORY, update); - return ((AssignFieldPathUpdate)update.getFieldPathUpdates().get(0)).getFieldValue(); + return update.getFieldUpdate("myField").getValueUpdate(0); } private static DocumentScript newScript(DocumentType docType, String fieldName) { diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java index 038e91b7481..509bdcaa32d 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java @@ -48,7 +48,14 @@ public class SimpleAdapterFactory implements AdapterFactory { DocumentId docId = upd.getId(); Document complete = new Document(docType, upd.getId()); for (FieldPathUpdate fieldUpd : upd) { - ret.add(new IdentityFieldPathUpdateAdapter(fieldUpd, newDocumentAdapter(complete, true))); + if (FieldPathUpdateHelper.isComplete(fieldUpd)) { + // A 'complete' field path update is basically a regular top-level field update + // in wolf's clothing. Convert it to a regular field update to be friendlier + // towards the search core backend. + FieldPathUpdateHelper.applyUpdate(fieldUpd, complete); + } else { + ret.add(new IdentityFieldPathUpdateAdapter(fieldUpd, newDocumentAdapter(complete, true))); + } } for (FieldUpdate fieldUpd : upd.getFieldUpdates()) { Field field = fieldUpd.getField(); |