Chelsea Dole created AVRO-2720:
----------------------------------

             Summary: Avro py3 should display invalid field data on 
AvroTypeException
                 Key: AVRO-2720
                 URL: https://issues.apache.org/jira/browse/AVRO-2720
             Project: Apache Avro
          Issue Type: Bug
          Components: python
            Reporter: Chelsea Dole


Calling "Validate"/"write" raises an AvroTypeException when the input "datum" 
does not fit the input "expected_schema". It would be useful for users if 
AvroTypeException specified which fields were not valid representations of the 
expected_schema, by adding additional information to the string printed when 
the error is thrown. 

 

 
{code:java}
writer_schema = schema.parse("""\
     {"type": "record", "name": "Test",
     "fields": [{"name": "F", "type": "int"},
     {"name": "E", "type": "int"}]}""")
 datum_to_write = {'E': 5, 'F': 'Bad'}

 datum_writer = avro_io.DatumWriter(writer_schema)
 datum_writer.write(datum, encoder)
{code}
 

The last line of the above example ^ will throw an AvroTypeException, because 
field "F" isn't an int. If there are multiple fields with incompatible types, 
the message will only show the first field. Once it is fixed, it will throw 
another AvroTypeException with the second incompatible type field, and so on. 

 

*Current AvroTypeException Output:*
{code:java}
avro.io.AvroTypeException: The datum {'E': 5, 'F': 'Bad'} is not an example of 
the schema {
     "type": "record",
     "name": "Test",
     "fields": [{"type": "int", "name": "F"}, {"type": "int", "name": 
"E"}]}{code}
*Suggested AvroTypeException Output:*

 
{code:java}
avro.io.AvroTypeException: Field 'F' with value 'Bad' has an unexpected type. 
The datum {'E': 5, 'F': 'Bad'} is not an example of the schema {
    "type": "record",
    "name": "Test",
    "fields": [{"type": "int", "name": "F"}, {"type": "int", "name": "E"}]}
{code}
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to