Aaron Zinger created AVRO-3130:
----------------------------------

             Summary: Schema.java errors with "No type" when a type object is 
provided instead of text type
                 Key: AVRO-3130
                 URL: https://issues.apache.org/jira/browse/AVRO-3130
             Project: Apache Avro
          Issue Type: Bug
          Components: java
            Reporter: Aaron Zinger


When a schema object is provided inside a union or as an array items type, the 
parser looks for a text value for type, doesn't find it, and throws a confusing 
error message of the form "No type: <thing with a type>".

The error message could be fixed by having GetRequiredText distinguish between 
the key not being present and the value not being text, with the latter 
returning a message like "Value for type must be string".

However, my preferred change would be to handle schema objects in these 
situations--it seems like it'd be compliant with the spec to have {"type": 
"string"} resolve to "string", and it would let schema generation code be a 
little simpler by letting it reuse schemas. This could also address 
https://issues.apache.org/jira/browse/AVRO-1977, I think.

Examples below.

{code:json}
{
    "type": "record",
    "name": "AccountEvent",
    "fields": [
        {"type": 
          ["null",
           { "name": "accountList",
              "type": {
                "type": "array",
                "items": "long"
              }
          }
          ], 
         "name":"NullableLongArray"
       }
    ]
}
{code}

Fails with {code:java}"No type: 
{\"name\":\"accountList\",\"type\":{\"type\":\"array\",\"items\":\"long\"}}"{code}

The error is similar for

{code:json}
{
    "type": "array",
    "name": "FavoriteNumbers",
    "items": {"type":{"type": ["null","long"], "name": "NullableNumber"}}
}
{code}




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

Reply via email to