You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Nandor Kollar (JIRA)" <ji...@apache.org> on 2018/02/02 15:26:00 UTC
[jira] [Commented] (AVRO-2140) Validation of Union Schemas
[ https://issues.apache.org/jira/browse/AVRO-2140?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16350517#comment-16350517 ]
Nandor Kollar commented on AVRO-2140:
-------------------------------------
I think this behavior is compliant with the specification: {{Default values for union fields correspond to the first schema in the union.}} Changing this would alter the Avro spec, and would require modification in each language binding.
> Validation of Union Schemas
> ---------------------------
>
> Key: AVRO-2140
> URL: https://issues.apache.org/jira/browse/AVRO-2140
> Project: Avro
> Issue Type: Improvement
> Components: java
> Affects Versions: 1.8.2
> Reporter: Marcos Lopez Gonzalez
> Priority: Minor
>
> When validating a union Schema in the method
> {code:java}
> Schema.isValidDefault(Schema schema, JsonNode defaultValue){code}
> for the case of UNION it only validates the first type of the union:
> {code:java}
> case UNION: // union default: first branch
> return isValidDefault(schema.getTypes().get(0), defaultValue);
> {code}
> This leads to some warnings that can create confusion.
> For example, if you have a field like this:
> {code:java}
> {
> "name" : "synonym",
> "type" : [ "null", "boolean" ],
> "default" : false
> }
> {code}
> {{and you assign it false as default you get this warning because it only validates that false is not null:}}
> {code:java}
> [WARNING] Avro: Invalid default for field synonym: false not a ["null","boolean"]{code}
> I think in this cases the validation should check all the types of the union to avoid these warnings.
> I would be happy to create a PR to improve this if you think we should go for it.
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)