On 2022/08/22 20:05:22 Martin Grigorov wrote:
> Hi,
>
> I might be wrong but I think your sample schema should be valid! Does it
> fail with any of the SDKs ?

Yes. It fails with the Python avro package.

>
> This part of the spec talks about the namespace, not the type. I.e.
> "namespace": ".ns" would be an error.

The linked thread ( 
https://lists.apache.org/thread/q0o58fxgvstvdlgpoyv2pcz53borp587 )
is a bit vague -- it's not totally clear whether the restriction is meant to 
apply to
namespaces only, or to fullnames also.

"The null namespace may not be used in a dot-separated sequence of names."

certainly makes it sound like it applies to _any_ sequence of names, though,
not just in a namespace field.

>
> On Mon, Aug 22, 2022 at 10:40 PM Brennan Vincent <[email protected]>
> wrote:
>
> > Hello,
> >
> > https://github.com/apache/avro/pull/917 introduced the following language
> > to the spec:
> >
> > > The null namespace may not be used in a dot-separated sequence of names.
> >
> > Thus ruling out fullnames like ".foo".
> >
> > However, this seems to rule out referring to names in the default
> > namespace from another namespace.
> >
> > For example, this schema was previously allowed by the spec:
> >
> > {
> >     "type": "record",
> >     "name": "r",
> >     "fields": [
> >         {
> >             "name": "f",
> >             "type": {
> >                 "type": "record",
> >                 "name": "r2",
> >                 "namespace": "ns",
> >                 "fields": [
> >                     {
> >                         "name": "f2",
> >                         "type": ["null", ".r"]
> >                     }
> >                 ]
> >             }
> >         }
> >     ]
> > }
> >
> > Note ".r" in the type of "f2". This can't be changed to "r",
> > because that would be interpreted as "ns.r" due to "ns" being the nearest
> > enclosing namespace.
> >
> > Thus it seems that the new spec has restricted the set of valid schemas
> > and there is no longer
> > any way to accomplish this.
> >
> > Am I misinterpreting the spec? Does the empty namespace being disallowed
> > in dotted sequences
> > of names only apply to initial name definitions, but not to later name
> > references? Or is there
> > some other way to express this?
> >
> > Here is the initial discussion of this change, where the issue I'm raising
> > here doesn't
> > appear to have come up:
> > https://lists.apache.org/thread/q0o58fxgvstvdlgpoyv2pcz53borp587
> >
> > Thanks,
> >

Reply via email to