Any of the dependent message types constituting an IPC stream or file
are not interpretable without the Schema message, so the Schema
basically "governs" the other messages. So it is sufficient to examine
the features only once at schema resolution time, and attaching
features to a RecordBatch message is not necessary (and maybe it would
be weird to have the field set only in Schema message types but then
null for other message types). That's perhaps not a completely
persuasive argument about why version and features are not contained
in the same Flatbuffers table.

Another argument I can see is that the version number at the Message
level provides an "escape hatch" for non-forward-compatible
alterations of message types, even at the binary level. Having it at
the Message level also spares applications from having to set the
version in multiple places rather than a single place.

On Fri, Jul 17, 2020 at 4:23 PM Antoine Pitrou <anto...@python.org> wrote:
>
>
> Hello,
>
> A bit too late, I noticed the new "features" field is defined on the
> Schema table, while the "version" field is defined on the Message table.
>  Since both fields have closely related purposes (notify the reader of
> the conventions used in the stream), I'm a bit surprised that they're
> present at different places.  Is there a reason I missed for this
> seeming inconsistency?
>
> Regards
>
> Antoine.

Reply via email to