Just posted a pull request for an update to the spec doc:

https://github.com/apache/avro/pull/357
On Thu, Oct 25, 2018 at 10:06 AM Doug Cutting <[email protected]> wrote:
>
> This is https://issues.apache.org/jira/browse/AVRO-1340.  Caution, it's a
> long discussion!
>
> In your example, I think you mean that the default is "alpha", not "one".
>
> It looks like 1340 neglected to update the spec.  My mistake for missing
> that in review.
>
> The idea is to permit adding/removing enum symbols.  So this is different
> from field defaults, which deal with adding/removing fields.
>
> Thanks for catching this.
>
> Doug
>
>
>
>
> On Tue, Oct 23, 2018 at 11:34 PM Raymie Stata <[email protected]>
> wrote:
>
> > While working on AVRO-2090, I noticed what is either an implementation
> > bug or a specification bug in schema resolution for enumerations.
> >
> > The relevant code is here: https://bit.ly/2q5tsIp.  This code uses the
> > reader's default symbol, if it exists, in the case where the writer's
> > symbols is missing.
> >
> > Let's think about this through an example.  Let's say the reader
> > defines just two symbols for an enum: "alpha" and "beta", with "one"
> > as the default.  Let's say that the writer had three symbols: "alpha",
> > "beta", and "gamma".  The way https://bit.ly/2q5tsIp is written, if
> > the reader encounters a file containing the symbol "gamma", and error
> > will NOT be thrown.  Instead, the reader will be told that the actual
> > symbol was "alpha".
> >
> > Note that the Avro specification says the following about matching
> > enumerations: "if the writer's symbol is not present in the reader's
> > enum, then an error is signalled."  This would suggest that, in the
> > example just described, an error should be thrown, rather than the
> > value "alpha" returns.  So either the code is wrong, or the spec is
> > wrong.
> >
> > On a related note, the current spec says nothing about a "default"
> > property for enumerations.  When should this property be used?  As a
> > "default default" for fields?  (If so, this isn't happening.)  As a
> > value to be used in resolution, when the writer provides a symbole
> > that is not (any longer) defined?  (If so, this is happening in the
> > code, but the spec needs an update.)  And/or should it be used in
> > other circumstances?
> >
> > I'm willing to update docs and/or code appropriately, but can someone
> > indicated the intended semantics of "default" for enums?
> >
> >   Raymie
> >

Reply via email to