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.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +26 -0
  3. data/LICENSE.txt +202 -0
  4. data/NOTICE.txt +2 -0
  5. data/README.md +61 -0
  6. data/Rakefile +67 -0
  7. data/lib/arrow-format/array.rb +476 -0
  8. data/lib/arrow-format/bitmap.rb +44 -0
  9. data/lib/arrow-format/error.rb +34 -0
  10. data/lib/arrow-format/field.rb +33 -0
  11. data/lib/arrow-format/file-reader.rb +213 -0
  12. data/lib/arrow-format/org/apache/arrow/flatbuf/binary.rb +21 -0
  13. data/lib/arrow-format/org/apache/arrow/flatbuf/binary_view.rb +27 -0
  14. data/lib/arrow-format/org/apache/arrow/flatbuf/block.rb +38 -0
  15. data/lib/arrow-format/org/apache/arrow/flatbuf/body_compression.rb +47 -0
  16. data/lib/arrow-format/org/apache/arrow/flatbuf/body_compression_method.rb +31 -0
  17. data/lib/arrow-format/org/apache/arrow/flatbuf/bool.rb +20 -0
  18. data/lib/arrow-format/org/apache/arrow/flatbuf/buffer.rb +38 -0
  19. data/lib/arrow-format/org/apache/arrow/flatbuf/compression_type.rb +22 -0
  20. data/lib/arrow-format/org/apache/arrow/flatbuf/date.rb +36 -0
  21. data/lib/arrow-format/org/apache/arrow/flatbuf/date_unit.rb +22 -0
  22. data/lib/arrow-format/org/apache/arrow/flatbuf/decimal.rb +48 -0
  23. data/lib/arrow-format/org/apache/arrow/flatbuf/dictionary_batch.rb +50 -0
  24. data/lib/arrow-format/org/apache/arrow/flatbuf/dictionary_encoding.rb +64 -0
  25. data/lib/arrow-format/org/apache/arrow/flatbuf/dictionary_kind.rb +26 -0
  26. data/lib/arrow-format/org/apache/arrow/flatbuf/duration.rb +30 -0
  27. data/lib/arrow-format/org/apache/arrow/flatbuf/endianness.rb +24 -0
  28. data/lib/arrow-format/org/apache/arrow/flatbuf/feature.rb +46 -0
  29. data/lib/arrow-format/org/apache/arrow/flatbuf/field.rb +92 -0
  30. data/lib/arrow-format/org/apache/arrow/flatbuf/field_node.rb +43 -0
  31. data/lib/arrow-format/org/apache/arrow/flatbuf/fixed_size_binary.rb +27 -0
  32. data/lib/arrow-format/org/apache/arrow/flatbuf/fixed_size_list.rb +27 -0
  33. data/lib/arrow-format/org/apache/arrow/flatbuf/floating_point.rb +30 -0
  34. data/lib/arrow-format/org/apache/arrow/flatbuf/footer.rb +74 -0
  35. data/lib/arrow-format/org/apache/arrow/flatbuf/int.rb +33 -0
  36. data/lib/arrow-format/org/apache/arrow/flatbuf/interval.rb +30 -0
  37. data/lib/arrow-format/org/apache/arrow/flatbuf/interval_unit.rb +23 -0
  38. data/lib/arrow-format/org/apache/arrow/flatbuf/key_value.rb +36 -0
  39. data/lib/arrow-format/org/apache/arrow/flatbuf/large_binary.rb +22 -0
  40. data/lib/arrow-format/org/apache/arrow/flatbuf/large_list.rb +22 -0
  41. data/lib/arrow-format/org/apache/arrow/flatbuf/large_list_view.rb +22 -0
  42. data/lib/arrow-format/org/apache/arrow/flatbuf/large_utf8.rb +22 -0
  43. data/lib/arrow-format/org/apache/arrow/flatbuf/list.rb +20 -0
  44. data/lib/arrow-format/org/apache/arrow/flatbuf/list_view.rb +23 -0
  45. data/lib/arrow-format/org/apache/arrow/flatbuf/map.rb +52 -0
  46. data/lib/arrow-format/org/apache/arrow/flatbuf/message.rb +68 -0
  47. data/lib/arrow-format/org/apache/arrow/flatbuf/message_header.rb +39 -0
  48. data/lib/arrow-format/org/apache/arrow/flatbuf/metadata_version.rb +36 -0
  49. data/lib/arrow-format/org/apache/arrow/flatbuf/null.rb +21 -0
  50. data/lib/arrow-format/org/apache/arrow/flatbuf/precision.rb +23 -0
  51. data/lib/arrow-format/org/apache/arrow/flatbuf/record_batch.rb +93 -0
  52. data/lib/arrow-format/org/apache/arrow/flatbuf/run_end_encoded.rb +25 -0
  53. data/lib/arrow-format/org/apache/arrow/flatbuf/schema.rb +68 -0
  54. data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_matrix_compressed_axis.rb +22 -0
  55. data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_matrix_index_csx.rb +96 -0
  56. data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor.rb +92 -0
  57. data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index.rb +29 -0
  58. data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_coo.rb +93 -0
  59. data/lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_csf.rb +129 -0
  60. data/lib/arrow-format/org/apache/arrow/flatbuf/struct_.rb +23 -0
  61. data/lib/arrow-format/org/apache/arrow/flatbuf/tensor.rb +74 -0
  62. data/lib/arrow-format/org/apache/arrow/flatbuf/tensor_dim.rb +38 -0
  63. data/lib/arrow-format/org/apache/arrow/flatbuf/time.rb +51 -0
  64. data/lib/arrow-format/org/apache/arrow/flatbuf/time_unit.rb +24 -0
  65. data/lib/arrow-format/org/apache/arrow/flatbuf/timestamp.rb +152 -0
  66. data/lib/arrow-format/org/apache/arrow/flatbuf/type.rb +55 -0
  67. data/lib/arrow-format/org/apache/arrow/flatbuf/union.rb +44 -0
  68. data/lib/arrow-format/org/apache/arrow/flatbuf/union_mode.rb +22 -0
  69. data/lib/arrow-format/org/apache/arrow/flatbuf/utf8.rb +21 -0
  70. data/lib/arrow-format/org/apache/arrow/flatbuf/utf8view.rb +27 -0
  71. data/lib/arrow-format/readable.rb +271 -0
  72. data/lib/arrow-format/record-batch.rb +36 -0
  73. data/lib/arrow-format/schema.rb +24 -0
  74. data/lib/arrow-format/streaming-pull-reader.rb +243 -0
  75. data/lib/arrow-format/streaming-reader.rb +50 -0
  76. data/lib/arrow-format/type.rb +704 -0
  77. data/lib/arrow-format/version.rb +26 -0
  78. data/lib/arrow-format.rb +20 -0
  79. data/red-arrow-format.gemspec +57 -0
  80. 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