activerecord-import 1.0.3

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 (123) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +32 -0
  3. data/.rubocop.yml +49 -0
  4. data/.rubocop_todo.yml +36 -0
  5. data/.travis.yml +74 -0
  6. data/Brewfile +3 -0
  7. data/CHANGELOG.md +430 -0
  8. data/Gemfile +59 -0
  9. data/LICENSE +56 -0
  10. data/README.markdown +619 -0
  11. data/Rakefile +68 -0
  12. data/activerecord-import.gemspec +23 -0
  13. data/benchmarks/README +32 -0
  14. data/benchmarks/benchmark.rb +68 -0
  15. data/benchmarks/lib/base.rb +138 -0
  16. data/benchmarks/lib/cli_parser.rb +107 -0
  17. data/benchmarks/lib/float.rb +15 -0
  18. data/benchmarks/lib/mysql2_benchmark.rb +19 -0
  19. data/benchmarks/lib/output_to_csv.rb +19 -0
  20. data/benchmarks/lib/output_to_html.rb +64 -0
  21. data/benchmarks/models/test_innodb.rb +3 -0
  22. data/benchmarks/models/test_memory.rb +3 -0
  23. data/benchmarks/models/test_myisam.rb +3 -0
  24. data/benchmarks/schema/mysql_schema.rb +16 -0
  25. data/gemfiles/3.2.gemfile +2 -0
  26. data/gemfiles/4.0.gemfile +2 -0
  27. data/gemfiles/4.1.gemfile +2 -0
  28. data/gemfiles/4.2.gemfile +2 -0
  29. data/gemfiles/5.0.gemfile +2 -0
  30. data/gemfiles/5.1.gemfile +2 -0
  31. data/gemfiles/5.2.gemfile +2 -0
  32. data/gemfiles/6.0.gemfile +1 -0
  33. data/gemfiles/6.1.gemfile +1 -0
  34. data/lib/activerecord-import.rb +6 -0
  35. data/lib/activerecord-import/active_record/adapters/abstract_adapter.rb +9 -0
  36. data/lib/activerecord-import/active_record/adapters/jdbcmysql_adapter.rb +6 -0
  37. data/lib/activerecord-import/active_record/adapters/jdbcpostgresql_adapter.rb +6 -0
  38. data/lib/activerecord-import/active_record/adapters/jdbcsqlite3_adapter.rb +6 -0
  39. data/lib/activerecord-import/active_record/adapters/mysql2_adapter.rb +6 -0
  40. data/lib/activerecord-import/active_record/adapters/postgresql_adapter.rb +6 -0
  41. data/lib/activerecord-import/active_record/adapters/seamless_database_pool_adapter.rb +7 -0
  42. data/lib/activerecord-import/active_record/adapters/sqlite3_adapter.rb +6 -0
  43. data/lib/activerecord-import/adapters/abstract_adapter.rb +66 -0
  44. data/lib/activerecord-import/adapters/em_mysql2_adapter.rb +5 -0
  45. data/lib/activerecord-import/adapters/mysql2_adapter.rb +5 -0
  46. data/lib/activerecord-import/adapters/mysql_adapter.rb +129 -0
  47. data/lib/activerecord-import/adapters/postgresql_adapter.rb +217 -0
  48. data/lib/activerecord-import/adapters/sqlite3_adapter.rb +180 -0
  49. data/lib/activerecord-import/base.rb +43 -0
  50. data/lib/activerecord-import/import.rb +1059 -0
  51. data/lib/activerecord-import/mysql2.rb +7 -0
  52. data/lib/activerecord-import/postgresql.rb +7 -0
  53. data/lib/activerecord-import/sqlite3.rb +7 -0
  54. data/lib/activerecord-import/synchronize.rb +66 -0
  55. data/lib/activerecord-import/value_sets_parser.rb +77 -0
  56. data/lib/activerecord-import/version.rb +5 -0
  57. data/test/adapters/jdbcmysql.rb +1 -0
  58. data/test/adapters/jdbcpostgresql.rb +1 -0
  59. data/test/adapters/jdbcsqlite3.rb +1 -0
  60. data/test/adapters/makara_postgis.rb +1 -0
  61. data/test/adapters/mysql2.rb +1 -0
  62. data/test/adapters/mysql2_makara.rb +1 -0
  63. data/test/adapters/mysql2spatial.rb +1 -0
  64. data/test/adapters/postgis.rb +1 -0
  65. data/test/adapters/postgresql.rb +1 -0
  66. data/test/adapters/postgresql_makara.rb +1 -0
  67. data/test/adapters/seamless_database_pool.rb +1 -0
  68. data/test/adapters/spatialite.rb +1 -0
  69. data/test/adapters/sqlite3.rb +1 -0
  70. data/test/database.yml.sample +52 -0
  71. data/test/import_test.rb +903 -0
  72. data/test/jdbcmysql/import_test.rb +5 -0
  73. data/test/jdbcpostgresql/import_test.rb +4 -0
  74. data/test/jdbcsqlite3/import_test.rb +4 -0
  75. data/test/makara_postgis/import_test.rb +8 -0
  76. data/test/models/account.rb +3 -0
  77. data/test/models/alarm.rb +2 -0
  78. data/test/models/bike_maker.rb +7 -0
  79. data/test/models/book.rb +9 -0
  80. data/test/models/car.rb +3 -0
  81. data/test/models/chapter.rb +4 -0
  82. data/test/models/dictionary.rb +4 -0
  83. data/test/models/discount.rb +3 -0
  84. data/test/models/end_note.rb +4 -0
  85. data/test/models/group.rb +3 -0
  86. data/test/models/promotion.rb +3 -0
  87. data/test/models/question.rb +3 -0
  88. data/test/models/rule.rb +3 -0
  89. data/test/models/tag.rb +4 -0
  90. data/test/models/topic.rb +23 -0
  91. data/test/models/user.rb +3 -0
  92. data/test/models/user_token.rb +4 -0
  93. data/test/models/vendor.rb +7 -0
  94. data/test/models/widget.rb +24 -0
  95. data/test/mysql2/import_test.rb +5 -0
  96. data/test/mysql2_makara/import_test.rb +6 -0
  97. data/test/mysqlspatial2/import_test.rb +6 -0
  98. data/test/postgis/import_test.rb +8 -0
  99. data/test/postgresql/import_test.rb +4 -0
  100. data/test/schema/generic_schema.rb +194 -0
  101. data/test/schema/jdbcpostgresql_schema.rb +1 -0
  102. data/test/schema/mysql2_schema.rb +19 -0
  103. data/test/schema/postgis_schema.rb +1 -0
  104. data/test/schema/postgresql_schema.rb +47 -0
  105. data/test/schema/sqlite3_schema.rb +13 -0
  106. data/test/schema/version.rb +10 -0
  107. data/test/sqlite3/import_test.rb +4 -0
  108. data/test/support/active_support/test_case_extensions.rb +75 -0
  109. data/test/support/assertions.rb +73 -0
  110. data/test/support/factories.rb +64 -0
  111. data/test/support/generate.rb +29 -0
  112. data/test/support/mysql/import_examples.rb +98 -0
  113. data/test/support/postgresql/import_examples.rb +563 -0
  114. data/test/support/shared_examples/on_duplicate_key_ignore.rb +43 -0
  115. data/test/support/shared_examples/on_duplicate_key_update.rb +368 -0
  116. data/test/support/shared_examples/recursive_import.rb +216 -0
  117. data/test/support/sqlite3/import_examples.rb +231 -0
  118. data/test/synchronize_test.rb +41 -0
  119. data/test/test_helper.rb +75 -0
  120. data/test/travis/database.yml +66 -0
  121. data/test/value_sets_bytes_parser_test.rb +104 -0
  122. data/test/value_sets_records_parser_test.rb +32 -0
  123. metadata +259 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b9bf4dc4ecf93b15a493cc34134158d7df3d6391b2e6c7fafbe79b630df48ea3
4
+ data.tar.gz: ab5f7f4707598308dc9a2e7d4be5816f1d5674f63cea58e48b29f6ed87fa059a
5
+ SHA512:
6
+ metadata.gz: 05c4ad6281d6f0f574ee30cffed790763fb393fdf906ecc20bb8b4504f640ef9734ea1a43284f9821e543f8900aa3023bf66bcf455afcb2419e15828da618a05
7
+ data.tar.gz: cdc67be0552c3b32a980598a784964df98549a27d428b89ef3ed7385acb4c75681946e010e714770ac81ff076088c0293e26bc04bbc2e15aecd42bf86c3aecc8
@@ -0,0 +1,32 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+ *.gem
21
+ *.lock
22
+
23
+ ## PROJECT::SPECIFIC
24
+ log/*.log
25
+ test.db
26
+ test/database.yml
27
+
28
+ .ruby-*
29
+ .bundle/
30
+ .redcar/
31
+ .rvmrc
32
+ docsite/
@@ -0,0 +1,49 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ Lint/EndAlignment:
4
+ AlignWith: variable
5
+
6
+ Metrics/AbcSize:
7
+ Enabled: false
8
+
9
+ Metrics/ClassLength:
10
+ Enabled: false
11
+
12
+ Metrics/CyclomaticComplexity:
13
+ Enabled: false
14
+
15
+ Metrics/LineLength:
16
+ Enabled: false
17
+
18
+ Metrics/MethodLength:
19
+ Enabled: false
20
+
21
+ Metrics/ModuleLength:
22
+ Enabled: false
23
+
24
+ Metrics/PerceivedComplexity:
25
+ Enabled: false
26
+
27
+ Style/AlignParameters:
28
+ EnforcedStyle: with_fixed_indentation
29
+
30
+ Style/ClassAndModuleChildren:
31
+ Enabled: false
32
+
33
+ Style/Documentation:
34
+ Enabled: false
35
+
36
+ Style/ElseAlignment:
37
+ Enabled: false
38
+
39
+ Style/SpaceInsideParens:
40
+ Enabled: false
41
+
42
+ Style/SpecialGlobalVars:
43
+ Enabled: false
44
+
45
+ Style/StringLiterals:
46
+ Enabled: false
47
+
48
+ Style/TrailingCommaInLiteral:
49
+ Enabled: false
@@ -0,0 +1,36 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2016-03-17 18:14:55 -0700 using RuboCop version 0.38.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 2
10
+ Lint/HandleExceptions:
11
+ Exclude:
12
+ - 'lib/activerecord-import/base.rb'
13
+ - 'test/import_test.rb'
14
+
15
+ # Offense count: 2
16
+ Lint/RescueException:
17
+ Exclude:
18
+ - 'benchmarks/lib/cli_parser.rb'
19
+ - 'test/import_test.rb'
20
+
21
+ # Offense count: 4
22
+ # Cop supports --auto-correct.
23
+ # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods.
24
+ Lint/UnusedMethodArgument:
25
+ Exclude:
26
+ - 'lib/activerecord-import/adapters/postgresql_adapter.rb'
27
+ - 'lib/activerecord-import/import.rb'
28
+
29
+ # Offense count: 2
30
+ # Cop supports --auto-correct.
31
+ # Configuration parameters: Keywords.
32
+ # Keywords: TODO, FIXME, OPTIMIZE, HACK, REVIEW
33
+ Style/CommentAnnotation:
34
+ Exclude:
35
+ - 'benchmarks/lib/cli_parser.rb'
36
+ - 'lib/activerecord-import/import.rb'
@@ -0,0 +1,74 @@
1
+ language: ruby
2
+ cache: bundler
3
+ rvm:
4
+ - 2.5.5
5
+
6
+ env:
7
+ global:
8
+ # https://github.com/discourse/discourse/blob/master/.travis.yml
9
+ - RUBY_GC_MALLOC_LIMIT=50000000
10
+ matrix:
11
+ - AR_VERSION=5.1
12
+ - AR_VERSION=5.2
13
+ - AR_VERSION=6.0
14
+
15
+ matrix:
16
+ include:
17
+ - rvm: 2.3.8
18
+ env: AR_VERSION=3.2
19
+ - rvm: 2.3.8
20
+ env: AR_VERSION=4.0
21
+ - rvm: 2.3.8
22
+ env: AR_VERSION=4.1
23
+ - rvm: 2.3.8
24
+ env: AR_VERSION=4.2
25
+ - rvm: 2.3.8
26
+ env: AR_VERSION=5.0
27
+
28
+ fast_finish: true
29
+
30
+ addons:
31
+ postgresql: "9.5"
32
+ apt:
33
+ sources:
34
+ - travis-ci/sqlite3
35
+ - mysql-5.7-trusty
36
+ packages:
37
+ - sqlite3
38
+ - mysql-server
39
+ - mysql-client
40
+ - postgresql-9.5-postgis-2.4
41
+
42
+ before_install:
43
+ - gem update --system
44
+ - sudo mysql -e "use mysql; update user set authentication_string=PASSWORD('') where User='root'; update user set plugin='mysql_native_password';FLUSH PRIVILEGES;"
45
+ - sudo mysql_upgrade
46
+ - sudo service mysql restart
47
+
48
+ before_script:
49
+ - mysql -e 'create database activerecord_import_test;'
50
+ - psql -c 'create database activerecord_import_test;' -U postgres
51
+ - psql activerecord_import_test -c 'create extension if not exists hstore;' -U postgres
52
+ - psql -c 'create extension if not exists postgis;' -U postgres
53
+ - psql -c 'create extension if not exists "uuid-ossp";' -U postgres
54
+ - cp test/travis/database.yml test/database.yml
55
+
56
+ script:
57
+ - bundle exec rake test:mysql2
58
+ - bundle exec rake test:mysql2_makara
59
+ - bundle exec rake test:mysql2spatial
60
+ - bundle exec rake test:postgis
61
+ - bundle exec rake test:postgresql
62
+ - bundle exec rake test:postgresql_makara
63
+ - bundle exec rake test:seamless_database_pool
64
+ - bundle exec rake test:spatialite
65
+ - bundle exec rake test:sqlite3
66
+ - bundle exec rubocop
67
+
68
+ dist: xenial
69
+
70
+ services:
71
+ - mysql
72
+ - postgresql
73
+
74
+ sudo: required
@@ -0,0 +1,3 @@
1
+ brew "mysql"
2
+ brew "postgresql"
3
+ brew "sqlite"
@@ -0,0 +1,430 @@
1
+ ## Changes in 1.0.3
2
+
3
+ ### New Features
4
+
5
+ * Add support for ActiveRecord 6.1.0.alpha. Thanks to @imtayadeway via
6
+ \#642.
7
+
8
+ ### Fixes
9
+
10
+ * Return an empty array for results instead of nil when importing empty
11
+ array. Thanks to @gyfis via \#636.
12
+
13
+ ## Changes in 1.0.2
14
+
15
+ ### New Features
16
+
17
+ * Add support for CockroachDB adapter. Thanks to @willie via \#605.
18
+ * Add support for ActiveRecord 6.0.0.rc1. Thanks to @madeindjs, @bill-filler,
19
+ @jkowens via \#619, \#623.
20
+
21
+ ### Fixes
22
+
23
+ * Fixes NoMethodError when attempting to use nil logger. Thanks to @MattMecel,
24
+ @khiav22357.
25
+ * Fix issue validating STI models. Thanks to @thejbsmith, @jkowens via
26
+ \#626.
27
+
28
+ ## Changes in 1.0.1
29
+
30
+ ### Fixes
31
+
32
+ * Raise an error with a helpful message if array of values exceeds the number of
33
+ columns for a table. Thanks to @golddranks via \#589.
34
+ * Properly check if model responds to import before creating alias.
35
+ Thanks to @jcw- via \#591.
36
+ * No longer pass :returning option to child associations on recursive
37
+ import. Thanks to @dmitriy-kiriyenko via \#595.
38
+ * Fix import issue for models with Postgresql json/jsonb fields. Thanks
39
+ to @stokarenko via \#594.
40
+ * Fix issue importing models with timestamps that contain timezone
41
+ information. Thaks to @dekaikiwi, @jkowens via \#598.
42
+ * Ignore :no_returning when using :recursive option. Thanks to @dgollahon, @jkowens
43
+ via \#599.
44
+
45
+ ## Changes in 1.0.0
46
+
47
+ ### New Features
48
+
49
+ * Move ActiveRecord::Dirty changes to previous_changes after import.
50
+ Thanks to @stokarenko via \#584.
51
+
52
+ ### Breaking Changes
53
+
54
+ * Previously :on_duplicate_key_update was enabled by default for MySQL.
55
+ The update timestamp columns (updated_at, updated_on) would be updated
56
+ on duplicate key. This was behavior is inconsistent with the other database
57
+ adapters and could also be considered surprising. Going forward it must
58
+ be explicitly enabled. See \#548.
59
+
60
+ ## Changes in 0.28.2
61
+
62
+ ### Fixes
63
+
64
+ * Fix issue where validations where not working in certain scenarios.
65
+ Thanks to @CASIXx1 via \#579.
66
+
67
+ ## Changes in 0.28.1
68
+
69
+ ### Fixes
70
+
71
+ * Fix issue where ActiveRecord presence validations were being mutated.
72
+ Limited custom presence validation to bulk imports.
73
+
74
+ ## Changes in 0.28.0
75
+
76
+ ### New Features
77
+
78
+ * Allow updated timestamps to be manually set.Thanks to @Rob117, @jkowens via \#570.
79
+
80
+ ### Fixes
81
+
82
+ * Fix validating presence of belongs_to associations. Existence
83
+ of the parent record is not validated, but the foreign key field
84
+ cannot be empty. Thanks to @Rob117, @jkowens via \#575.
85
+
86
+ ## Changes in 0.27.0
87
+
88
+ ### New Features
89
+
90
+ * Add "secret" option validate_uniqueness to enable uniqueness
91
+ validators when validating import. This is not a recommended
92
+ approach (See #228), but is being added back in for projects
93
+ that depended on this feature. Thanks to @jkowens via \#554.
94
+
95
+ ## Changes in 0.26.0
96
+
97
+ ### New Features
98
+
99
+ * Add on_duplicate_key_update for SQLite. Thanks to @jkowens via \#542.
100
+ * Add option to update all fields on_duplicate_key_update. Thanks to @aimerald, @jkowens via \#543.
101
+
102
+ ### Fixes
103
+
104
+ * Handle deeply frozen options hashes. Thanks to @jturkel via \#546.
105
+ * Switch from FactoryGirl to FactoryBot. Thanks to @koic via \#547.
106
+ * Allow import to work with ProxySQL. Thanks to @GregFarrell via \#550.
107
+
108
+ ## Changes in 0.25.0
109
+
110
+ ### New Features
111
+
112
+ * Add support for makara_postgis adapter. Thanks to @chadwilken via \#527.
113
+ * Skip validating presence of belongs_to associations. Thanks to @Sohair63, @naiyt, @jkowens via \#528.
114
+
115
+ ### Fixes
116
+
117
+ * Add missing require for ActiveSupport.on_load. Thanks to @onk via \#529.
118
+ * Support setting attribute values in before_validation callbacks.
119
+ Thanks to @SirRawlins, @jkowens via \#531.
120
+ * Ignore virtual columns. Thanks to @dbourguignon, @jkowens via \#530.
121
+
122
+ ## Changes in 0.24.0
123
+
124
+ ### Fixes
125
+
126
+ * Use the association primary key when importing. Thanks to @dpogue via \#512.
127
+ * Allow association ids to be updated. Thanks to @Aristat via \#515.
128
+
129
+ ## Changes in 0.23.0
130
+
131
+ ### New Features
132
+
133
+ * Rename `import` method to `bulk_import` and alias to `import`. Thanks
134
+ to @itay-grudev, @jkowens via \#498.
135
+ * Increment lock_version on duplicate key update. Thanks to @aimerald
136
+ via \#500.
137
+
138
+ ### Fixes
139
+
140
+ * Fix import_without_validations_or_callbacks exception if array is empty.
141
+ Thanks to @doloopwhile via \#508.
142
+
143
+ ## Changes in 0.22.0
144
+
145
+ ### New Features
146
+
147
+ * Add support for importing hashes thru a has many association. Thanks
148
+ to @jkowens via \#483.
149
+
150
+ ### Fixes
151
+
152
+ * Fix validation logic for recursive import. For those on Rails 5.0 and 5.1,
153
+ this change requires models with polymorphic associations to specify the `inverse_of`
154
+ argument (See issue #495). Thanks to @eric-simonton-sama, @jkowens via
155
+ \#489.
156
+
157
+ ## Changes in 0.21.0
158
+
159
+ ### New Features
160
+
161
+ * Allow SQL subqueries (objects that respond to .to_sql) to be passed as values. Thanks
162
+ to @jalada, @jkowens via \#471
163
+ * Raise an ArgumentError when importing an array of hashes if any of the
164
+ hash objects have different keys. Thanks to @mbell697 via \#465.
165
+
166
+ ### Fixes
167
+
168
+ * Fix issue loading incorrect foreign key value when syncing belongs_to
169
+ associations with custom foreign key columns. Thanks to @marcgreenstock, @jkowens via \#470.
170
+ * Fix issue importing models with polymorphic belongs_to associations.
171
+ Thanks to @zorab47, @jkowens via \#476.
172
+ * Fix issue importing STI models with ActiveRecord 4.0. Thanks to
173
+ @kazuki-st, @jkowens via \#478.
174
+
175
+ ## Changes in 0.20.2
176
+
177
+ ### Fixes
178
+
179
+ * Unscope model when synchronizing with database. Thanks to @indigoviolet via \#455.
180
+
181
+ ## Changes in 0.20.1
182
+
183
+ ### Fixes
184
+
185
+ * Prevent :on_duplicate_key_update args from being modified. Thanks to @joshuamcginnis, @jkowens via \#451.
186
+
187
+ ## Changes in 0.20.0
188
+
189
+ ### New Features
190
+
191
+ * Allow returning columns to be specified for PostgreSQL. Thanks to
192
+ @tjwp via \#433.
193
+
194
+ ### Fixes
195
+
196
+ * Fixes an issue when bypassing uniqueness validators. Thanks to @vmaxv via \#444.
197
+ * For AR < 4.2, prevent type casting for binary columns on Postgresql. Thanks to @mwalsher via \#446.
198
+ * Fix issue logging class name on import. Thanks to @sophylee, @jkowens via \#447.
199
+ * Copy belongs_to association id to foreign key column before importing. Thanks to @jkowens via \#448.
200
+ * Reset model instance on validate. Thanks to @vmaxv via \#449.
201
+
202
+ ## Changes in 0.19.1
203
+
204
+ ### Fixes
205
+
206
+ * Fix a regression where models weren't properly being marked clean. Thanks to @tjwp via \#434.
207
+ * Raise ActiveRecord::Import::ValueSetTooLargeError when a record being inserted exceeds the
208
+ `max_allowed_packet` for MySQL. Thanks to @saizai, @jkowens via \#437.
209
+ * Fix issue concatenating column names array with primary key. Thanks to @keeguon via \#440.
210
+
211
+ ## Changes in 0.19.0
212
+
213
+ ### New Features
214
+
215
+ * For PostgreSQL, add option to set WHERE condition in conflict_action. Thanks to
216
+ @Saidbek via \#423.
217
+
218
+ ### Fixes
219
+
220
+ * Fix issue importing saved records with serialized fields. Thanks to
221
+ @Andreis13, @jkowens via \#425.
222
+ * Fix issue importing records that have columns defined with default values
223
+ that are functions or expressions. Thanks to @Andreis13, @jkowens via \#428.
224
+
225
+ ## Changes in 0.18.3
226
+
227
+ ### Fixes
228
+
229
+ * Set models new_record attribute to false when importing with
230
+ :on_duplicate_key_ignore. Thanks to @nijikon, @jkowens via \#416.
231
+
232
+ ## Changes in 0.18.2
233
+
234
+ ### Fixes
235
+
236
+ * Enable custom validate callbacks when validating import. Thanks to @afn via \#410.
237
+ * Prevent wrong IDs being set on models when using :on_duplicate_key_ignore.
238
+ Thanks to @afn, @jkowens via \#412.
239
+
240
+ ## Changes in 0.18.1
241
+
242
+ ### Fixes
243
+
244
+ * Fix to enable validation callbacks (before_validation,
245
+ after_validation). Thanks to @sinsoku, @jkowens via \#406.
246
+
247
+ ## Changes in 0.18.0
248
+
249
+ ### New Features
250
+
251
+ * Uniqueness validation is bypassed when validating models since
252
+ it cannot be guaranteed if there are duplicates in a batch.
253
+ Thanks to @jkowens via \#301.
254
+ * Allow for custom timestamp columns. Thanks to @mojidabckuu, @jkowens
255
+ via \#401.
256
+
257
+ ### Fixes
258
+
259
+ * Fix ActiveRecord 5 issue coercing boolean values when serializing
260
+ for the database. Thanks to @rjrobinson, @jkowens via \#403.
261
+
262
+ ## Changes in 0.17.2
263
+
264
+ ### Fixes
265
+
266
+ * Fix issue where PostgreSQL cannot recognize columns if names
267
+ include mixed case characters. Thanks to @hugobgranja via \#379.
268
+ * Fix an issue for ActiveRecord 5 where serialized fields with
269
+ default values were not being typecast. Thanks to @whistlerbrk,
270
+ @jkowens via \#386.
271
+ * Add option :force_single_insert for MySQL to make sure a single
272
+ insert is attempted instead of performing multiple inserts based
273
+ on max_allowed_packet. Thanks to @mtparet via \#387.
274
+
275
+ ## Changes in 0.17.1
276
+
277
+ ### Fixes
278
+
279
+ * Along with setting id on models for adapters that support it,
280
+ add created_at and updated_at timestamps. Thanks to @jacob-carlborg
281
+ via \#364.
282
+ * Properly set returned ids when using composite_primary_keys.
283
+ Thanks to @guigs, @jkowens via \#371.
284
+
285
+ ## Changes in 0.17.0
286
+
287
+ ### New Features
288
+
289
+ * Add support for composite_primary_keys gem. Thanks to @jkowens
290
+ via \#350.
291
+ * Add support for importing an array of hashes. Thanks to @jkowens
292
+ via \#352.
293
+ * Add JDBC SQLite3 support. Thanks to @jkowens via \#356.
294
+
295
+ ### Fixes
296
+
297
+ * Remove support for SQLite recursive imports. See \#351.
298
+ * Improve import speed for Rails 5. Thanks to @ranchodeluxe, @jkowens
299
+ via \#359.
300
+
301
+ ## Changes in 0.16.2
302
+
303
+ ### Fixes
304
+
305
+ * Fixes issue clearing query cache on wrong connection when using
306
+ multiple databases. Thanks to @KentoMoriwaki via \#337
307
+ * Raises an ArgumentError on incorrect usage of nested arrays. Thanks
308
+ to @Nitrodist via \#340
309
+ * Fixes issue that prevented uuid primary keys from being set manually.
310
+ Thanks to @Dclusin-og, @jkowens via \#342
311
+
312
+ ## Changes in 0.16.1
313
+
314
+ ### Fixes
315
+
316
+ * Fixes issue with missing error messages on failed instances when
317
+ importing using arrays of columns and values. Thanks to @Fivell via \#332
318
+ * Update so SQLite only return ids if table has a primary key field via \#333
319
+
320
+
321
+ ## Changes in 0.16.0
322
+
323
+ ### New Features
324
+
325
+ * Add partial index upsert support for PostgreSQL. Thanks to @luislew via \#305
326
+ * Add UUID primary key support for PostgreSQL. Thanks to @jkowens via
327
+ \#312
328
+ * Add store accessor support for JSON, JSON, and HSTORE data types.
329
+ Thanks to @jkowens via \#322
330
+ * Log warning if database does not support :on_duplicate_key_update.
331
+ Thanks to @jkowens via \#324
332
+ * Add option :on_duplicate_key_ignore for MySQL and SQLite. Thanks to
333
+ @jkowens via \#326
334
+
335
+ ### Fixes
336
+
337
+ * Fixes issue with recursive import using same primary key for all models.
338
+ Thanks to @chopraanmol1 via \#309
339
+ * Fixes issue importing from STI subclass with polymorphic associations.
340
+ Thanks to @JNajera via \#314
341
+ * Fixes issue setting returned IDs to wrong models when some fail validation. Also fixes issue with SQLite returning wrong IDs. Thanks to @mizukami234 via \#315
342
+
343
+
344
+ ## Changes in 0.15.0
345
+
346
+ ### New Features
347
+
348
+ * An ArgumentError is now raised if when no `conflict_target` or `conflict_name` is provided or can be determined when using the `on_duplicate_key_update` option for PostgreSQL. Thanks to @jkowens via \#290
349
+ * Support for Rails 5.0 final release for all except the JDBC driver which is not yet updated to support Rails 5.0
350
+
351
+ ### Fixes
352
+
353
+ * activerecord-import no longer modifies a value array inside of the given values array when called with `import(columns, values)`. Thanks to @jkowens via \#291
354
+
355
+ ### Misc
356
+
357
+ * `raise_error` is used to raise errors for ActiveRecord 5.0. Thanks to @couragecourag via \#294 `raise_record_invalid` has been
358
+
359
+
360
+ ## Changes in 0.14.1
361
+
362
+ ### Fixes
363
+
364
+ * JRuby/JDBCDriver with PostgreSQL will no longer raise a JDBCDriver error when using the :no_returning boolean option. Thanks to @jkowens via \#287
365
+
366
+ ## Changes in 0.14.0
367
+
368
+ ### New Features
369
+
370
+ * Support for ActiveRecord 3.1 has been dropped. Thanks to @sferik via \#254
371
+ * SQLite3 has learned the :recursive option. Thanks to @jkowens via \#281
372
+ * :on_duplicate_key_ignore will be ignored when imports are being done with :recursive. Thanks to @jkowens via \#268
373
+ * :activerecord-import learned how to tell PostgreSQL to return no data back from the import via the :no_returning boolean option. Thanks to @makaroni4 via \#276
374
+
375
+ ### Fixes
376
+
377
+ * Polymorphic associations will not import the :type column. Thanks to @seanlinsley via \#282 and \#283
378
+ * ~2X speed increase for importing models with validations. Thanks to @jkowens via \#266
379
+
380
+ ### Misc
381
+
382
+ * Benchmark HTML report has been fixed. Thanks to @jkowens via \#264
383
+ * seamless_database_pool has been updated to work with AR 5.0. Thanks to @jkowens via \#280
384
+ * Code cleanup, removal of redundant condition checks. Thanks to @pavlik4k via \#273
385
+ * Code cleanup, removal of deprecated `alias_method_chain`. Thanks to @codeodor via \#271
386
+
387
+
388
+ ## Changes in 0.13.0
389
+
390
+ ### New Features
391
+
392
+ * Addition of :batch_size option to control the number of rows to insert per INSERT statement. The default is the total number of records being inserted so there is a single INSERT statement. Thanks to @jkowens via \#245
393
+
394
+ * Addition `import!` which will raise an exception if a validation occurs. It will fail fast. Thanks to @jkowens via \#246
395
+
396
+ ### Fixes
397
+
398
+ * Fixing issue with recursive import when utilizing the `:on_duplicate_key_update` option. The `on_duplicate_key_update` only applies to parent models at this time. Thanks to @yuri-karpovich for reporting and @jkowens for fixing via \#249
399
+
400
+ ### Misc
401
+
402
+ * Refactoring of fetching and assigning attributes. Thanks to @jkownes via \#259
403
+ * Lots of code cleanup and addition of Rubocop linter. Thanks to @sferik via \#256 and \#250
404
+ * Resolving errors with the test suite when running against ActiveRecord 4.0 and 4.1. Thanks to @jkowens via \#262
405
+ * Cleaning up the TravisCI settings and packages. Thanks to @sferik via \#258 and \#251
406
+
407
+ ## Changes in 0.12.0
408
+
409
+ ### New Features
410
+
411
+ * PostgreSQL UPSERT support has been added. Thanks @jkowens via \#218
412
+
413
+ ### Fixes
414
+
415
+ * has_one and has_many associations will now be recursively imported regardless of :autosave being set. Thanks @sferik, @jkowens via \#243, \#234
416
+ * Fixing an issue with enum column support for Rails > 4.1. Thanks @aquajach via \#235
417
+
418
+ ### Removals
419
+
420
+ * Support for em-synchrony has been removed since it appears the project has been abandoned. Thanks @sferik, @zdennis via \#239
421
+ * Support for the mysql gem/adapter has been removed since it has officially been abandoned. Use the mysql2 gem/adapter instead. Thanks @sferik, @zdennis via \#239
422
+
423
+ ### Misc
424
+
425
+ * Cleaned up TravisCI output and removing deprecation warnings. Thanks @jkowens, @zdennis \#242
426
+
427
+
428
+ ## Changes before 0.12.0
429
+
430
+ > Never look back. What's gone is now history. But in the process make memory of events to help you understand what will help you to make your dream a true story. Mistakes of the past are lessons, success of the past is inspiration. – Dr. Anil Kr Sinha