red-arrow 8.0.0 → 9.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/ext/arrow/converters.hpp +3 -0
  3. data/ext/arrow/extconf.rb +6 -4
  4. data/lib/arrow/array-builder.rb +40 -6
  5. data/lib/arrow/array-computable.rb +37 -0
  6. data/lib/arrow/array.rb +16 -0
  7. data/lib/arrow/chunked-array.rb +21 -0
  8. data/lib/arrow/column.rb +28 -0
  9. data/lib/arrow/data-type.rb +2 -1
  10. data/lib/arrow/decimal128-array-builder.rb +16 -6
  11. data/lib/arrow/decimal128.rb +14 -0
  12. data/lib/arrow/decimal256-array-builder.rb +16 -6
  13. data/lib/arrow/decimal256.rb +14 -0
  14. data/lib/arrow/field.rb +44 -3
  15. data/lib/arrow/list-data-type.rb +1 -6
  16. data/lib/arrow/loader.rb +3 -0
  17. data/lib/arrow/string-array-builder.rb +30 -0
  18. data/lib/arrow/time-unit.rb +31 -0
  19. data/lib/arrow/time32-array-builder.rb +2 -14
  20. data/lib/arrow/time32-data-type.rb +9 -38
  21. data/lib/arrow/time64-array-builder.rb +2 -14
  22. data/lib/arrow/time64-data-type.rb +9 -38
  23. data/lib/arrow/timestamp-array-builder.rb +2 -14
  24. data/lib/arrow/timestamp-data-type.rb +9 -34
  25. data/lib/arrow/version.rb +1 -1
  26. data/red-arrow.gemspec +1 -1
  27. data/test/raw-records/test-dictionary-array.rb +341 -0
  28. data/test/test-array-builder.rb +62 -0
  29. data/test/test-chunked-array.rb +6 -0
  30. data/test/test-column.rb +31 -0
  31. data/test/test-decimal128-array-builder.rb +14 -0
  32. data/test/test-decimal128-array.rb +5 -2
  33. data/test/test-decimal128.rb +26 -2
  34. data/test/test-decimal256-array-builder.rb +14 -0
  35. data/test/test-decimal256-array.rb +5 -2
  36. data/test/test-decimal256.rb +26 -2
  37. data/test/test-field.rb +26 -0
  38. data/test/values/test-dictionary-array.rb +30 -0
  39. metadata +11 -6
@@ -28,9 +28,21 @@ class Decimal128Test < Test::Unit::TestCase
28
28
  end
29
29
  end
30
30
 
31
+ test("String") do
32
+ assert do
33
+ @decimal128 == "10.1"
34
+ end
35
+ end
36
+
37
+ test("Float") do
38
+ assert do
39
+ @decimal128 == 10.1
40
+ end
41
+ end
42
+
31
43
  test("not Arrow::Decimal128") do
32
44
  assert do
33
- not (@decimal128 == 10.1)
45
+ not (@decimal128 == :"10.1")
34
46
  end
35
47
  end
36
48
  end
@@ -42,9 +54,21 @@ class Decimal128Test < Test::Unit::TestCase
42
54
  end
43
55
  end
44
56
 
57
+ test("String") do
58
+ assert do
59
+ not (@decimal128 != "10.1")
60
+ end
61
+ end
62
+
63
+ test("Float") do
64
+ assert do
65
+ not (@decimal128 != 10.1)
66
+ end
67
+ end
68
+
45
69
  test("not Arrow::Decimal128") do
46
70
  assert do
47
- @decimal128 != 10.1
71
+ @decimal128 != :"10.1"
48
72
  end
49
73
  end
50
74
  end
@@ -55,6 +55,20 @@ class Decimal256ArrayBuilderTest < Test::Unit::TestCase
55
55
  assert_equal(BigDecimal("10.1"),
56
56
  array[0])
57
57
  end
58
+
59
+ test("BigDecimal::NAN") do
60
+ message = "can't use NaN as an Arrow::Decimal256Array value"
61
+ assert_raise(FloatDomainError.new(message)) do
62
+ @builder.append_value(BigDecimal::NAN)
63
+ end
64
+ end
65
+
66
+ test("BigDecimal::INFINITY") do
67
+ message = "can't use Infinity as an Arrow::Decimal256Array value"
68
+ assert_raise(FloatDomainError.new(message)) do
69
+ @builder.append_value(BigDecimal::INFINITY)
70
+ end
71
+ end
58
72
  end
59
73
 
60
74
  sub_test_case("#append_values") do
@@ -18,19 +18,22 @@
18
18
  class Decimal256ArrayTest < Test::Unit::TestCase
19
19
  sub_test_case(".new") do
20
20
  test("build") do
21
- data_type = Arrow::Decimal256DataType.new(3, 1)
22
21
  values = [
23
22
  10.1,
24
23
  nil,
25
24
  "10.1",
26
25
  BigDecimal("10.1"),
26
+ BigDecimal("1.11"),
27
+ BigDecimal("1"),
27
28
  ]
28
- array = Arrow::Decimal256Array.new(data_type, values)
29
+ array = Arrow::Decimal256Array.new({precision: 3, scale: 1}, values)
29
30
  assert_equal([
30
31
  BigDecimal("10.1"),
31
32
  nil,
32
33
  BigDecimal("10.1"),
33
34
  BigDecimal("10.1"),
35
+ BigDecimal("1.1"),
36
+ BigDecimal("1"),
34
37
  ],
35
38
  array.to_a)
36
39
  end
@@ -28,9 +28,21 @@ class Decimal256Test < Test::Unit::TestCase
28
28
  end
29
29
  end
30
30
 
31
+ test("String") do
32
+ assert do
33
+ @decimal256 == "10.1"
34
+ end
35
+ end
36
+
37
+ test("Float") do
38
+ assert do
39
+ @decimal256 == 10.1
40
+ end
41
+ end
42
+
31
43
  test("not Arrow::Decimal256") do
32
44
  assert do
33
- not (@decimal256 == 10.1)
45
+ not (@decimal256 == :"10.1")
34
46
  end
35
47
  end
36
48
  end
@@ -42,9 +54,21 @@ class Decimal256Test < Test::Unit::TestCase
42
54
  end
43
55
  end
44
56
 
57
+ test("String") do
58
+ assert do
59
+ not (@decimal256 != "10.1")
60
+ end
61
+ end
62
+
63
+ test("Float") do
64
+ assert do
65
+ not (@decimal256 != 10.1)
66
+ end
67
+ end
68
+
45
69
  test("not Arrow::Decimal256") do
46
70
  assert do
47
- @decimal256 != 10.1
71
+ @decimal256 != :"10.1"
48
72
  end
49
73
  end
50
74
  end
data/test/test-field.rb CHANGED
@@ -22,6 +22,13 @@ class FieldTest < Test::Unit::TestCase
22
22
  Arrow::Field.new("visible", Arrow::BooleanDataType.new).to_s)
23
23
  end
24
24
 
25
+ test("String, Arrow::DataType, Boolean") do
26
+ assert_equal("visible: bool not null",
27
+ Arrow::Field.new("visible",
28
+ Arrow::BooleanDataType.new,
29
+ false).to_s)
30
+ end
31
+
25
32
  test("Symbol, Arrow::DataType") do
26
33
  assert_equal("visible: bool",
27
34
  Arrow::Field.new(:visible, Arrow::BooleanDataType.new).to_s)
@@ -37,6 +44,18 @@ class FieldTest < Test::Unit::TestCase
37
44
  Arrow::Field.new(:visible, type: :boolean).to_s)
38
45
  end
39
46
 
47
+ test("String, Hash (:nullable)") do
48
+ assert_equal("visible: bool not null",
49
+ Arrow::Field.new(:visible,
50
+ type: :boolean,
51
+ nullable: false).to_s)
52
+ end
53
+
54
+ test("String, Hash, Boolean)") do
55
+ assert_equal("visible: bool not null",
56
+ Arrow::Field.new(:visible, {type: :boolean}, false).to_s)
57
+ end
58
+
40
59
  test("description: String") do
41
60
  assert_equal("visible: bool",
42
61
  Arrow::Field.new(name: "visible",
@@ -55,6 +74,13 @@ class FieldTest < Test::Unit::TestCase
55
74
  type: :boolean).to_s)
56
75
  end
57
76
 
77
+ test("description: nullable") do
78
+ assert_equal("visible: bool not null",
79
+ Arrow::Field.new(name: :visible,
80
+ data_type: :boolean,
81
+ nullable: false).to_s)
82
+ end
83
+
58
84
  test("Hash: shortcut: additional") do
59
85
  description = {
60
86
  name: :tags,
@@ -276,6 +276,36 @@ module ValuesDictionaryArrayTests
276
276
  target = build(Arrow::Decimal256Array.new(data_type, values))
277
277
  assert_equal(values, target.values)
278
278
  end
279
+
280
+ def test_month_interval
281
+ values = [
282
+ 1,
283
+ nil,
284
+ 12,
285
+ ]
286
+ target = build(Arrow::MonthIntervalArray.new(values))
287
+ assert_equal(values, target.values)
288
+ end
289
+
290
+ def test_day_time_interval
291
+ values = [
292
+ {day: 1, millisecond: 100},
293
+ nil,
294
+ {day: 2, millisecond: 300},
295
+ ]
296
+ target = build(Arrow::DayTimeIntervalArray.new(values))
297
+ assert_equal(values, target.values)
298
+ end
299
+
300
+ def test_month_day_nano_interval
301
+ values = [
302
+ {month: 1, day: 1, nanosecond: 100},
303
+ nil,
304
+ {month: 2, day: 3, nanosecond: 400},
305
+ ]
306
+ target = build(Arrow::MonthDayNanoIntervalArray.new(values))
307
+ assert_equal(values, target.values)
308
+ end
279
309
  end
280
310
 
281
311
  class ValuesArrayDictionaryArrayTest < Test::Unit::TestCase
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: red-arrow
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.0
4
+ version: 9.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Apache Arrow Developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-07 00:00:00.000000000 Z
11
+ date: 2022-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bigdecimal
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.3
19
+ version: 3.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.3
26
+ version: 3.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: extpp
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -109,6 +109,7 @@ files:
109
109
  - lib/arrow/aggregate-node-options.rb
110
110
  - lib/arrow/aggregation.rb
111
111
  - lib/arrow/array-builder.rb
112
+ - lib/arrow/array-computable.rb
112
113
  - lib/arrow/array.rb
113
114
  - lib/arrow/bigdecimal-extension.rb
114
115
  - lib/arrow/binary-dictionary-array-builder.rb
@@ -179,6 +180,7 @@ files:
179
180
  - lib/arrow/sort-options.rb
180
181
  - lib/arrow/source-node-options.rb
181
182
  - lib/arrow/sparse-union-data-type.rb
183
+ - lib/arrow/string-array-builder.rb
182
184
  - lib/arrow/string-dictionary-array-builder.rb
183
185
  - lib/arrow/struct-array-builder.rb
184
186
  - lib/arrow/struct-array.rb
@@ -192,6 +194,7 @@ files:
192
194
  - lib/arrow/table-table-formatter.rb
193
195
  - lib/arrow/table.rb
194
196
  - lib/arrow/tensor.rb
197
+ - lib/arrow/time-unit.rb
195
198
  - lib/arrow/time.rb
196
199
  - lib/arrow/time32-array-builder.rb
197
200
  - lib/arrow/time32-array.rb
@@ -219,6 +222,7 @@ files:
219
222
  - test/helper/omittable.rb
220
223
  - test/raw-records/test-basic-arrays.rb
221
224
  - test/raw-records/test-dense-union-array.rb
225
+ - test/raw-records/test-dictionary-array.rb
222
226
  - test/raw-records/test-list-array.rb
223
227
  - test/raw-records/test-map-array.rb
224
228
  - test/raw-records/test-multiple-columns.rb
@@ -303,7 +307,7 @@ homepage: https://arrow.apache.org/
303
307
  licenses:
304
308
  - Apache-2.0
305
309
  metadata:
306
- msys2_mingw_dependencies: arrow>=8.0.0
310
+ msys2_mingw_dependencies: arrow>=9.0.0
307
311
  post_install_message:
308
312
  rdoc_options: []
309
313
  require_paths:
@@ -319,7 +323,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
319
323
  - !ruby/object:Gem::Version
320
324
  version: '0'
321
325
  requirements: []
322
- rubygems_version: 3.4.0.dev
326
+ rubygems_version: 3.3.15
323
327
  signing_key:
324
328
  specification_version: 4
325
329
  summary: Red Arrow is the Ruby bindings of Apache Arrow
@@ -338,6 +342,7 @@ test_files:
338
342
  - test/helper.rb
339
343
  - test/raw-records/test-basic-arrays.rb
340
344
  - test/raw-records/test-dense-union-array.rb
345
+ - test/raw-records/test-dictionary-array.rb
341
346
  - test/raw-records/test-list-array.rb
342
347
  - test/raw-records/test-map-array.rb
343
348
  - test/raw-records/test-multiple-columns.rb