red-arrow 0.17.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/arrow/converters.hpp +75 -32
- data/ext/arrow/extconf.rb +14 -3
- data/ext/arrow/raw-records.cpp +3 -1
- data/ext/arrow/values.cpp +3 -1
- data/lib/arrow/array-builder.rb +11 -6
- data/lib/arrow/bigdecimal-extension.rb +5 -1
- data/lib/arrow/buffer.rb +28 -0
- data/lib/arrow/decimal128-array-builder.rb +21 -25
- data/lib/arrow/decimal128-data-type.rb +2 -0
- data/lib/arrow/decimal128.rb +18 -0
- data/lib/arrow/decimal256-array-builder.rb +61 -0
- data/lib/arrow/decimal256-array.rb +25 -0
- data/lib/arrow/decimal256-data-type.rb +73 -0
- data/lib/arrow/decimal256.rb +60 -0
- data/lib/arrow/dictionary-array.rb +24 -0
- data/lib/arrow/fixed-size-binary-array-builder.rb +38 -0
- data/lib/arrow/fixed-size-binary-array.rb +26 -0
- data/lib/arrow/loader.rb +16 -0
- data/lib/arrow/raw-table-converter.rb +47 -0
- data/lib/arrow/record-batch-iterator.rb +22 -0
- data/lib/arrow/record-batch.rb +9 -1
- data/lib/arrow/struct-array-builder.rb +13 -7
- data/lib/arrow/table-saver.rb +6 -6
- data/lib/arrow/table.rb +5 -24
- data/lib/arrow/version.rb +1 -1
- data/red-arrow.gemspec +1 -0
- data/test/raw-records/test-basic-arrays.rb +17 -0
- data/test/raw-records/test-dense-union-array.rb +15 -34
- data/test/raw-records/test-list-array.rb +20 -0
- data/test/raw-records/test-sparse-union-array.rb +15 -33
- data/test/raw-records/test-struct-array.rb +15 -0
- data/test/test-array.rb +2 -2
- data/test/test-bigdecimal.rb +20 -3
- data/test/test-buffer.rb +11 -0
- data/test/test-decimal128-array-builder.rb +18 -1
- data/test/test-decimal128.rb +38 -0
- data/test/test-decimal256-array-builder.rb +112 -0
- data/test/test-decimal256-array.rb +38 -0
- data/test/test-decimal256-data-type.rb +31 -0
- data/test/test-decimal256.rb +102 -0
- data/test/test-dense-union-data-type.rb +2 -2
- data/test/test-dictionary-array.rb +41 -0
- data/test/test-feather.rb +1 -1
- data/test/test-fixed-size-binary-array-builder.rb +92 -0
- data/test/test-fixed-size-binary-array.rb +36 -0
- data/test/test-record-batch-iterator.rb +37 -0
- data/test/test-record-batch.rb +14 -0
- data/test/test-sparse-union-data-type.rb +2 -2
- data/test/test-struct-array-builder.rb +16 -12
- data/test/test-struct-array.rb +2 -2
- data/test/values/test-basic-arrays.rb +11 -0
- data/test/values/test-dense-union-array.rb +15 -34
- data/test/values/test-list-array.rb +18 -0
- data/test/values/test-sparse-union-array.rb +15 -33
- data/test/values/test-struct-array.rb +15 -0
- metadata +96 -56
@@ -32,7 +32,7 @@ module Arrow
|
|
32
32
|
case index_or_name
|
33
33
|
when String, Symbol
|
34
34
|
name = index_or_name
|
35
|
-
|
35
|
+
cached_name_to_builder[name.to_s]
|
36
36
|
else
|
37
37
|
index = index_or_name
|
38
38
|
cached_field_builders[index]
|
@@ -70,13 +70,18 @@ module Arrow
|
|
70
70
|
append_null
|
71
71
|
when ::Array
|
72
72
|
append_value_raw
|
73
|
-
value
|
74
|
-
|
73
|
+
cached_field_builders.zip(value) do |builder, sub_value|
|
74
|
+
builder.append(sub_value)
|
75
75
|
end
|
76
76
|
when Hash
|
77
77
|
append_value_raw
|
78
|
+
local_name_to_builder = cached_name_to_builder.dup
|
78
79
|
value.each do |name, sub_value|
|
79
|
-
|
80
|
+
builder = local_name_to_builder.delete(name.to_s)
|
81
|
+
builder.append(sub_value)
|
82
|
+
end
|
83
|
+
local_name_to_builder.each do |_, builder|
|
84
|
+
builder.append_null
|
80
85
|
end
|
81
86
|
else
|
82
87
|
message =
|
@@ -108,9 +113,6 @@ module Arrow
|
|
108
113
|
alias_method :append_null_raw, :append_null
|
109
114
|
def append_null
|
110
115
|
append_null_raw
|
111
|
-
cached_field_builders.each do |builder|
|
112
|
-
builder.append_null
|
113
|
-
end
|
114
116
|
end
|
115
117
|
|
116
118
|
# @since 0.12.0
|
@@ -136,5 +138,9 @@ module Arrow
|
|
136
138
|
end
|
137
139
|
name_to_builder
|
138
140
|
end
|
141
|
+
|
142
|
+
def cached_name_to_builder
|
143
|
+
@name_to_builder ||= build_name_to_builder
|
144
|
+
end
|
139
145
|
end
|
140
146
|
end
|
data/lib/arrow/table-saver.rb
CHANGED
@@ -155,13 +155,13 @@ module Arrow
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def save_as_feather
|
158
|
+
properties = FeatherWriteProperties.new
|
159
|
+
properties.class.properties.each do |name|
|
160
|
+
value = @options[name.to_sym]
|
161
|
+
next if value.nil?
|
162
|
+
properties.__send__("#{name}=", value)
|
163
|
+
end
|
158
164
|
open_raw_output_stream do |output|
|
159
|
-
properties = FeatherWriteProperties.new
|
160
|
-
properties.class.properties.each do |name|
|
161
|
-
value = @options[name.to_sym]
|
162
|
-
next if value.nil?
|
163
|
-
properties.__send__("#{name}=", value)
|
164
|
-
end
|
165
165
|
@table.write_as_feather(output, properties)
|
166
166
|
end
|
167
167
|
end
|
data/lib/arrow/table.rb
CHANGED
@@ -15,6 +15,8 @@
|
|
15
15
|
# specific language governing permissions and limitations
|
16
16
|
# under the License.
|
17
17
|
|
18
|
+
require "arrow/raw-table-converter"
|
19
|
+
|
18
20
|
module Arrow
|
19
21
|
class Table
|
20
22
|
include ColumnContainable
|
@@ -81,14 +83,6 @@ module Arrow
|
|
81
83
|
# `Array`.
|
82
84
|
#
|
83
85
|
# @example Create a table from column name and values
|
84
|
-
# count_chunks = [
|
85
|
-
# Arrow::UInt32Array.new([0, 2]),
|
86
|
-
# Arrow::UInt32Array.new([nil, 4]),
|
87
|
-
# ]
|
88
|
-
# visible_chunks = [
|
89
|
-
# Arrow::BooleanArray.new([true]),
|
90
|
-
# Arrow::BooleanArray.new([nil, nil, false]),
|
91
|
-
# ]
|
92
86
|
# Arrow::Table.new("count" => [0, 2, nil, 4],
|
93
87
|
# "visible" => [true, nil, nil, false])
|
94
88
|
#
|
@@ -169,22 +163,9 @@ module Arrow
|
|
169
163
|
n_args = args.size
|
170
164
|
case n_args
|
171
165
|
when 1
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
values = columns.collect(&:data)
|
176
|
-
schema = Schema.new(fields)
|
177
|
-
else
|
178
|
-
raw_table = args[0]
|
179
|
-
fields = []
|
180
|
-
values = []
|
181
|
-
raw_table.each do |name, array|
|
182
|
-
array = ArrayBuilder.build(array) if array.is_a?(::Array)
|
183
|
-
fields << Field.new(name.to_s, array.value_data_type)
|
184
|
-
values << array
|
185
|
-
end
|
186
|
-
schema = Schema.new(fields)
|
187
|
-
end
|
166
|
+
raw_table_converter = RawTableConverter.new(args[0])
|
167
|
+
schema = raw_table_converter.schema
|
168
|
+
values = raw_table_converter.values
|
188
169
|
when 2
|
189
170
|
schema = args[0]
|
190
171
|
schema = Schema.new(schema) unless schema.is_a?(Schema)
|
data/lib/arrow/version.rb
CHANGED
data/red-arrow.gemspec
CHANGED
@@ -46,6 +46,7 @@ Gem::Specification.new do |spec|
|
|
46
46
|
spec.test_files += Dir.glob("test/**/*")
|
47
47
|
spec.extensions = ["ext/arrow/extconf.rb"]
|
48
48
|
|
49
|
+
spec.add_runtime_dependency("bigdecimal", ">= 2.0.3")
|
49
50
|
spec.add_runtime_dependency("extpp", ">= 0.0.7")
|
50
51
|
spec.add_runtime_dependency("gio2", ">= 3.3.6")
|
51
52
|
spec.add_runtime_dependency("native-package-installer")
|
@@ -329,6 +329,23 @@ module RawRecordsBasicArraysTests
|
|
329
329
|
records)
|
330
330
|
assert_equal(records, target.raw_records)
|
331
331
|
end
|
332
|
+
|
333
|
+
def test_decimal256
|
334
|
+
records = [
|
335
|
+
[BigDecimal("92.92")],
|
336
|
+
[nil],
|
337
|
+
[BigDecimal("29.29")],
|
338
|
+
]
|
339
|
+
target = build({
|
340
|
+
column: {
|
341
|
+
type: :decimal256,
|
342
|
+
precision: 38,
|
343
|
+
scale: 2,
|
344
|
+
}
|
345
|
+
},
|
346
|
+
records)
|
347
|
+
assert_equal(records, target.raw_records)
|
348
|
+
end
|
332
349
|
end
|
333
350
|
|
334
351
|
class RawRecordsRecordBatchBasicArraysTest < Test::Unit::TestCase
|
@@ -56,10 +56,7 @@ module RawRecordsDenseUnionArrayTests
|
|
56
56
|
end
|
57
57
|
records.each do |record|
|
58
58
|
column = record[0]
|
59
|
-
if column.
|
60
|
-
type_ids << nil
|
61
|
-
offsets << 0
|
62
|
-
elsif column.key?("0")
|
59
|
+
if column.key?("0")
|
63
60
|
type_id = type_codes[0]
|
64
61
|
type_ids << type_id
|
65
62
|
offsets << (type_ids.count(type_id) - 1)
|
@@ -82,7 +79,6 @@ module RawRecordsDenseUnionArrayTests
|
|
82
79
|
def test_null
|
83
80
|
records = [
|
84
81
|
[{"0" => nil}],
|
85
|
-
[nil],
|
86
82
|
]
|
87
83
|
target = build(:null, records)
|
88
84
|
assert_equal(records, target.raw_records)
|
@@ -91,7 +87,6 @@ module RawRecordsDenseUnionArrayTests
|
|
91
87
|
def test_boolean
|
92
88
|
records = [
|
93
89
|
[{"0" => true}],
|
94
|
-
[nil],
|
95
90
|
[{"1" => nil}],
|
96
91
|
]
|
97
92
|
target = build(:boolean, records)
|
@@ -101,7 +96,6 @@ module RawRecordsDenseUnionArrayTests
|
|
101
96
|
def test_int8
|
102
97
|
records = [
|
103
98
|
[{"0" => -(2 ** 7)}],
|
104
|
-
[nil],
|
105
99
|
[{"1" => nil}],
|
106
100
|
]
|
107
101
|
target = build(:int8, records)
|
@@ -111,7 +105,6 @@ module RawRecordsDenseUnionArrayTests
|
|
111
105
|
def test_uint8
|
112
106
|
records = [
|
113
107
|
[{"0" => (2 ** 8) - 1}],
|
114
|
-
[nil],
|
115
108
|
[{"1" => nil}],
|
116
109
|
]
|
117
110
|
target = build(:uint8, records)
|
@@ -121,7 +114,6 @@ module RawRecordsDenseUnionArrayTests
|
|
121
114
|
def test_int16
|
122
115
|
records = [
|
123
116
|
[{"0" => -(2 ** 15)}],
|
124
|
-
[nil],
|
125
117
|
[{"1" => nil}],
|
126
118
|
]
|
127
119
|
target = build(:int16, records)
|
@@ -131,7 +123,6 @@ module RawRecordsDenseUnionArrayTests
|
|
131
123
|
def test_uint16
|
132
124
|
records = [
|
133
125
|
[{"0" => (2 ** 16) - 1}],
|
134
|
-
[nil],
|
135
126
|
[{"1" => nil}],
|
136
127
|
]
|
137
128
|
target = build(:uint16, records)
|
@@ -141,7 +132,6 @@ module RawRecordsDenseUnionArrayTests
|
|
141
132
|
def test_int32
|
142
133
|
records = [
|
143
134
|
[{"0" => -(2 ** 31)}],
|
144
|
-
[nil],
|
145
135
|
[{"1" => nil}],
|
146
136
|
]
|
147
137
|
target = build(:int32, records)
|
@@ -151,7 +141,6 @@ module RawRecordsDenseUnionArrayTests
|
|
151
141
|
def test_uint32
|
152
142
|
records = [
|
153
143
|
[{"0" => (2 ** 32) - 1}],
|
154
|
-
[nil],
|
155
144
|
[{"1" => nil}],
|
156
145
|
]
|
157
146
|
target = build(:uint32, records)
|
@@ -161,7 +150,6 @@ module RawRecordsDenseUnionArrayTests
|
|
161
150
|
def test_int64
|
162
151
|
records = [
|
163
152
|
[{"0" => -(2 ** 63)}],
|
164
|
-
[nil],
|
165
153
|
[{"1" => nil}],
|
166
154
|
]
|
167
155
|
target = build(:int64, records)
|
@@ -171,7 +159,6 @@ module RawRecordsDenseUnionArrayTests
|
|
171
159
|
def test_uint64
|
172
160
|
records = [
|
173
161
|
[{"0" => (2 ** 64) - 1}],
|
174
|
-
[nil],
|
175
162
|
[{"1" => nil}],
|
176
163
|
]
|
177
164
|
target = build(:uint64, records)
|
@@ -181,7 +168,6 @@ module RawRecordsDenseUnionArrayTests
|
|
181
168
|
def test_float
|
182
169
|
records = [
|
183
170
|
[{"0" => -1.0}],
|
184
|
-
[nil],
|
185
171
|
[{"1" => nil}],
|
186
172
|
]
|
187
173
|
target = build(:float, records)
|
@@ -191,7 +177,6 @@ module RawRecordsDenseUnionArrayTests
|
|
191
177
|
def test_double
|
192
178
|
records = [
|
193
179
|
[{"0" => -1.0}],
|
194
|
-
[nil],
|
195
180
|
[{"1" => nil}],
|
196
181
|
]
|
197
182
|
target = build(:double, records)
|
@@ -201,7 +186,6 @@ module RawRecordsDenseUnionArrayTests
|
|
201
186
|
def test_binary
|
202
187
|
records = [
|
203
188
|
[{"0" => "\xff".b}],
|
204
|
-
[nil],
|
205
189
|
[{"1" => nil}],
|
206
190
|
]
|
207
191
|
target = build(:binary, records)
|
@@ -211,7 +195,6 @@ module RawRecordsDenseUnionArrayTests
|
|
211
195
|
def test_string
|
212
196
|
records = [
|
213
197
|
[{"0" => "Ruby"}],
|
214
|
-
[nil],
|
215
198
|
[{"1" => nil}],
|
216
199
|
]
|
217
200
|
target = build(:string, records)
|
@@ -221,7 +204,6 @@ module RawRecordsDenseUnionArrayTests
|
|
221
204
|
def test_date32
|
222
205
|
records = [
|
223
206
|
[{"0" => Date.new(1960, 1, 1)}],
|
224
|
-
[nil],
|
225
207
|
[{"1" => nil}],
|
226
208
|
]
|
227
209
|
target = build(:date32, records)
|
@@ -231,7 +213,6 @@ module RawRecordsDenseUnionArrayTests
|
|
231
213
|
def test_date64
|
232
214
|
records = [
|
233
215
|
[{"0" => DateTime.new(1960, 1, 1, 2, 9, 30)}],
|
234
|
-
[nil],
|
235
216
|
[{"1" => nil}],
|
236
217
|
]
|
237
218
|
target = build(:date64, records)
|
@@ -241,7 +222,6 @@ module RawRecordsDenseUnionArrayTests
|
|
241
222
|
def test_timestamp_second
|
242
223
|
records = [
|
243
224
|
[{"0" => Time.parse("1960-01-01T02:09:30Z")}],
|
244
|
-
[nil],
|
245
225
|
[{"1" => nil}],
|
246
226
|
]
|
247
227
|
target = build({
|
@@ -255,7 +235,6 @@ module RawRecordsDenseUnionArrayTests
|
|
255
235
|
def test_timestamp_milli
|
256
236
|
records = [
|
257
237
|
[{"0" => Time.parse("1960-01-01T02:09:30.123Z")}],
|
258
|
-
[nil],
|
259
238
|
[{"1" => nil}],
|
260
239
|
]
|
261
240
|
target = build({
|
@@ -269,7 +248,6 @@ module RawRecordsDenseUnionArrayTests
|
|
269
248
|
def test_timestamp_micro
|
270
249
|
records = [
|
271
250
|
[{"0" => Time.parse("1960-01-01T02:09:30.123456Z")}],
|
272
|
-
[nil],
|
273
251
|
[{"1" => nil}],
|
274
252
|
]
|
275
253
|
target = build({
|
@@ -283,7 +261,6 @@ module RawRecordsDenseUnionArrayTests
|
|
283
261
|
def test_timestamp_nano
|
284
262
|
records = [
|
285
263
|
[{"0" => Time.parse("1960-01-01T02:09:30.123456789Z")}],
|
286
|
-
[nil],
|
287
264
|
[{"1" => nil}],
|
288
265
|
]
|
289
266
|
target = build({
|
@@ -299,7 +276,6 @@ module RawRecordsDenseUnionArrayTests
|
|
299
276
|
records = [
|
300
277
|
# 00:10:00
|
301
278
|
[{"0" => Arrow::Time.new(unit, 60 * 10)}],
|
302
|
-
[nil],
|
303
279
|
[{"1" => nil}],
|
304
280
|
]
|
305
281
|
target = build({
|
@@ -315,7 +291,6 @@ module RawRecordsDenseUnionArrayTests
|
|
315
291
|
records = [
|
316
292
|
# 00:10:00.123
|
317
293
|
[{"0" => Arrow::Time.new(unit, (60 * 10) * 1000 + 123)}],
|
318
|
-
[nil],
|
319
294
|
[{"1" => nil}],
|
320
295
|
]
|
321
296
|
target = build({
|
@@ -331,7 +306,6 @@ module RawRecordsDenseUnionArrayTests
|
|
331
306
|
records = [
|
332
307
|
# 00:10:00.123456
|
333
308
|
[{"0" => Arrow::Time.new(unit, (60 * 10) * 1_000_000 + 123_456)}],
|
334
|
-
[nil],
|
335
309
|
[{"1" => nil}],
|
336
310
|
]
|
337
311
|
target = build({
|
@@ -347,7 +321,6 @@ module RawRecordsDenseUnionArrayTests
|
|
347
321
|
records = [
|
348
322
|
# 00:10:00.123456789
|
349
323
|
[{"0" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789)}],
|
350
|
-
[nil],
|
351
324
|
[{"1" => nil}],
|
352
325
|
]
|
353
326
|
target = build({
|
@@ -361,7 +334,6 @@ module RawRecordsDenseUnionArrayTests
|
|
361
334
|
def test_decimal128
|
362
335
|
records = [
|
363
336
|
[{"0" => BigDecimal("92.92")}],
|
364
|
-
[nil],
|
365
337
|
[{"1" => nil}],
|
366
338
|
]
|
367
339
|
target = build({
|
@@ -373,10 +345,23 @@ module RawRecordsDenseUnionArrayTests
|
|
373
345
|
assert_equal(records, target.raw_records)
|
374
346
|
end
|
375
347
|
|
348
|
+
def test_decimal256
|
349
|
+
records = [
|
350
|
+
[{"0" => BigDecimal("92.92")}],
|
351
|
+
[{"1" => nil}],
|
352
|
+
]
|
353
|
+
target = build({
|
354
|
+
type: :decimal256,
|
355
|
+
precision: 38,
|
356
|
+
scale: 2,
|
357
|
+
},
|
358
|
+
records)
|
359
|
+
assert_equal(records, target.raw_records)
|
360
|
+
end
|
361
|
+
|
376
362
|
def test_list
|
377
363
|
records = [
|
378
364
|
[{"0" => [true, nil, false]}],
|
379
|
-
[nil],
|
380
365
|
[{"1" => nil}],
|
381
366
|
]
|
382
367
|
target = build({
|
@@ -393,7 +378,6 @@ module RawRecordsDenseUnionArrayTests
|
|
393
378
|
def test_struct
|
394
379
|
records = [
|
395
380
|
[{"0" => {"sub_field" => true}}],
|
396
|
-
[nil],
|
397
381
|
[{"1" => nil}],
|
398
382
|
[{"0" => {"sub_field" => nil}}],
|
399
383
|
]
|
@@ -414,7 +398,6 @@ module RawRecordsDenseUnionArrayTests
|
|
414
398
|
omit("Need to add support for SparseUnionArrayBuilder")
|
415
399
|
records = [
|
416
400
|
[{"0" => {"field1" => true}}],
|
417
|
-
[nil],
|
418
401
|
[{"1" => nil}],
|
419
402
|
[{"0" => {"field2" => nil}}],
|
420
403
|
]
|
@@ -440,7 +423,6 @@ module RawRecordsDenseUnionArrayTests
|
|
440
423
|
omit("Need to add support for DenseUnionArrayBuilder")
|
441
424
|
records = [
|
442
425
|
[{"0" => {"field1" => true}}],
|
443
|
-
[nil],
|
444
426
|
[{"1" => nil}],
|
445
427
|
[{"0" => {"field2" => nil}}],
|
446
428
|
]
|
@@ -466,7 +448,6 @@ module RawRecordsDenseUnionArrayTests
|
|
466
448
|
omit("Need to add support for DictionaryArrayBuilder")
|
467
449
|
records = [
|
468
450
|
[{"0" => "Ruby"}],
|
469
|
-
[nil],
|
470
451
|
[{"1" => nil}],
|
471
452
|
[{"0" => "GLib"}],
|
472
453
|
]
|
@@ -379,6 +379,26 @@ module RawRecordsListArrayTests
|
|
379
379
|
assert_equal(records, target.raw_records)
|
380
380
|
end
|
381
381
|
|
382
|
+
def test_decimal256
|
383
|
+
records = [
|
384
|
+
[
|
385
|
+
[
|
386
|
+
BigDecimal("92.92"),
|
387
|
+
nil,
|
388
|
+
BigDecimal("29.29"),
|
389
|
+
],
|
390
|
+
],
|
391
|
+
[nil],
|
392
|
+
]
|
393
|
+
target = build({
|
394
|
+
type: :decimal256,
|
395
|
+
precision: 38,
|
396
|
+
scale: 2,
|
397
|
+
},
|
398
|
+
records)
|
399
|
+
assert_equal(records, target.raw_records)
|
400
|
+
end
|
401
|
+
|
382
402
|
def test_list
|
383
403
|
records = [
|
384
404
|
[
|
@@ -51,9 +51,7 @@ module RawRecordsSparseUnionArrayTests
|
|
51
51
|
end
|
52
52
|
records.each do |record|
|
53
53
|
column = record[0]
|
54
|
-
if column.
|
55
|
-
type_ids << nil
|
56
|
-
elsif column.key?("0")
|
54
|
+
if column.key?("0")
|
57
55
|
type_ids << type_codes[0]
|
58
56
|
elsif column.key?("1")
|
59
57
|
type_ids << type_codes[1]
|
@@ -71,7 +69,6 @@ module RawRecordsSparseUnionArrayTests
|
|
71
69
|
def test_null
|
72
70
|
records = [
|
73
71
|
[{"0" => nil}],
|
74
|
-
[nil],
|
75
72
|
]
|
76
73
|
target = build(:null, records)
|
77
74
|
assert_equal(records, target.raw_records)
|
@@ -80,7 +77,6 @@ module RawRecordsSparseUnionArrayTests
|
|
80
77
|
def test_boolean
|
81
78
|
records = [
|
82
79
|
[{"0" => true}],
|
83
|
-
[nil],
|
84
80
|
[{"1" => nil}],
|
85
81
|
]
|
86
82
|
target = build(:boolean, records)
|
@@ -90,7 +86,6 @@ module RawRecordsSparseUnionArrayTests
|
|
90
86
|
def test_int8
|
91
87
|
records = [
|
92
88
|
[{"0" => -(2 ** 7)}],
|
93
|
-
[nil],
|
94
89
|
[{"1" => nil}],
|
95
90
|
]
|
96
91
|
target = build(:int8, records)
|
@@ -100,7 +95,6 @@ module RawRecordsSparseUnionArrayTests
|
|
100
95
|
def test_uint8
|
101
96
|
records = [
|
102
97
|
[{"0" => (2 ** 8) - 1}],
|
103
|
-
[nil],
|
104
98
|
[{"1" => nil}],
|
105
99
|
]
|
106
100
|
target = build(:uint8, records)
|
@@ -110,7 +104,6 @@ module RawRecordsSparseUnionArrayTests
|
|
110
104
|
def test_int16
|
111
105
|
records = [
|
112
106
|
[{"0" => -(2 ** 15)}],
|
113
|
-
[nil],
|
114
107
|
[{"1" => nil}],
|
115
108
|
]
|
116
109
|
target = build(:int16, records)
|
@@ -120,7 +113,6 @@ module RawRecordsSparseUnionArrayTests
|
|
120
113
|
def test_uint16
|
121
114
|
records = [
|
122
115
|
[{"0" => (2 ** 16) - 1}],
|
123
|
-
[nil],
|
124
116
|
[{"1" => nil}],
|
125
117
|
]
|
126
118
|
target = build(:uint16, records)
|
@@ -130,7 +122,6 @@ module RawRecordsSparseUnionArrayTests
|
|
130
122
|
def test_int32
|
131
123
|
records = [
|
132
124
|
[{"0" => -(2 ** 31)}],
|
133
|
-
[nil],
|
134
125
|
[{"1" => nil}],
|
135
126
|
]
|
136
127
|
target = build(:int32, records)
|
@@ -140,7 +131,6 @@ module RawRecordsSparseUnionArrayTests
|
|
140
131
|
def test_uint32
|
141
132
|
records = [
|
142
133
|
[{"0" => (2 ** 32) - 1}],
|
143
|
-
[nil],
|
144
134
|
[{"1" => nil}],
|
145
135
|
]
|
146
136
|
target = build(:uint32, records)
|
@@ -150,7 +140,6 @@ module RawRecordsSparseUnionArrayTests
|
|
150
140
|
def test_int64
|
151
141
|
records = [
|
152
142
|
[{"0" => -(2 ** 63)}],
|
153
|
-
[nil],
|
154
143
|
[{"1" => nil}],
|
155
144
|
]
|
156
145
|
target = build(:int64, records)
|
@@ -160,7 +149,6 @@ module RawRecordsSparseUnionArrayTests
|
|
160
149
|
def test_uint64
|
161
150
|
records = [
|
162
151
|
[{"0" => (2 ** 64) - 1}],
|
163
|
-
[nil],
|
164
152
|
[{"1" => nil}],
|
165
153
|
]
|
166
154
|
target = build(:uint64, records)
|
@@ -170,7 +158,6 @@ module RawRecordsSparseUnionArrayTests
|
|
170
158
|
def test_float
|
171
159
|
records = [
|
172
160
|
[{"0" => -1.0}],
|
173
|
-
[nil],
|
174
161
|
[{"1" => nil}],
|
175
162
|
]
|
176
163
|
target = build(:float, records)
|
@@ -180,7 +167,6 @@ module RawRecordsSparseUnionArrayTests
|
|
180
167
|
def test_double
|
181
168
|
records = [
|
182
169
|
[{"0" => -1.0}],
|
183
|
-
[nil],
|
184
170
|
[{"1" => nil}],
|
185
171
|
]
|
186
172
|
target = build(:double, records)
|
@@ -190,7 +176,6 @@ module RawRecordsSparseUnionArrayTests
|
|
190
176
|
def test_binary
|
191
177
|
records = [
|
192
178
|
[{"0" => "\xff".b}],
|
193
|
-
[nil],
|
194
179
|
[{"1" => nil}],
|
195
180
|
]
|
196
181
|
target = build(:binary, records)
|
@@ -200,7 +185,6 @@ module RawRecordsSparseUnionArrayTests
|
|
200
185
|
def test_string
|
201
186
|
records = [
|
202
187
|
[{"0" => "Ruby"}],
|
203
|
-
[nil],
|
204
188
|
[{"1" => nil}],
|
205
189
|
]
|
206
190
|
target = build(:string, records)
|
@@ -210,7 +194,6 @@ module RawRecordsSparseUnionArrayTests
|
|
210
194
|
def test_date32
|
211
195
|
records = [
|
212
196
|
[{"0" => Date.new(1960, 1, 1)}],
|
213
|
-
[nil],
|
214
197
|
[{"1" => nil}],
|
215
198
|
]
|
216
199
|
target = build(:date32, records)
|
@@ -220,7 +203,6 @@ module RawRecordsSparseUnionArrayTests
|
|
220
203
|
def test_date64
|
221
204
|
records = [
|
222
205
|
[{"0" => DateTime.new(1960, 1, 1, 2, 9, 30)}],
|
223
|
-
[nil],
|
224
206
|
[{"1" => nil}],
|
225
207
|
]
|
226
208
|
target = build(:date64, records)
|
@@ -230,7 +212,6 @@ module RawRecordsSparseUnionArrayTests
|
|
230
212
|
def test_timestamp_second
|
231
213
|
records = [
|
232
214
|
[{"0" => Time.parse("1960-01-01T02:09:30Z")}],
|
233
|
-
[nil],
|
234
215
|
[{"1" => nil}],
|
235
216
|
]
|
236
217
|
target = build({
|
@@ -244,7 +225,6 @@ module RawRecordsSparseUnionArrayTests
|
|
244
225
|
def test_timestamp_milli
|
245
226
|
records = [
|
246
227
|
[{"0" => Time.parse("1960-01-01T02:09:30.123Z")}],
|
247
|
-
[nil],
|
248
228
|
[{"1" => nil}],
|
249
229
|
]
|
250
230
|
target = build({
|
@@ -258,7 +238,6 @@ module RawRecordsSparseUnionArrayTests
|
|
258
238
|
def test_timestamp_micro
|
259
239
|
records = [
|
260
240
|
[{"0" => Time.parse("1960-01-01T02:09:30.123456Z")}],
|
261
|
-
[nil],
|
262
241
|
[{"1" => nil}],
|
263
242
|
]
|
264
243
|
target = build({
|
@@ -272,7 +251,6 @@ module RawRecordsSparseUnionArrayTests
|
|
272
251
|
def test_timestamp_nano
|
273
252
|
records = [
|
274
253
|
[{"0" => Time.parse("1960-01-01T02:09:30.123456789Z")}],
|
275
|
-
[nil],
|
276
254
|
[{"1" => nil}],
|
277
255
|
]
|
278
256
|
target = build({
|
@@ -288,7 +266,6 @@ module RawRecordsSparseUnionArrayTests
|
|
288
266
|
records = [
|
289
267
|
# 00:10:00
|
290
268
|
[{"0" => Arrow::Time.new(unit, 60 * 10)}],
|
291
|
-
[nil],
|
292
269
|
[{"1" => nil}],
|
293
270
|
]
|
294
271
|
target = build({
|
@@ -304,7 +281,6 @@ module RawRecordsSparseUnionArrayTests
|
|
304
281
|
records = [
|
305
282
|
# 00:10:00.123
|
306
283
|
[{"0" => Arrow::Time.new(unit, (60 * 10) * 1000 + 123)}],
|
307
|
-
[nil],
|
308
284
|
[{"1" => nil}],
|
309
285
|
]
|
310
286
|
target = build({
|
@@ -320,7 +296,6 @@ module RawRecordsSparseUnionArrayTests
|
|
320
296
|
records = [
|
321
297
|
# 00:10:00.123456
|
322
298
|
[{"0" => Arrow::Time.new(unit, (60 * 10) * 1_000_000 + 123_456)}],
|
323
|
-
[nil],
|
324
299
|
[{"1" => nil}],
|
325
300
|
]
|
326
301
|
target = build({
|
@@ -336,7 +311,6 @@ module RawRecordsSparseUnionArrayTests
|
|
336
311
|
records = [
|
337
312
|
# 00:10:00.123456789
|
338
313
|
[{"0" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789)}],
|
339
|
-
[nil],
|
340
314
|
[{"1" => nil}],
|
341
315
|
]
|
342
316
|
target = build({
|
@@ -350,7 +324,6 @@ module RawRecordsSparseUnionArrayTests
|
|
350
324
|
def test_decimal128
|
351
325
|
records = [
|
352
326
|
[{"0" => BigDecimal("92.92")}],
|
353
|
-
[nil],
|
354
327
|
[{"1" => nil}],
|
355
328
|
]
|
356
329
|
target = build({
|
@@ -362,10 +335,23 @@ module RawRecordsSparseUnionArrayTests
|
|
362
335
|
assert_equal(records, target.raw_records)
|
363
336
|
end
|
364
337
|
|
338
|
+
def test_decimal256
|
339
|
+
records = [
|
340
|
+
[{"0" => BigDecimal("92.92")}],
|
341
|
+
[{"1" => nil}],
|
342
|
+
]
|
343
|
+
target = build({
|
344
|
+
type: :decimal256,
|
345
|
+
precision: 38,
|
346
|
+
scale: 2,
|
347
|
+
},
|
348
|
+
records)
|
349
|
+
assert_equal(records, target.raw_records)
|
350
|
+
end
|
351
|
+
|
365
352
|
def test_list
|
366
353
|
records = [
|
367
354
|
[{"0" => [true, nil, false]}],
|
368
|
-
[nil],
|
369
355
|
[{"1" => nil}],
|
370
356
|
]
|
371
357
|
target = build({
|
@@ -382,7 +368,6 @@ module RawRecordsSparseUnionArrayTests
|
|
382
368
|
def test_struct
|
383
369
|
records = [
|
384
370
|
[{"0" => {"sub_field" => true}}],
|
385
|
-
[nil],
|
386
371
|
[{"1" => nil}],
|
387
372
|
[{"0" => {"sub_field" => nil}}],
|
388
373
|
]
|
@@ -403,7 +388,6 @@ module RawRecordsSparseUnionArrayTests
|
|
403
388
|
omit("Need to add support for SparseUnionArrayBuilder")
|
404
389
|
records = [
|
405
390
|
[{"0" => {"field1" => true}}],
|
406
|
-
[nil],
|
407
391
|
[{"1" => nil}],
|
408
392
|
[{"0" => {"field2" => nil}}],
|
409
393
|
]
|
@@ -429,7 +413,6 @@ module RawRecordsSparseUnionArrayTests
|
|
429
413
|
omit("Need to add support for DenseUnionArrayBuilder")
|
430
414
|
records = [
|
431
415
|
[{"0" => {"field1" => true}}],
|
432
|
-
[nil],
|
433
416
|
[{"1" => nil}],
|
434
417
|
[{"0" => {"field2" => nil}}],
|
435
418
|
]
|
@@ -455,7 +438,6 @@ module RawRecordsSparseUnionArrayTests
|
|
455
438
|
omit("Need to add support for DictionaryArrayBuilder")
|
456
439
|
records = [
|
457
440
|
[{"0" => "Ruby"}],
|
458
|
-
[nil],
|
459
441
|
[{"1" => nil}],
|
460
442
|
[{"0" => "GLib"}],
|
461
443
|
]
|