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
}
/// ----------------------------------------------------------------------