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 >general): |field default values| ||avro type||json type||example|| |null|null|null| |boolean|boolean|true| |int,long|integer|1| |float,double|number|1.1| |bytes|string|"\u00FF"| |string|string|"foo"| |record|object|{"a": 1}| |enum|string|"FOO"| |array|array|[1]| |map|object|{"a": 1}| |fixed|string|"\u00ff"| 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 either/both. 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 (v7.6.3#76005)