red-arrow-format 23.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +26 -0
- data/LICENSE.txt +202 -0
- data/NOTICE.txt +2 -0
- data/README.md +61 -0
- data/Rakefile +67 -0
- data/lib/arrow-format/array.rb +476 -0
- data/lib/arrow-format/bitmap.rb +44 -0
- data/lib/arrow-format/error.rb +34 -0
- data/lib/arrow-format/field.rb +33 -0
- data/lib/arrow-format/file-reader.rb +213 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/binary.rb +21 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/binary_view.rb +27 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/block.rb +38 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/body_compression.rb +47 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/body_compression_method.rb +31 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/bool.rb +20 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/buffer.rb +38 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/compression_type.rb +22 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/date.rb +36 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/date_unit.rb +22 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/decimal.rb +48 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/dictionary_batch.rb +50 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/dictionary_encoding.rb +64 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/dictionary_kind.rb +26 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/duration.rb +30 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/endianness.rb +24 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/feature.rb +46 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/field.rb +92 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/field_node.rb +43 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/fixed_size_binary.rb +27 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/fixed_size_list.rb +27 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/floating_point.rb +30 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/footer.rb +74 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/int.rb +33 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/interval.rb +30 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/interval_unit.rb +23 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/key_value.rb +36 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/large_binary.rb +22 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/large_list.rb +22 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/large_list_view.rb +22 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/large_utf8.rb +22 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/list.rb +20 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/list_view.rb +23 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/map.rb +52 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/message.rb +68 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/message_header.rb +39 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/metadata_version.rb +36 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/null.rb +21 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/precision.rb +23 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/record_batch.rb +93 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/run_end_encoded.rb +25 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/schema.rb +68 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_matrix_compressed_axis.rb +22 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_matrix_index_csx.rb +96 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor.rb +92 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index.rb +29 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_coo.rb +93 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_csf.rb +129 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/struct_.rb +23 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/tensor.rb +74 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/tensor_dim.rb +38 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/time.rb +51 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/time_unit.rb +24 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/timestamp.rb +152 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/type.rb +55 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/union.rb +44 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/union_mode.rb +22 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/utf8.rb +21 -0
- data/lib/arrow-format/org/apache/arrow/flatbuf/utf8view.rb +27 -0
- data/lib/arrow-format/readable.rb +271 -0
- data/lib/arrow-format/record-batch.rb +36 -0
- data/lib/arrow-format/schema.rb +24 -0
- data/lib/arrow-format/streaming-pull-reader.rb +243 -0
- data/lib/arrow-format/streaming-reader.rb +50 -0
- data/lib/arrow-format/type.rb +704 -0
- data/lib/arrow-format/version.rb +26 -0
- data/lib/arrow-format.rb +20 -0
- data/red-arrow-format.gemspec +57 -0
- metadata +137 -0
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
# or more contributor license agreements. See the NOTICE file
|
|
2
|
+
# distributed with this work for additional information
|
|
3
|
+
# regarding copyright ownership. The ASF licenses this file
|
|
4
|
+
# to you under the Apache License, Version 2.0 (the
|
|
5
|
+
# "License"); you may not use this file except in compliance
|
|
6
|
+
# with the License. You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing,
|
|
11
|
+
# software distributed under the License is distributed on an
|
|
12
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
13
|
+
# KIND, either express or implied. See the License for the
|
|
14
|
+
# specific language governing permissions and limitations
|
|
15
|
+
# under the License.
|
|
16
|
+
|
|
17
|
+
module ArrowFormat
|
|
18
|
+
class Type
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class NullType < Type
|
|
22
|
+
class << self
|
|
23
|
+
def singleton
|
|
24
|
+
@singleton ||= new
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def name
|
|
29
|
+
"Null"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def build_array(size)
|
|
33
|
+
NullArray.new(self, size)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class BooleanType < Type
|
|
38
|
+
class << self
|
|
39
|
+
def singleton
|
|
40
|
+
@singleton ||= new
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def name
|
|
45
|
+
"Boolean"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
49
|
+
BooleanArray.new(self, size, validity_buffer, values_buffer)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
class NumberType < Type
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
class IntType < NumberType
|
|
57
|
+
attr_reader :bit_width
|
|
58
|
+
attr_reader :signed
|
|
59
|
+
def initialize(bit_width, signed)
|
|
60
|
+
super()
|
|
61
|
+
@bit_width = bit_width
|
|
62
|
+
@signed = signed
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
class Int8Type < IntType
|
|
67
|
+
class << self
|
|
68
|
+
def singleton
|
|
69
|
+
@singleton ||= new
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def initialize
|
|
74
|
+
super(8, true)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def name
|
|
78
|
+
"Int8"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def buffer_type
|
|
82
|
+
:S8
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
86
|
+
Int8Array.new(self, size, validity_buffer, values_buffer)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
class UInt8Type < IntType
|
|
91
|
+
class << self
|
|
92
|
+
def singleton
|
|
93
|
+
@singleton ||= new
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def initialize
|
|
98
|
+
super(8, false)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def name
|
|
102
|
+
"UInt8"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def buffer_type
|
|
106
|
+
:U8
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
110
|
+
UInt8Array.new(self, size, validity_buffer, values_buffer)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
class Int16Type < IntType
|
|
115
|
+
class << self
|
|
116
|
+
def singleton
|
|
117
|
+
@singleton ||= new
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def initialize
|
|
122
|
+
super(16, true)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def name
|
|
126
|
+
"Int16"
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def buffer_type
|
|
130
|
+
:s16
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
134
|
+
Int16Array.new(self, size, validity_buffer, values_buffer)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
class UInt16Type < IntType
|
|
139
|
+
class << self
|
|
140
|
+
def singleton
|
|
141
|
+
@singleton ||= new
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def initialize
|
|
146
|
+
super(16, false)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def name
|
|
150
|
+
"UInt16"
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def buffer_type
|
|
154
|
+
:u16
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
158
|
+
UInt16Array.new(self, size, validity_buffer, values_buffer)
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
class Int32Type < IntType
|
|
163
|
+
class << self
|
|
164
|
+
def singleton
|
|
165
|
+
@singleton ||= new
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def initialize
|
|
170
|
+
super(32, true)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def name
|
|
174
|
+
"Int32"
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def buffer_type
|
|
178
|
+
:s32
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
182
|
+
Int32Array.new(self, size, validity_buffer, values_buffer)
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
class UInt32Type < IntType
|
|
187
|
+
class << self
|
|
188
|
+
def singleton
|
|
189
|
+
@singleton ||= new
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def initialize
|
|
194
|
+
super(32, false)
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def name
|
|
198
|
+
"UInt32"
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def buffer_type
|
|
202
|
+
:u32
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
206
|
+
UInt32Array.new(self, size, validity_buffer, values_buffer)
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
class Int64Type < IntType
|
|
211
|
+
class << self
|
|
212
|
+
def singleton
|
|
213
|
+
@singleton ||= new
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def initialize
|
|
218
|
+
super(64, true)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def name
|
|
222
|
+
"Int64"
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def buffer_type
|
|
226
|
+
:s64
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
230
|
+
Int64Array.new(self, size, validity_buffer, values_buffer)
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
class UInt64Type < IntType
|
|
235
|
+
class << self
|
|
236
|
+
def singleton
|
|
237
|
+
@singleton ||= new
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def initialize
|
|
242
|
+
super(64, false)
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
def name
|
|
246
|
+
"UInt64"
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
def buffer_type
|
|
250
|
+
:u64
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
254
|
+
UInt64Array.new(self, size, validity_buffer, values_buffer)
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
class FloatingPointType < NumberType
|
|
259
|
+
attr_reader :precision
|
|
260
|
+
def initialize(precision)
|
|
261
|
+
super()
|
|
262
|
+
@precision = precision
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
class Float32Type < FloatingPointType
|
|
267
|
+
class << self
|
|
268
|
+
def singleton
|
|
269
|
+
@singleton ||= new
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
def initialize
|
|
274
|
+
super(:single)
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def name
|
|
278
|
+
"Float32"
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
282
|
+
Float32Array.new(self, size, validity_buffer, values_buffer)
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
class Float64Type < FloatingPointType
|
|
287
|
+
class << self
|
|
288
|
+
def singleton
|
|
289
|
+
@singleton ||= new
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
def initialize
|
|
294
|
+
super(:double)
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
def name
|
|
298
|
+
"Float64"
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
302
|
+
Float64Array.new(self, size, validity_buffer, values_buffer)
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
class TemporalType < Type
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
class DateType < TemporalType
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
class Date32Type < DateType
|
|
313
|
+
class << self
|
|
314
|
+
def singleton
|
|
315
|
+
@singleton ||= new
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
def name
|
|
320
|
+
"Date32"
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
324
|
+
Date32Array.new(self, size, validity_buffer, values_buffer)
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
class Date64Type < DateType
|
|
329
|
+
class << self
|
|
330
|
+
def singleton
|
|
331
|
+
@singleton ||= new
|
|
332
|
+
end
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def name
|
|
336
|
+
"Date64"
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
340
|
+
Date64Array.new(self, size, validity_buffer, values_buffer)
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
class TimeType < TemporalType
|
|
345
|
+
attr_reader :unit
|
|
346
|
+
def initialize(unit)
|
|
347
|
+
super()
|
|
348
|
+
@unit = unit
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
class Time32Type < TimeType
|
|
353
|
+
def name
|
|
354
|
+
"Time32"
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
358
|
+
Time32Array.new(self, size, validity_buffer, values_buffer)
|
|
359
|
+
end
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
class Time64Type < TimeType
|
|
363
|
+
def name
|
|
364
|
+
"Time64"
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
368
|
+
Time64Array.new(self, size, validity_buffer, values_buffer)
|
|
369
|
+
end
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
class TimestampType < TemporalType
|
|
373
|
+
attr_reader :unit
|
|
374
|
+
attr_reader :timezone
|
|
375
|
+
def initialize(unit, timezone)
|
|
376
|
+
super()
|
|
377
|
+
@unit = unit
|
|
378
|
+
@timezone = timezone
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
def name
|
|
382
|
+
"Timestamp"
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
386
|
+
TimestampArray.new(self, size, validity_buffer, values_buffer)
|
|
387
|
+
end
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
class IntervalType < TemporalType
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
class YearMonthIntervalType < IntervalType
|
|
394
|
+
def name
|
|
395
|
+
"YearMonthInterval"
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
399
|
+
YearMonthIntervalArray.new(self, size, validity_buffer, values_buffer)
|
|
400
|
+
end
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
class DayTimeIntervalType < IntervalType
|
|
404
|
+
def name
|
|
405
|
+
"DayTimeInterval"
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
409
|
+
DayTimeIntervalArray.new(self, size, validity_buffer, values_buffer)
|
|
410
|
+
end
|
|
411
|
+
end
|
|
412
|
+
|
|
413
|
+
class MonthDayNanoIntervalType < IntervalType
|
|
414
|
+
def name
|
|
415
|
+
"MonthDayNanoInterval"
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
419
|
+
MonthDayNanoIntervalArray.new(self,
|
|
420
|
+
size,
|
|
421
|
+
validity_buffer,
|
|
422
|
+
values_buffer)
|
|
423
|
+
end
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
class DurationType < TemporalType
|
|
427
|
+
attr_reader :unit
|
|
428
|
+
def initialize(unit)
|
|
429
|
+
super()
|
|
430
|
+
@unit = unit
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
def name
|
|
434
|
+
"Duration"
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
438
|
+
DurationArray.new(self, size, validity_buffer, values_buffer)
|
|
439
|
+
end
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
class VariableSizeBinaryType < Type
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
class BinaryType < VariableSizeBinaryType
|
|
446
|
+
class << self
|
|
447
|
+
def singleton
|
|
448
|
+
@singleton ||= new
|
|
449
|
+
end
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
def name
|
|
453
|
+
"Binary"
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
def build_array(size, validity_buffer, offsets_buffer, values_buffer)
|
|
457
|
+
BinaryArray.new(self, size, validity_buffer, offsets_buffer, values_buffer)
|
|
458
|
+
end
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
class LargeBinaryType < VariableSizeBinaryType
|
|
462
|
+
class << self
|
|
463
|
+
def singleton
|
|
464
|
+
@singleton ||= new
|
|
465
|
+
end
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
def name
|
|
469
|
+
"LargeBinary"
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
def build_array(size, validity_buffer, offsets_buffer, values_buffer)
|
|
473
|
+
LargeBinaryArray.new(self,
|
|
474
|
+
size,
|
|
475
|
+
validity_buffer,
|
|
476
|
+
offsets_buffer,
|
|
477
|
+
values_buffer)
|
|
478
|
+
end
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
class UTF8Type < VariableSizeBinaryType
|
|
482
|
+
class << self
|
|
483
|
+
def singleton
|
|
484
|
+
@singleton ||= new
|
|
485
|
+
end
|
|
486
|
+
end
|
|
487
|
+
|
|
488
|
+
def name
|
|
489
|
+
"UTF8"
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
def build_array(size, validity_buffer, offsets_buffer, values_buffer)
|
|
493
|
+
UTF8Array.new(self, size, validity_buffer, offsets_buffer, values_buffer)
|
|
494
|
+
end
|
|
495
|
+
end
|
|
496
|
+
|
|
497
|
+
class LargeUTF8Type < VariableSizeBinaryType
|
|
498
|
+
class << self
|
|
499
|
+
def singleton
|
|
500
|
+
@singleton ||= new
|
|
501
|
+
end
|
|
502
|
+
end
|
|
503
|
+
|
|
504
|
+
def name
|
|
505
|
+
"LargeUTF8"
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
def build_array(size, validity_buffer, offsets_buffer, values_buffer)
|
|
509
|
+
LargeUTF8Array.new(self,
|
|
510
|
+
size,
|
|
511
|
+
validity_buffer,
|
|
512
|
+
offsets_buffer,
|
|
513
|
+
values_buffer)
|
|
514
|
+
end
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
class FixedSizeBinaryType < Type
|
|
518
|
+
attr_reader :byte_width
|
|
519
|
+
def initialize(byte_width)
|
|
520
|
+
super()
|
|
521
|
+
@byte_width = byte_width
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
def name
|
|
525
|
+
"FixedSizeBinary"
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
529
|
+
FixedSizeBinaryArray.new(self, size, validity_buffer, values_buffer)
|
|
530
|
+
end
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
class DecimalType < FixedSizeBinaryType
|
|
534
|
+
attr_reader :precision
|
|
535
|
+
attr_reader :scale
|
|
536
|
+
def initialize(byte_width, precision, scale)
|
|
537
|
+
super(byte_width)
|
|
538
|
+
@precision = precision
|
|
539
|
+
@scale = scale
|
|
540
|
+
end
|
|
541
|
+
end
|
|
542
|
+
|
|
543
|
+
class Decimal128Type < DecimalType
|
|
544
|
+
def initialize(precision, scale)
|
|
545
|
+
super(16, precision, scale)
|
|
546
|
+
end
|
|
547
|
+
|
|
548
|
+
def name
|
|
549
|
+
"Decimal128"
|
|
550
|
+
end
|
|
551
|
+
|
|
552
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
553
|
+
Decimal128Array.new(self, size, validity_buffer, values_buffer)
|
|
554
|
+
end
|
|
555
|
+
end
|
|
556
|
+
|
|
557
|
+
class Decimal256Type < DecimalType
|
|
558
|
+
def initialize(precision, scale)
|
|
559
|
+
super(32, precision, scale)
|
|
560
|
+
end
|
|
561
|
+
|
|
562
|
+
def name
|
|
563
|
+
"Decimal256"
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
def build_array(size, validity_buffer, values_buffer)
|
|
567
|
+
Decimal256Array.new(self, size, validity_buffer, values_buffer)
|
|
568
|
+
end
|
|
569
|
+
end
|
|
570
|
+
|
|
571
|
+
class VariableSizeListType < Type
|
|
572
|
+
attr_reader :child
|
|
573
|
+
def initialize(child)
|
|
574
|
+
super()
|
|
575
|
+
@child = child
|
|
576
|
+
end
|
|
577
|
+
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
class ListType < VariableSizeListType
|
|
581
|
+
def name
|
|
582
|
+
"List"
|
|
583
|
+
end
|
|
584
|
+
|
|
585
|
+
def build_array(size, validity_buffer, offsets_buffer, child)
|
|
586
|
+
ListArray.new(self, size, validity_buffer, offsets_buffer, child)
|
|
587
|
+
end
|
|
588
|
+
end
|
|
589
|
+
|
|
590
|
+
class LargeListType < VariableSizeListType
|
|
591
|
+
def name
|
|
592
|
+
"LargeList"
|
|
593
|
+
end
|
|
594
|
+
|
|
595
|
+
def build_array(size, validity_buffer, offsets_buffer, child)
|
|
596
|
+
LargeListArray.new(self, size, validity_buffer, offsets_buffer, child)
|
|
597
|
+
end
|
|
598
|
+
end
|
|
599
|
+
|
|
600
|
+
class StructType < Type
|
|
601
|
+
attr_reader :children
|
|
602
|
+
def initialize(children)
|
|
603
|
+
super()
|
|
604
|
+
@children = children
|
|
605
|
+
end
|
|
606
|
+
|
|
607
|
+
def name
|
|
608
|
+
"Struct"
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
def build_array(size, validity_buffer, children)
|
|
612
|
+
StructArray.new(self, size, validity_buffer, children)
|
|
613
|
+
end
|
|
614
|
+
end
|
|
615
|
+
|
|
616
|
+
class MapType < VariableSizeListType
|
|
617
|
+
def initialize(child)
|
|
618
|
+
if child.nullable?
|
|
619
|
+
raise TypeError.new("Map entry field must not be nullable: " +
|
|
620
|
+
child.inspect)
|
|
621
|
+
end
|
|
622
|
+
type = child.type
|
|
623
|
+
unless type.is_a?(StructType)
|
|
624
|
+
raise TypeError.new("Map entry type must be struct: #{type.inspect}")
|
|
625
|
+
end
|
|
626
|
+
unless type.children.size == 2
|
|
627
|
+
raise TypeError.new("Map entry struct type must have 2 children: " +
|
|
628
|
+
type.inspect)
|
|
629
|
+
end
|
|
630
|
+
if type.children[0].nullable?
|
|
631
|
+
raise TypeError.new("Map key field must not be nullable: " +
|
|
632
|
+
type.children[0].inspect)
|
|
633
|
+
end
|
|
634
|
+
super(child)
|
|
635
|
+
end
|
|
636
|
+
|
|
637
|
+
def name
|
|
638
|
+
"Map"
|
|
639
|
+
end
|
|
640
|
+
|
|
641
|
+
def build_array(size, validity_buffer, offsets_buffer, child)
|
|
642
|
+
MapArray.new(self, size, validity_buffer, offsets_buffer, child)
|
|
643
|
+
end
|
|
644
|
+
end
|
|
645
|
+
|
|
646
|
+
class UnionType < Type
|
|
647
|
+
attr_reader :children
|
|
648
|
+
attr_reader :type_ids
|
|
649
|
+
def initialize(children, type_ids)
|
|
650
|
+
super()
|
|
651
|
+
@children = children
|
|
652
|
+
@type_ids = type_ids
|
|
653
|
+
@type_indexes = {}
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
def resolve_type_index(type)
|
|
657
|
+
@type_indexes[type] ||= @type_ids.index(type)
|
|
658
|
+
end
|
|
659
|
+
end
|
|
660
|
+
|
|
661
|
+
class DenseUnionType < UnionType
|
|
662
|
+
def name
|
|
663
|
+
"DenseUnion"
|
|
664
|
+
end
|
|
665
|
+
|
|
666
|
+
def build_array(size, types_buffer, offsets_buffer, children)
|
|
667
|
+
DenseUnionArray.new(self, size, types_buffer, offsets_buffer, children)
|
|
668
|
+
end
|
|
669
|
+
end
|
|
670
|
+
|
|
671
|
+
class SparseUnionType < UnionType
|
|
672
|
+
def name
|
|
673
|
+
"SparseUnion"
|
|
674
|
+
end
|
|
675
|
+
|
|
676
|
+
def build_array(size, types_buffer, children)
|
|
677
|
+
SparseUnionArray.new(self, size, types_buffer, children)
|
|
678
|
+
end
|
|
679
|
+
end
|
|
680
|
+
|
|
681
|
+
class DictionaryType < Type
|
|
682
|
+
attr_reader :index_type
|
|
683
|
+
attr_reader :value_type
|
|
684
|
+
attr_reader :ordered
|
|
685
|
+
def initialize(index_type, value_type, ordered)
|
|
686
|
+
super()
|
|
687
|
+
@index_type = index_type
|
|
688
|
+
@value_type = value_type
|
|
689
|
+
@ordered = ordered
|
|
690
|
+
end
|
|
691
|
+
|
|
692
|
+
def name
|
|
693
|
+
"Dictionary"
|
|
694
|
+
end
|
|
695
|
+
|
|
696
|
+
def build_array(size, validity_buffer, indices_buffer, dictionary)
|
|
697
|
+
DictionaryArray.new(self,
|
|
698
|
+
size,
|
|
699
|
+
validity_buffer,
|
|
700
|
+
indices_buffer,
|
|
701
|
+
dictionary)
|
|
702
|
+
end
|
|
703
|
+
end
|
|
704
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
|
3
|
+
# distributed with this work for additional information
|
|
4
|
+
# regarding copyright ownership. The ASF licenses this file
|
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
|
6
|
+
# "License"); you may not use this file except in compliance
|
|
7
|
+
# with the License. You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
|
12
|
+
# software distributed under the License is distributed on an
|
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
# KIND, either express or implied. See the License for the
|
|
15
|
+
# specific language governing permissions and limitations
|
|
16
|
+
# under the License.
|
|
17
|
+
|
|
18
|
+
module ArrowFormat
|
|
19
|
+
VERSION = "23.0.0"
|
|
20
|
+
|
|
21
|
+
module Version
|
|
22
|
+
numbers, TAG = VERSION.split("-")
|
|
23
|
+
MAJOR, MINOR, MICRO = numbers.split(".").collect(&:to_i)
|
|
24
|
+
STRING = VERSION
|
|
25
|
+
end
|
|
26
|
+
end
|