Darryl Green created AVRO-2209:

             Summary: Default value type validation over-zealous
                 Key: AVRO-2209
                 URL: https://issues.apache.org/jira/browse/AVRO-2209
             Project: Avro
          Issue Type: Bug
          Components: c++
    Affects Versions: 1.8.2
            Reporter: Darryl Green

>From the Avro specification re default values (and hence JSON encoding in 

|field default values|
||avro type||json type||example||
|record|object|{"a": 1}|
|map|object|{"a": 1}|


Note that float and double have a "json type" of number (while int, long have a 
"json type" of integer. In JSON an integer is a number that is constrained to 
be an integer. There is no way to deduce from a JSON value that has no 
fractional part whether that value is a number or an integer - it is 

I believe that the following schema is, on that basis, valid:

"\{ \"name\":\"test\", \"type\": \"record\", \"fields\": [ {\"name\": 
\"double\",\"type\": \"double\",\"default\" : 2 }]}",

 We have a substantial body of similar schema in use but have not attempted to 
use C++ to resolve them before - and now this is failing.

I can provide a patch/PR that relaxes this rule...



This message was sent by Atlassian JIRA

Reply via email to