activerecord-import 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
activerecord-import is a library for bulk inserting data using ActiveRecord.
|
4
4
|
|
5
|
+
### Rails 3.1.x and higher
|
6
|
+
|
7
|
+
Use the latest activerecord-import.
|
8
|
+
|
9
|
+
### Rails 3.0.x up to, but not including 3.1
|
10
|
+
|
11
|
+
Use activerecord-import 0.2.11. As of activerecord-import 0.3.0 we are relying on functionality that was introduced in Rails 3.1. Since Rails 3.0.x is no longer a supported version of Rails we have decided to drop support as well.
|
12
|
+
|
13
|
+
### For More Information
|
14
|
+
|
5
15
|
For more information on activerecord-import please see its wiki: https://github.com/zdennis/activerecord-import/wiki
|
6
16
|
|
7
17
|
# License
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
@@ -8,7 +8,7 @@ module ActiveRecord::Import::AbstractAdapter
|
|
8
8
|
arr, current_arr_values_size, current_size = [], 0, 0
|
9
9
|
values.each_with_index do |val,i|
|
10
10
|
comma_bytes = arr.size
|
11
|
-
sql_size_thus_far = sql_size + current_size + val.
|
11
|
+
sql_size_thus_far = sql_size + current_size + val.bytesize + comma_bytes
|
12
12
|
if NO_MAX_PACKET == max_bytes or sql_size_thus_far <= max_bytes
|
13
13
|
current_size += val.bytesize
|
14
14
|
arr << val
|
@@ -1,4 +1,18 @@
|
|
1
1
|
module ActiveRecord::Import::SQLite3Adapter
|
2
|
+
include ActiveRecord::Import::ImportSupport
|
3
|
+
|
4
|
+
# Override our conformance to ActiveRecord::Import::ImportSupport interface
|
5
|
+
# to ensure that we only support import in supported version of SQLite.
|
6
|
+
# Which INSERT statements with multiple value sets was introduced in 3.2.11.
|
7
|
+
def supports_import?(current_version=self.sqlite_version)
|
8
|
+
minimum_supported_version = "3.2.11"
|
9
|
+
if current_version >= minimum_supported_version
|
10
|
+
true
|
11
|
+
else
|
12
|
+
false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
2
16
|
def next_value_for_sequence(sequence_name)
|
3
17
|
%{nextval('#{sequence_name}')}
|
4
18
|
end
|
@@ -43,8 +43,8 @@ class ActiveRecord::Base
|
|
43
43
|
|
44
44
|
# Returns true if the current database connection adapter
|
45
45
|
# supports import functionality, otherwise returns false.
|
46
|
-
def supports_import?
|
47
|
-
connection.supports_import?
|
46
|
+
def supports_import?(*args)
|
47
|
+
connection.supports_import?(*args)
|
48
48
|
rescue NoMethodError
|
49
49
|
false
|
50
50
|
end
|
@@ -205,7 +205,7 @@ class ActiveRecord::Base
|
|
205
205
|
# Force the primary key col into the insert if it's not
|
206
206
|
# on the list and we are using a sequence and stuff a nil
|
207
207
|
# value for it into each row so the sequencer will fire later
|
208
|
-
if !column_names.include?(primary_key) &&
|
208
|
+
if !column_names.include?(primary_key) && connection.prefetch_primary_key? && sequence_name
|
209
209
|
column_names << primary_key
|
210
210
|
array_of_attributes.each { |a| a << nil }
|
211
211
|
end
|
@@ -276,11 +276,15 @@ class ActiveRecord::Base
|
|
276
276
|
# information on +column_names+, +array_of_attributes_ and
|
277
277
|
# +options+.
|
278
278
|
def import_without_validations_or_callbacks( column_names, array_of_attributes, options={} )
|
279
|
+
column_names = column_names.map(&:to_sym)
|
279
280
|
scope_columns, scope_values = scope_attributes.to_a.transpose
|
280
281
|
|
281
282
|
unless scope_columns.blank?
|
282
|
-
|
283
|
-
|
283
|
+
scope_columns.zip(scope_values).each do |name, value|
|
284
|
+
next if column_names.include?(name.to_sym)
|
285
|
+
column_names << name
|
286
|
+
array_of_attributes.each { |attrs| attrs << value }
|
287
|
+
end
|
284
288
|
end
|
285
289
|
|
286
290
|
columns = column_names.each_with_index.map do |name, i|
|
@@ -303,7 +307,7 @@ class ActiveRecord::Base
|
|
303
307
|
else
|
304
308
|
# generate the sql
|
305
309
|
post_sql_statements = connection.post_sql_statements( quoted_table_name, options )
|
306
|
-
|
310
|
+
|
307
311
|
# perform the inserts
|
308
312
|
number_inserted = connection.insert_many( [ insert_sql, post_sql_statements ].flatten,
|
309
313
|
values_sql,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-import
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -120,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
120
120
|
version: '0'
|
121
121
|
segments:
|
122
122
|
- 0
|
123
|
-
hash: -
|
123
|
+
hash: -1608822567820744483
|
124
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
125
|
none: false
|
126
126
|
requirements:
|