I think the spec is OK with it.  We've even used it in the Java API
(to refer to a table had been created but had no columns yet).  It's
not *extremely* useful even as a starting point to add schema
evolutions, but maybe as a technique for forcing different Parsing
Canonical Forms for otherwise identical schemas?  The no-field record
wouldn't be stripped, but still serializes down to zero binary bytes.

We actually ran into the following problem: how many records (of size
zero) can you decode from an empty stream of bytes?   If I remember
correctly, the Java API will happily read zero-byte records forever,
so if you're going to use this technique, make sure you have a
stopping condition!

Ryan

On Fri, Dec 13, 2019 at 4:02 PM Vance Duncan <dunca...@gmail.com> wrote:
>
> My immediate thought is observe the YAGNI principle and only create it if and 
> when you need it. Otherwise, you run the risk of requiring 
> non-interchangeable re-identification if you need required, non-default, 
> fields when the need materializes.
>
>
>
> On December 13, 2019, at 9:25 AM, roger peppe <rogpe...@gmail.com> wrote:
>
>
> Hi,
>
> The specification doesn't seem to make it entirely clear whether it's 
> allowable for a record to contain no fields (a zero-length array for the 
> fields member). I've found at least one implementation that complains about a 
> record with an empty fields array, and I'm wondering if this is a bug.
>
> A record containing no fields is actually quite useful as it can act as a 
> placeholder for a record with any number of extra fields in future evolutions 
> of a schema.
>
> What do you think?
>
>   cheers,
>     rog.

Reply via email to