[ https://issues.apache.org/jira/browse/AVRO-2035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16052438#comment-16052438 ]
Doug Cutting commented on AVRO-2035: ------------------------------------ Strings are not valid as the default value for a boolean. The schema parser does not ordinarily validate default values, but this can be enabled if desired. https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/Schema.Parser.html#setValidateDefaults(boolean) > default value for boolean field cannot be a string > -------------------------------------------------- > > Key: AVRO-2035 > URL: https://issues.apache.org/jira/browse/AVRO-2035 > Project: Avro > Issue Type: Bug > Components: java > Affects Versions: 1.8.1 > Reporter: radai rosenblatt > > suppose i have the following schema evolution: > {code} > { > "name": "Bob", > "type": "record", > "fields": [ > {"name": "f1", "type": "int"} > ] > } > {code} > and then: > {code} > { > "name": "Bob", > "type": "record", > "fields": [ > {"name": "f1", "type": "int"}, > {"name": "f2", "type": "boolean", "default": "true"} > ] > } > {code} > the default value for "f2" is specified as the _STRING_ "true" (and not the > literal boolean true). > if this default value is ever accessed (when reading a gen1-serialized object > as a gen2) we get this: > {code} > org.apache.avro.AvroTypeException: Non-boolean default for boolean: "true" > at > org.apache.avro.io.parsing.ResolvingGrammarGenerator.encode(ResolvingGrammarGenerator.java:408) > at > org.apache.avro.io.parsing.ResolvingGrammarGenerator.getBinary(ResolvingGrammarGenerator.java:307) > at > org.apache.avro.io.parsing.ResolvingGrammarGenerator.resolveRecords(ResolvingGrammarGenerator.java:285) > at > org.apache.avro.io.parsing.ResolvingGrammarGenerator.generate(ResolvingGrammarGenerator.java:118) > at > org.apache.avro.io.parsing.ResolvingGrammarGenerator.generate(ResolvingGrammarGenerator.java:50) > at org.apache.avro.io.ResolvingDecoder.resolve(ResolvingDecoder.java:85) > at org.apache.avro.io.ResolvingDecoder.<init>(ResolvingDecoder.java:49) > at > org.apache.avro.io.DecoderFactory.resolvingDecoder(DecoderFactory.java:307) > at > org.apache.avro.generic.GenericDatumReader.getResolver(GenericDatumReader.java:127) > at > org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142) > {code} > yet Schema.parse() passes for this -- This message was sent by Atlassian JIRA (v6.4.14#64029)