summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLester Solbakken <lesters@users.noreply.github.com>2020-02-06 10:28:39 +0100
committerGitHub <noreply@github.com>2020-02-06 10:28:39 +0100
commit984d76f7233a680db6f195f1286d216f35f2741c (patch)
tree047345bf51edd1f255cf6fa1842b8ca996e00fa1
parent1dcf7ea5baf95393c28cb83646957d0793def6b8 (diff)
parentad793a10358dc278733ec770e1bc446107343b90 (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.java7
-rw-r--r--vespa-hadoop/src/test/java/com/yahoo/vespa/hadoop/pig/VespaDocumentOperationTest.java13
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 {