diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-09-10 11:17:16 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-09-10 11:17:16 +0200 |
commit | 5a85fa0ff10c21e67eac08179898fea874aa8288 (patch) | |
tree | 1aa8403891d69aac609a0d60107ef25f846d0d71 /document/src/main | |
parent | af0574fa2162488f8aaa9aaf359b53fd0a312ab3 (diff) |
Also prune away ClearValue updates if possible.
Diffstat (limited to 'document/src/main')
-rw-r--r-- | document/src/main/java/com/yahoo/document/DocumentUpdate.java | 12 |
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(); + } + } } } } |