diff options
author | Lester Solbakken <lesters@users.noreply.github.com> | 2020-02-06 10:28:39 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-06 10:28:39 +0100 |
commit | 984d76f7233a680db6f195f1286d216f35f2741c (patch) | |
tree | 047345bf51edd1f255cf6fa1842b8ca996e00fa1 | |
parent | 1dcf7ea5baf95393c28cb83646957d0793def6b8 (diff) | |
parent | ad793a10358dc278733ec770e1bc446107343b90 (diff) |
Merge pull request #12081 from pmanoj133/master
adding testset cond to update
-rw-r--r-- | vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java | 7 | ||||
-rw-r--r-- | vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java | 13 |
2 files changed, 19 insertions, 1 deletions
diff --git a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java index fa463a77923..32cdbf9af5c 100644 --- a/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java +++ b/vespa-hadoop/src/main/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperation.java @@ -69,6 +69,7 @@ public class VespaDocumentOperation extends EvalFunc<String> { private static final String SIMPLE_OBJECT_FIELDS = "simple-object-fields"; private static final String CREATE_TENSOR_FIELDS = "create-tensor-fields"; private static final String EXCLUDE_FIELDS = "exclude-fields"; + private static final String TESTSET_CONDITION = "condition"; private static final String PARTIAL_UPDATE_ASSIGN = "assign"; @@ -162,7 +163,11 @@ public class VespaDocumentOperation extends EvalFunc<String> { if (op == Operation.UPDATE && createIfNonExistent) { writeField("create", true, DataType.BOOLEAN, g, properties, schema, op, 0); } - + String testSetConditionTemplate = properties.getProperty(TESTSET_CONDITION); + if (testSetConditionTemplate != null) { + String testSetCondition = TupleTools.toString(fields, testSetConditionTemplate); + writeField(TESTSET_CONDITION, testSetCondition, DataType.CHARARRAY, g, properties, schema, op, 0); + } if (op != Operation.REMOVE) { writeField("fields", fields, DataType.MAP, g, properties, schema, op, 0); } diff --git a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java index 7d0fe72fc64..3c6805019b8 100644 --- a/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java +++ b/vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java @@ -47,6 +47,19 @@ public class VespaDocumentOperationTest { assertEquals(3, fields.get("value").get("assign").getIntValue()); } + @Test + public void requireThatUDFSupportsConditionalUpdateAssign() throws IOException { + String json = getDocumentOperationJson("docid=id:<application>:metrics::<name>-<date>", "operation=update", "condition=clicks < <value>"); + ObjectMapper m = new ObjectMapper(); + JsonNode root = m.readTree(json); + JsonNode fields = root.path("fields"); + + assertEquals("id:testapp:metrics::clicks-20160112", root.get("update").getTextValue()); + assertEquals("clicks < 3", root.get("condition").getTextValue()); + assertEquals("testapp", fields.get("application").get("assign").getTextValue()); + assertEquals("clicks", fields.get("name").get("assign").getTextValue()); + assertEquals(3, fields.get("value").get("assign").getIntValue()); + } @Test public void requireThatUDFSupportsCreateIfNonExistent() throws IOException { |