[
https://issues.apache.org/jira/browse/AVRO-2226?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16614851#comment-16614851
]
ASF GitHub Bot commented on AVRO-2226:
--------------------------------------
akellehe opened a new pull request #331: [AVRO-2226] Fixes UnionSchema
specificity
URL: https://github.com/apache/avro/pull/331
Trouble arises in the python library when deducing the appropriate schema
from a list of schemas given a particular datum.
When "null" values are allowed for fields in two separate schemas, there is
no way to differentiate which should schema be used given of a list of schemas
that are set as the type definition for a record.
This PR checks to ensure all fields defined on a given datum are _also_
defined in the schema being validated to use for that datum.
With this bugfix, datums such as `{"foo": "a"}` will not "cast" to schemas
such as `{"name": "bar", "type": ["long", "null"]}`, which is currently the
case.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> UnionSchema deduction is too permissive
> ---------------------------------------
>
> Key: AVRO-2226
> URL: https://issues.apache.org/jira/browse/AVRO-2226
> Project: Avro
> Issue Type: Bug
> Components: python
> Affects Versions: 1.8.2
> Reporter: Andrew Kelleher
> Priority: Major
> Attachments: AVRO-2226.patch
>
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> When given a schema of the form
> {code:java}
> {
> "type" : "record",
> "name" : "A",
> "namespace" : "com.example",
> "fields" : [
> {
> "name" : "foo",
> "type" : ["string", "null"]
> }
> ]
> }
> {
> "type" : "record",
> "name" : "B",
> "namespace" : "com.example",
> "fields" : [
> {
> "name" : "bar",
> "type" : ["string", "null"]
> }
> ]
> }
> {
> "type" : "record",
> "name" : "AOrB",
> "namespace" : "com.example",
> "fields" : [
> {
> "name" : "entity",
> "type" : [
> "com.example.A",
> "com.example.B"
> ]
> }
> ]
> }
> {code}
> And a datum of the form
> {code}
> {'entity': {'foo': 'this is an instance of schema A'}}{code}
> Converting to a message, and then from a message chooses the incorrect
> `entity` schema:
> {code}
> {'entity': {'bar': None}}{code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)