Class: ArrowFormat::Org::Apache::Arrow::Flatbuf::Map

Inherits:
FlatBuffers::Table
  • Object
show all
Defined in:
lib/arrow-format/org/apache/arrow/flatbuf/map.rb

Overview

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: the key type and the value type. The names of the child fields may be respectively “entries”, “key”, and “value”, but this is not enforced.

Map “‘text

- 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.

Constant Summary collapse

FIELDS =
{
  keys_sorted?: ::FlatBuffers::Field.new(:keys_sorted?, 0, 4, :bool, 0),
}
Data =
define_data_class

Instance Method Summary collapse

Instance Method Details

#keys_sorted?Boolean

Set to true if the keys within each value are sorted

Returns:

  • (Boolean)


47
48
49
50
51
52
# File 'lib/arrow-format/org/apache/arrow/flatbuf/map.rb', line 47

def keys_sorted?
  field_offset = @view.unpack_virtual_offset(4)
  return false if field_offset.zero?

  @view.unpack_bool(field_offset)
end