[ https://issues.apache.org/jira/browse/AVRO-2278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17100697#comment-17100697 ]
Zoltan Farkas edited comment on AVRO-2278 at 5/6/20, 11:49 AM: --------------------------------------------------------------- [~rskraba] what about controlling this behavior with a System Property? Based on the experience with the field default value validation flag, I would not bother making this configurable... we would need to at least document this in the release notes though. was (Author: zolyfarkas): [~rskraba] what about controlling this behavior with a System Property? Based on the experience with the default validation flag I would not bother making this configurable... we would need to at least document this in the release notes though. > GenericData.Record field getter not correct > ------------------------------------------- > > Key: AVRO-2278 > URL: https://issues.apache.org/jira/browse/AVRO-2278 > Project: Apache Avro > Issue Type: Bug > Components: java > Affects Versions: 1.8.2, 1.9.2 > Reporter: Zoltan Farkas > Assignee: Zoltan Farkas > Priority: Major > > Currently the get field implementation is not correct in GenericData.Record: > at: > https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java#L209 > {code} > @Override public Object get(String key) { > Field field = schema.getField(key); > if (field == null) return null; > return values[field.pos()]; > } > {code} > The method returns null when a field is not present, making it impossible to > distinguish between: > field value = null > and > field does not exist. > A more "correct" implementation would be: > {code} > @Override public Object get(String key) { > Field field = schema.getField(key); > if (field == null) { > throw new IllegalArgumentException("Invalid field " + key); > } > return values[field.pos()]; > } > {code} > this will make the behavior consistent with put which will throw a exception > when setting a non existent field. > when I make this change in my fork, some bugs in unit tests showed up.... -- This message was sent by Atlassian Jira (v8.3.4#803005)