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)