1
0

[HUDI-2042] Compare the field object directly in OverwriteWithLatestAvroPayload (#3108)

This commit is contained in:
Shawy Geng
2021-08-11 05:48:53 +08:00
committed by GitHub
parent abbc8328e6
commit d1b4aa59bf
3 changed files with 13 additions and 4 deletions

View File

@@ -18,12 +18,12 @@
package org.apache.hudi.common.model;
import org.apache.hudi.common.util.Option;
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.generic.IndexedRecord;
import org.apache.hudi.common.util.Option;
import java.io.IOException;
import java.util.List;
@@ -63,6 +63,7 @@ public class OverwriteNonDefaultsWithLatestAvroPayload extends OverwriteWithLate
List<Schema.Field> fields = schema.getFields();
fields.forEach(field -> {
Object value = insertRecord.get(field.name());
value = field.schema().getType().equals(Schema.Type.STRING) && value != null ? value.toString() : value;
Object defaultValue = field.defaultVal();
if (!overwriteField(value, defaultValue)) {
currentRecord.put(field.name(), value);

View File

@@ -94,6 +94,6 @@ public class OverwriteWithLatestAvroPayload extends BaseAvroPayload
* Return true if value equals defaultValue otherwise false.
*/
public Boolean overwriteField(Object value, Object defaultValue) {
return defaultValue == null ? value == null : defaultValue.toString().equals(String.valueOf(value));
return defaultValue == null ? value == null : defaultValue.equals(value);
}
}