You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2017/07/25 01:54:34 UTC

arrow git commit: ARROW-1246: [Format] Draft Flatbuffer metadata description for Map

Repository: arrow
Updated Branches:
  refs/heads/master 9e692af8b -> 11c92bf28


ARROW-1246: [Format] Draft Flatbuffer metadata description for Map

Author: Wes McKinney <we...@twosigma.com>

Closes #876 from wesm/ARROW-1246 and squashes the following commits:

98790dfc [Wes McKinney] Review feedback to clarify nullability of map components
346b48dd [Wes McKinney] Typo
06ae8ebf [Wes McKinney] Draft Flatbuffer metadata for Map


Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/11c92bf2
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/11c92bf2
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/11c92bf2

Branch: refs/heads/master
Commit: 11c92bf282de5dad5b40f0e483a241876b807ddd
Parents: 9e692af
Author: Wes McKinney <we...@twosigma.com>
Authored: Mon Jul 24 21:54:30 2017 -0400
Committer: Wes McKinney <we...@twosigma.com>
Committed: Mon Jul 24 21:54:30 2017 -0400

----------------------------------------------------------------------
 format/Schema.fbs | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/arrow/blob/11c92bf2/format/Schema.fbs
----------------------------------------------------------------------
diff --git a/format/Schema.fbs b/format/Schema.fbs
index a7e802b..186f8e3 100644
--- a/format/Schema.fbs
+++ b/format/Schema.fbs
@@ -44,6 +44,35 @@ table FixedSizeList {
   listSize: int;
 }
 
+/// A Map is a logical nested type that is represented as
+///
+/// List<entry: Struct<key: K, value: V>>
+///
+/// In this layout, the keys and values are each respectively contiguous. We do
+/// not constrain the key and value types, so the application is responsible
+/// for ensuring that the keys are hashable and unique. Whether the keys are sorted
+/// may be set in the metadata for this field
+///
+/// In a Field with Map type, the Field has a child Struct field, which then
+/// has two children: key type and the second the value type. The names of the
+/// child fields may be respectively "entry", "key", and "value", but this is
+/// not enforced
+///
+/// Map
+///   - child[0] entry: Struct
+///     - child[0] key: K
+///     - child[1] value: V
+///
+/// Neither the "entry" field nor the "key" field may be nullable.
+///
+/// The metadata is structured so that Arrow systems without special handling
+/// for Map can make Map an alias for List. The "layout" attribute for the Map
+/// field must have the same contents as a List.
+table Map {
+  /// Set to true if the keys within each value are sorted
+  keysSorted: bool;
+}
+
 enum UnionMode:short { Sparse, Dense }
 
 /// A union is a complex type with children in Field
@@ -170,7 +199,8 @@ union Type {
   Struct_,
   Union,
   FixedSizeBinary,
-  FixedSizeList
+  FixedSizeList,
+  Map
 }
 
 /// ----------------------------------------------------------------------