red-arrow-activerecord 0.1.0 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5ac5974438fd59eeab35b60221680f207c80acfc
4
- data.tar.gz: 3bac786c5c9058ad3fcac6bbdaff8e6b3f2ff731
2
+ SHA256:
3
+ metadata.gz: 40f485293bb04645002b8b113c077728fc300c5a292ce3d85d26bf703b09845c
4
+ data.tar.gz: 2139a0c5b8a850f943060d69b083d2604c83366aa709607884cc21154d6cb62f
5
5
  SHA512:
6
- metadata.gz: c5c20bb8254c395ea9eafafcf9996e7dac7df8110c49685211fec1edecd82299f2de96c20d67f0f62c339e5e153c255be8e1e09349413891f0fc327422c2bb5d
7
- data.tar.gz: e39eb1ea4ec0914dc0360b81c81b0b89ec9c848b2eafd3151574bf442795c24c138387fc91248c3df68ebdff823cd4504bb4165ac98b9ee203dfd2a10701094b
6
+ metadata.gz: de3dfa57565917e173b24c9bdcba48dd8d6f285439c096e4e6853dd01252c5bd5002874fee28a054c0c2232f04e36548d16410145728fe9759a20e44fe372ff9
7
+ data.tar.gz: fb52b67b4f2ff43d5bbd01acd08edc934eb036d116a8e46f250988f72a0b1452884a944c0c17c9b5f7ff87d9f6e3ed267b67d630116399c6645bad2ff7a9171f
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # README
2
2
 
3
3
  ## Name
4
- Red ActiveRecord
4
+
5
+ Red Arrow Active Record
5
6
 
6
7
  ## Usage
7
8
 
data/Rakefile CHANGED
@@ -12,7 +12,17 @@ helper.install
12
12
 
13
13
  desc "Run tests"
14
14
  task :test do
15
- ruby("test/run-test.rb")
15
+ ruby("test/run.rb")
16
16
  end
17
17
 
18
18
  task default: :test
19
+
20
+ release_task = Rake.application["release"]
21
+ # We use Trusted Publishing.
22
+ release_task.prerequisites.delete("build")
23
+ release_task.prerequisites.delete("release:rubygem_push")
24
+ release_task_comment = release_task.comment
25
+ if release_task_comment
26
+ release_task.clear_comments
27
+ release_task.comment = release_task_comment.gsub(/ and build.*$/, "")
28
+ end
data/doc/text/news.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # News
2
2
 
3
+ ## 0.1.2 - 2026-05-22
4
+
5
+ ### Improvements
6
+
7
+ * Added support for one column case.
8
+
9
+ ## 0.1.1 - 2019-02-02
10
+
11
+ ### Improvements
12
+
13
+ * Suppressed a warning.
14
+ [GitHub#3][Patch by Yasuo Honda]
15
+
16
+ * Changed to use Red Arrow 0.12.0 or later.
17
+
18
+ ### Thanks
19
+
20
+ * Yasuo Honda
21
+
3
22
  ## 0.1.0 - 2018-02-05
4
23
 
5
24
  Initial release!!!
@@ -7,34 +7,29 @@ module ArrowActiveRecord
7
7
  target_column_names = column_names if select_values.empty?
8
8
 
9
9
  fields = []
10
- data_types = []
11
10
  target_column_names.each do |name|
12
11
  name = name.to_s
13
12
  target_column = columns.find do |column|
14
13
  column.name == name
15
14
  end
16
- arrow_data_type = extract_arrow_data_type(target_column)
17
- fields << Arrow::Field.new(name, arrow_data_type)
18
- data_types << arrow_data_type
15
+ fields << {name: name, data_type: extract_arrow_data_type(target_column)}
19
16
  end
20
17
  schema = Arrow::Schema.new(fields)
21
18
 
22
- arrow_array_batches = data_types.collect do
23
- []
24
- end
19
+ record_batches = []
20
+ record_batch_builder = Arrow::RecordBatchBuilder.new(schema)
25
21
  in_batches(of: batch_size).each do |relation|
26
- column_values_set = relation.pluck(*target_column_names).transpose
27
- data_types.each_with_index do |data_type, i|
28
- column_values = column_values_set[i]
29
- arrow_array_batches[i] << build_arrow_array(column_values, data_type)
22
+ records = relation.pluck(*target_column_names)
23
+ if target_column_names.size == 1
24
+ # [1, 2, 3] ->
25
+ # [[1], [2], [3]]
26
+ record_batch_builder.append(records.collect {|value| [value]})
27
+ else
28
+ record_batch_builder.append(records)
30
29
  end
30
+ record_batches << record_batch_builder.flush
31
31
  end
32
- columns = fields.collect.with_index do |field, i|
33
- chunked_array = Arrow::ChunkedArray.new(arrow_array_batches[i])
34
- Arrow::Column.new(field, chunked_array)
35
- end
36
-
37
- Arrow::Table.new(schema, columns)
32
+ Arrow::Table.new(schema, record_batches)
38
33
  end
39
34
 
40
35
  private
@@ -49,56 +44,30 @@ module ArrowActiveRecord
49
44
  end
50
45
  case type
51
46
  when :bigint
52
- Arrow::Int64DataType.new
47
+ :int64
53
48
  when :binary
54
- Arrow::BinaryDataType.new
49
+ :binary
55
50
  when :boolean
56
- Arrow::BooleanDataType.new
51
+ :boolean
57
52
  when :date
58
- Arrow::Date32DataType.new
53
+ :date32
59
54
  when :datetime
60
- Arrow::TimestampDataType.new(:nano)
61
- # when :decimal
55
+ [:timestamp, :nano]
56
+ when :decimal
57
+ [:decimal128, type.precision, type.scale]
62
58
  when :float
63
- Arrow::FloatDataType.new
59
+ :float
64
60
  when :integer
65
- Arrow::Int32DataType.new
61
+ :int32
66
62
  # when :json
67
63
  when :string, :text
68
- Arrow::StringDataType.new
64
+ :string
69
65
  when :time, :timestamp
70
- Arrow::TimestampDataType.new(:nano)
71
- when :timestamp
72
- Arrow::TimestampDataType.new(:nano)
66
+ [:timestamp, :nano]
73
67
  else
74
68
  message = "unsupported data type: #{type}: #{column.inspect}"
75
69
  raise NotImplementedError, message
76
70
  end
77
71
  end
78
-
79
- def build_arrow_array(column_values, data_type)
80
- case data_type
81
- when Arrow::Int64DataType
82
- Arrow::Int64Array.new(column_values)
83
- when Arrow::BinaryDataType
84
- Arrow::BinaryArray.new(column_values)
85
- when Arrow::BooleanDataType
86
- Arrow::BooleanArray.new(column_values)
87
- when Arrow::Date32DataType
88
- Arrow::Date32Array.new(column_values)
89
- when Arrow::TimestampDataType
90
- builder = Arrow::TimestampArrayBuilder.new(data_type)
91
- builder.build(column_values)
92
- when Arrow::FloatDataType
93
- Arrow::FloatArray.new(column_values)
94
- when Arrow::Int32DataType
95
- Arrow::Int32Array.new(column_values)
96
- when Arrow::StringDataType
97
- Arrow::StringArray.new(column_values)
98
- else
99
- message = "unsupported data type: #{data_type.inspect}"
100
- raise NotImplementedError, message
101
- end
102
- end
103
72
  end
104
73
  end
@@ -1,3 +1,3 @@
1
1
  module ArrowActiverecord
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.2'
3
3
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: red-arrow-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - hatappi
8
8
  - Kouhei Sutou
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2018-02-04 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
@@ -31,14 +30,14 @@ dependencies:
31
30
  requirements:
32
31
  - - ">="
33
32
  - !ruby/object:Gem::Version
34
- version: '0'
33
+ version: 0.12.0
35
34
  type: :runtime
36
35
  prerelease: false
37
36
  version_requirements: !ruby/object:Gem::Requirement
38
37
  requirements:
39
38
  - - ">="
40
39
  - !ruby/object:Gem::Version
41
- version: '0'
40
+ version: 0.12.0
42
41
  - !ruby/object:Gem::Dependency
43
42
  name: bundler
44
43
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +112,6 @@ homepage: https://github.com/red-data-tools/red-arrow-activerecord
113
112
  licenses:
114
113
  - MIT
115
114
  metadata: {}
116
- post_install_message:
117
115
  rdoc_options: []
118
116
  require_paths:
119
117
  - lib
@@ -128,9 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
126
  - !ruby/object:Gem::Version
129
127
  version: '0'
130
128
  requirements: []
131
- rubyforge_project:
132
- rubygems_version: 2.5.2.2
133
- signing_key:
129
+ rubygems_version: 4.0.10
134
130
  specification_version: 4
135
131
  summary: A library that provides conversion method between Apache Arrow and ActiveRecord
136
132
  test_files: []