|
29 | 29 | require_relative "org/apache/arrow/flatbuf/int" |
30 | 30 | require_relative "org/apache/arrow/flatbuf/large_binary" |
31 | 31 | require_relative "org/apache/arrow/flatbuf/list" |
| 32 | +require_relative "org/apache/arrow/flatbuf/map" |
32 | 33 | require_relative "org/apache/arrow/flatbuf/message" |
33 | 34 | require_relative "org/apache/arrow/flatbuf/null" |
34 | 35 | require_relative "org/apache/arrow/flatbuf/precision" |
@@ -163,14 +164,16 @@ def read_field(fb_field) |
163 | 164 | when Org::Apache::Arrow::Flatbuf::Struct |
164 | 165 | children = fb_field.children.collect {|child| read_field(child)} |
165 | 166 | type = StructType.new(children) |
| 167 | + when Org::Apache::Arrow::Flatbuf::Map |
| 168 | + type = MapType.new(read_field(fb_field.children[0])) |
166 | 169 | when Org::Apache::Arrow::Flatbuf::Binary |
167 | 170 | type = BinaryType.singleton |
168 | 171 | when Org::Apache::Arrow::Flatbuf::LargeBinary |
169 | 172 | type = LargeBinaryType.singleton |
170 | 173 | when Org::Apache::Arrow::Flatbuf::Utf8 |
171 | 174 | type = UTF8Type.singleton |
172 | 175 | end |
173 | | - Field.new(fb_field.name, type) |
| 176 | + Field.new(fb_field.name, type, fb_field.nullable?) |
174 | 177 | end |
175 | 178 |
|
176 | 179 | def read_schema(fb_schema) |
@@ -199,7 +202,7 @@ def read_column(field, nodes, buffers, body) |
199 | 202 | values_buffer = buffers.shift |
200 | 203 | values = body.slice(values_buffer.offset, values_buffer.length) |
201 | 204 | field.type.build_array(length, validity, values) |
202 | | - when ListType |
| 205 | + when VariableSizeListType |
203 | 206 | offsets_buffer = buffers.shift |
204 | 207 | offsets = body.slice(offsets_buffer.offset, offsets_buffer.length) |
205 | 208 | child = read_column(field.type.child, nodes, buffers, body) |
|
0 commit comments