[
https://issues.apache.org/jira/browse/AVRO-2176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16503925#comment-16503925
]
Doug Cutting commented on AVRO-2176:
------------------------------------
How are you creating the instance? Defaults are not always used when creating
instances. If you use the builder API then they're used, but otherwise
generally not. The purpose of defaults is primarily for schema evolution, to
provide a value when reading data that does not contain a field with the same
name.
> Avro default values not working
> -------------------------------
>
> Key: AVRO-2176
> URL: https://issues.apache.org/jira/browse/AVRO-2176
> Project: Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.8.1
> Reporter: Vidhi Gavadia
> Priority: Major
>
> We have a field in avro schema like this:
> { "name" : "id", "type" : "int", "default": 0 }
> The expected behavior is that when the field is not supplied, it should have
> the defauly value of 0.
> But we get an exception when we do not provide the value:
> java.lang.NullPointerException: null of int in field id
> at
> org.apache.avro.generic.GenericDatumWriter.npe(GenericDatumWriter.java:132)
> at
> org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:126)
> at
> org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
> at
> org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:60)
> at com.walmart.wfm.parser.AvroEncode.avroEncode(AvroEncode.java:127)
> at com.walmart.wfm.parser.AvroEncode.main(AvroEncode.java:36)
> Caused by: java.lang.NullPointerException
> at
> org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:117)
> at
> org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
> at
> org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:153)
> at
> org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:143)
> at
> org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:105)
> at
> org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
> at
> org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:179)
> at
> org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:107)
> at
> org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
> at
> org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:153)
> at
> org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:143)
> at
> org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:105)
> at
> org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:73)
> at
> org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:153)
> at
> org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:143)
> at
> org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:105)
> ... 4 more
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)