summaryrefslogtreecommitdiffstats
path: root/document/src/main/java/com
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-09-10 11:17:16 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-09-10 11:17:16 +0200
commit5a85fa0ff10c21e67eac08179898fea874aa8288 (patch)
tree1aa8403891d69aac609a0d60107ef25f846d0d71 /document/src/main/java/com
parentaf0574fa2162488f8aaa9aaf359b53fd0a312ab3 (diff)
Also prune away ClearValue updates if possible.
Diffstat (limited to 'document/src/main/java/com')
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentUpdate.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/document/src/main/java/com/yahoo/document/DocumentUpdate.java b/document/src/main/java/com/yahoo/document/DocumentUpdate.java
index 3374714e3a7..ad93942c1c0 100644
--- a/document/src/main/java/com/yahoo/document/DocumentUpdate.java
+++ b/document/src/main/java/com/yahoo/document/DocumentUpdate.java
@@ -7,6 +7,7 @@ import com.yahoo.document.serialization.DocumentSerializerFactory;
import com.yahoo.document.serialization.DocumentUpdateReader;
import com.yahoo.document.serialization.DocumentUpdateWriter;
import com.yahoo.document.update.AssignValueUpdate;
+import com.yahoo.document.update.ClearValueUpdate;
import com.yahoo.document.update.FieldUpdate;
import com.yahoo.document.update.ValueUpdate;
import com.yahoo.io.GrowableByteBuffer;
@@ -140,6 +141,17 @@ public class DocumentUpdate extends DocumentOperation implements Iterable<FieldP
if ((currentValue != null) && currentValue.equals(last.getValue())) {
iter.remove();
}
+ } else if (last instanceof ClearValueUpdate) {
+ FieldValue currentValue = doc.getFieldValue(update.getField());
+ if (currentValue == null) {
+ iter.remove();
+ } else {
+ FieldValue copy = currentValue.clone();
+ copy.clear();
+ if (currentValue.equals(copy)) {
+ iter.remove();
+ }
+ }
}
}
}