[ 
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)

Reply via email to