Jeremy Kahn created AVRO-1343:
---------------------------------
Summary: Python: validate too permissive on records with extra
fields
Key: AVRO-1343
URL: https://issues.apache.org/jira/browse/AVRO-1343
Project: Avro
Issue Type: Bug
Components: python
Reporter: Jeremy Kahn
Assignee: Jeremy Kahn
Fix For: 1.7.5
Python's validator silently accepts (generic) records with extra fields and
considers them valid.
For example, {{io.validate}} silently considers that the schema:
{noformat}{"type": "record",
"name": "Test",
"fields": [{"name": "f", "type": "long"}]}
{noformat}
should accept records like:
{noformat}{'f': 5, 'extra_field': "abc"}{noformat}
but this is problematic.
This is *especially* problematic for encoding unions, because internally the
Python serializer uses {{validate}} to find the appropriate schema with which
to encode a given object.
In the current implementation, union schema selection is the *last* schema that
{{validate(schema, obj)}} returns {{True}} for. If {{validate}} isn't picky,
this encoding will frequently guess wrong.
I will attach two patches: one to the tests and one to the {{validate}}
function.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira