diff options
Diffstat (limited to 'document/src/main/java/com')
-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(); + } + } } } } |