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 <[email protected]>
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 <[email protected]>
Signed-off-by: Micah Kornfield <[email protected]>
---
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;