I'm shaky on the details here, but shouldn't humans be using the *.avdl form of specifying schemas?
On Thu, Oct 19, 2017 at 9:18 AM, Doug Cutting <[email protected]> wrote: > On Thu, Oct 19, 2017 at 8:49 AM, Zoltan Ivanfi <[email protected]> wrote: > > > > So then if an older reader reads a schema field with > "default-as-string" > > > used instead of "default", it will decide that field has no default? I > > > don't really like that, but it's better than using the wrong value > (e.g. > > > "default" + "default-parser") > > > > > > I think ignoring the user-specified default value is just as bad using a > > wrong value. I equally consider both breaking changes. > > > > Since defaults are only used for fields not present in the written data, > ignoring a default value means failing to read the data. This seems > reasonable: if the user requires a feature that the runtime they're using > does not yet support, then an error is signalled. > > > > > > > I think that the parsing canonical form of a schema > > > > > <https://avro.apache.org/docs/ > > 1.8.2/spec.html#Parsing+Canonical+Form+for+Schemas> > > > > > doesn't include the default. I think that makes sense because the > > > > > canonical form is what's needed to read encoded data. > > > > That's strange, since according to the specification, the default is used > > when reading instances that lack a value for the field, so I think it is > > needed for reading encoded data. > > > > That depends on what you mean by "reading". A record is first read using > the schema it was written with. Through resolution, it can be subsequently > altered to match various other schemas. Defaults only come into play when > such a schema has a field not in the written schema. > > Parsing Canonical Form indicates whether a schema can be used for that > first, raw, read. There is no single canonical form for all the various > schemas that it can be resolved to. > > Doug >
