Chanzo Bryan created AVRO-3979:
----------------------------------

             Summary: Python SchemaCompatibility doesn't set location properly 
for type mismatch with writer unions
                 Key: AVRO-3979
                 URL: https://issues.apache.org/jira/browse/AVRO-3979
             Project: Apache Avro
          Issue Type: Bug
          Components: python
    Affects Versions: 1.11.3, 1.12.0, 1.11.4
            Reporter: Chanzo Bryan


When a reader schema has a type mismatch with a writer schema where the writer 
schema type is a union, the location information for the schema compatibility 
is lost in Python. This was fixed in Java as a part of AVRO-3612.

Given a reader record schema with _int_ field {_}a{_}:

 
{code:java}
{
  "type": "record",
  "name": "Record1",
  "fields": [
    {
      "name": "a",
      "type": "int"
    }
  ]
}{code}
 

 

and a writer record schema with an _optional int_ (union of _int_ and 
{_}null{_}) field {_}a{_}:

 
{code:java}
{
  "type": "record",
  "name": "Record1",
  "fields": [
    {
      "name": "a",
      "type": ["null", "int"],
      "default": "null"
    }
  ]
} {code}
 

 

I would expect to get the follow message and location on invoking 
{_}get_compatibility(reader, writer){_}:

 
{code:java}
message:  "reader type: int not compatible with writer type: null"
location: "/fields/0/type/0" {code}

Instead, we currently get:
{code:java}
message:  "reader type: int not compatible with writer type: null"
location: "/" {code}
 

 

losing all location information.
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to