Thanks Doug! In this case, I think in this case ResolvingGrammarGenerator
doesn't implement the schema resolution logic according to the spec,
created a Jira for it:

https://issues.apache.org/jira/browse/AVRO-2072

What do you think about Anders comment about to int -> float promotion
on AVRO-1931?
Should Avro allow it at all?

Nandor

On Wed, Aug 30, 2017 at 1:53 AM, Doug Cutting <[email protected]> wrote:

> I'm not sure why both SchemaCompatibility and SchemaValidator exist.  I
> think folks perhaps just didn't realize the former existed when the latter
> was added.
>
> https://issues.apache.org/jira/browse/AVRO-1409
> https://issues.apache.org/jira/browse/AVRO-1315
>
> The latter looks like a probably more efficient implementation, since it
> doesn't compile a parser for each schema validated, but the former shares
> logic with the reading & writing of data, simplifying maintenance.
>
> Doug
>
> On Wed, Aug 23, 2017 at 6:01 AM, Nandor Kollar <[email protected]>
> wrote:
>
> > Hi all,
> >
> > While I was trying to understand how schema evolution works in Avro, I
> > noticed that the schema resolution logic (
> > https://avro.apache.org/docs/1.8.1/spec.html#Schema+Resolution) is
> > implemented in two different places in Avro: in ResolvingGrammarGenerator
> > and in SchemaCompatibility.
> >
> > Could someone please explain the differences between
> > ResolvingGrammarGenerator, SchemaCompatibility, and SchemaValidator? It
> > seems that SchemaValidator is used to check the compatibility between the
> > reader and the writer schema, which sounds exactly what
> SchemaCompatibility
> > does, why does it use ResolvingGrammarGenerator instead of
> > SchemaCompatibility? Why is the same schema resolution logic implemented
> > twice (if I understood correctly)?
> >
> > I also have a question related to unions and schema resolution. In the
> > patch for AVRO-1933 Anders commented out a case for unions: union with an
> > int branch is not compatible with a long union reader. After a brief
> > investigation I noticed, that ResolvingGrammarGenerator#bestBranch
> doesn't
> > allow int -> float promotion in union branches. Is this a bug? Should we
> > allow this promotion at all, since like Anders mentioned in AVRO-1931
> this
> > is a lossy conversion? What do you think?
> >
> > Thanks,
> > Nandor
> >
>

Reply via email to