You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Platob (via GitHub)" <gi...@apache.org> on 2023/04/20 05:50:22 UTC

[GitHub] [arrow] Platob opened a new issue, #35243: [C#] Implement MapType

Platob opened a new issue, #35243:
URL: https://github.com/apache/arrow/issues/35243

   ### Describe the enhancement requested
   
   Hello,
   
   i started dev on new implementation of MapType, im wondering how it should be built ?
   
   I think is a list of Struct which are like `KeyValuePair` c# class
   
   ```csharp
   using System.Collections.Generic;
   
   namespace Apache.Arrow.Types
   {
       public class MapType : NestedType
       {
           public override ArrowTypeId TypeId => ArrowTypeId.Map;
           public override string Name => "map";
   
           public Field KeyField => Fields[0];
           public Field ValueField => Fields[0];
   
           public IArrowType ValueDataType => Fields[0].DataType;
   
           public MapType(IArrowType keyType, IArrowType valueType, bool nullable)
               : this(new Field("key", keyType, false), new Field("value", keyType, false), nullable)
           {
           }
   
           public MapType(Field keyField, Field valueField, bool nullable)
               : this(new StructType(new List<Field>() { keyField, valueField }), nullable)
           {
           }
   
           public MapType(StructType structType, bool nullable) : this(new ListType(new Field("key_value", structType, nullable)), nullable)
           {
           }
   
           public MapType(ListType listType, bool nullable) : this(new Field("key_values", listType, nullable))
           {
           }
   
           public MapType(Field keyValueField) : base(keyValueField)
           {
           }
   
           public override void Accept(IArrowTypeVisitor visitor) => Accept(this, visitor);
       }
   }
   ```
   
   ### Component(s)
   
   C#


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [arrow] westonpace commented on issue #35243: [C#] Implement MapType

Posted by "westonpace (via GitHub)" <gi...@apache.org>.
westonpace commented on issue #35243:
URL: https://github.com/apache/arrow/issues/35243#issuecomment-1516802780

   Yes, sounds like you have it correct.  Here is the comment from [schema.fbs](https://github.com/apache/arrow/blob/main/format/Schema.fbs#L104):
   
   > /// A Map is a logical nested type that is represented as
   ///
   /// List<entries: 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 "entries", "key", and "value", but this is
   /// not enforced.
   ///
   /// Map
   /// 
   ///   - child[0] entries: Struct
   ///     -- child[0] key: K
   ///     -- child[1] value: V
   /// 
   /// Neither the "entries" 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.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] [C#] Implement MapType [arrow]

Posted by "lidavidm (via GitHub)" <gi...@apache.org>.
lidavidm closed issue #35243: [C#] Implement MapType
URL: https://github.com/apache/arrow/issues/35243


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org