This is an automated email from the ASF dual-hosted git repository. emkornfield pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push: new b990efe ARROW-9308: [Format] Add Feature enum for forward compatibility. b990efe is described below commit b990efe80605d7757aeee2bcc2376ddeb7f7aaf2 Author: Micah Kornfield <emkornfi...@gmail.com> AuthorDate: Thu Jul 2 20:33:45 2020 -0700 ARROW-9308: [Format] Add Feature enum for forward compatibility. Will start a discussion on the mailing list shortly. Closes #7502 from emkornfield/feature_flag Authored-by: Micah Kornfield <emkornfi...@gmail.com> Signed-off-by: Micah Kornfield <emkornfi...@gmail.com> --- format/Schema.fbs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/format/Schema.fbs b/format/Schema.fbs index 2624730..09b0730 100644 --- a/format/Schema.fbs +++ b/format/Schema.fbs @@ -40,6 +40,35 @@ enum MetadataVersion:short { V5, } +/// Represents Arrow Features that might not have full support +/// within implementations. This is intended to be used in +/// two scenarios: +/// 1. A mechanism for readers of Arrow Streams +/// and files to understand that the stream or file makes +/// use of a feature that isn't supported or unknown to +/// the implementation (and therefore can meet the Arrow +/// forward compatibility guarantees). +/// 2. A means of negotiating between a client and server +/// what features a stream is allowed to use. The enums +/// values here are intented to represent higher level +/// features, additional details maybe negotiated +/// with key-value pairs specific to the protocol. +/// +/// Enums added to this list should be assigned power-of-two values +/// to facilitate exchanging and comparing bitmaps for supported +/// features. +enum Feature : long { + /// Needed to make flatbuffers happy. + UNUSED = 0, + /// The stream makes use of multiple full dictionaries with the + /// same ID and assumes clients implement dictionary replacement + /// correctly. + DICTIONARY_REPLACEMENT = 1, + /// The stream makes use of compressed bodies as described + /// in Message.fbs. + COMPRESSED_BODY = 2 +} + /// These are stored in the flatbuffer in the Type union below table Null { @@ -369,6 +398,9 @@ table Schema { fields: [Field]; // User-defined metadata custom_metadata: [ KeyValue ]; + + /// Features used in the stream/file. + features : [ Feature ]; } root_type Schema;