Thanks for the explanation, Oscar. Would you be willing to add some small demo schema to your spec PR? It can serve as an example as well as a simple interop test case.
Thanks again, Michael On Fri, Aug 18, 2023 at 03:17 Oscar Westra van Holthe - Kind < [email protected]> wrote: > On Fri, 18 Aug 2023 at 04:32, Michael A. Smith <[email protected]> > wrote: > > > I found I'm still a little confused at how using aliases to correct > > invalid names should work. Maybe you can define an alias that is an > > invalid name, but having done so, can you use it? I tried this schema > > in both the Python and Java implementations. > > > > Correcting names -- and other projections -- happen during schema > resolution > when reading Avro data. Such a process requires that the write schema is > parsed > without any validation. An exception when parsing the write schema means > the > data becomes unreadable. > > When reading the data, the read schema is first resolved against the write > schema. > One of the things that happen during schema resolution is that the names in > the > write schema are matched against the names and aliases in the read schema. > > This means you won't be using the aliases directly. > > You can test this theory by encoding data as Avro bytes without any header. > You'll > find you can decode the bytes using a different schema that is identical > except for > its names. This works, as these schemata yield the same sequence of bytes. > > Names and aliases in the schemas allow enhancing process to do other nice > things: > - skip written fields that were removed from the read schema > - fill in default values for new fields added to the read schema > - match different type orders in unions > - do some conversions, like reading an int as a long > > > Kind regards, > Oscar > > -- > > ✉️ Oscar Westra van Holthe - Kind <[email protected]> >
