[
https://issues.apache.org/jira/browse/AVRO-2366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17111243#comment-17111243
]
Ryan Skraba commented on AVRO-2366:
-----------------------------------
Hello! This code works:
{code}
Schema schema = new Schema.Parser().setValidateDefaults(false).parse(
"{\"type\": \"record\", \"name\": \"a\"," +
" \"fields\":[ {\"name\": \"name\", \"type\": \"string\", \"default\":
null}]}"
);
{code}
It looks like you would need a configuration option to the maven-avro-plugin to
use the above schema, which was (unfortunately) accepted in Avro 1.8.x. *If
possible*, I strongly recommend fixing the schema to have a valid default
value! It looks like {{setValidateDefaults()}} works as intended, but there's
a discussion at AVRO-2817 to find other use cases that need to parse the faulty
schemas that Java allowed up to this point.
Related: it looks like the upstream gradle-avro-plugin repo that the sample
groovy test case forks has been bumped to Avro 1.9 and has removed the
validateDefault option.
> setValidateDefaults=false does not seem to work
> -----------------------------------------------
>
> Key: AVRO-2366
> URL: https://issues.apache.org/jira/browse/AVRO-2366
> Project: Apache Avro
> Issue Type: Bug
> Affects Versions: 1.9.0
> Reporter: Raman Gupta
> Priority: Major
>
> Followup to AVRO-2035.
> I am testing 1.9 SNAPSHOT. I set `Schema.Parser.setValidateDefaults` to
> false, and still get a failure at compile-time if the default does not match
> the schema. For example, a field definition of:
> {"name": "name", "type": "string", "default": null}
> Should this definition succeed if `setValidateDefaults(false)` is called? If
> not, should the `setValidateDefaults` method just be removed?
> The exception is:
> Caused by: org.apache.avro.AvroTypeException: Invalid default for field name:
> null not a {"type":"string","avro.java.string":"String"}
> at org.apache.avro.Schema.validateDefault(Schema.java:1482)
> at org.apache.avro.Schema.access$300(Schema.java:84)
> at org.apache.avro.Schema$Field.<init>(Schema.java:493)
> at org.apache.avro.Schema$Field.<init>(Schema.java:485)
> at org.apache.avro.Schema$Field.<init>(Schema.java:504)
> at
> org.apache.avro.compiler.specific.SpecificCompiler.addStringType(SpecificCompiler.java:689)
> at
> org.apache.avro.compiler.specific.SpecificCompiler.addStringType(SpecificCompiler.java:668)
> at
> org.apache.avro.compiler.specific.SpecificCompiler.compile(SpecificCompiler.java:598)
> at
> org.apache.avro.compiler.specific.SpecificCompiler.compileToDestination(SpecificCompiler.java:527)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)