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;

Reply via email to