activerecord-import 0.14.1 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/test.yaml +107 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +74 -8
- data/Brewfile +3 -1
- data/CHANGELOG.md +448 -2
- data/Gemfile +26 -19
- data/LICENSE +21 -56
- data/README.markdown +568 -32
- data/Rakefile +5 -1
- data/activerecord-import.gemspec +8 -7
- data/benchmarks/README +2 -2
- data/benchmarks/benchmark.rb +8 -1
- data/benchmarks/lib/base.rb +2 -0
- data/benchmarks/lib/cli_parser.rb +5 -2
- data/benchmarks/lib/float.rb +2 -0
- data/benchmarks/lib/mysql2_benchmark.rb +2 -0
- data/benchmarks/lib/output_to_csv.rb +2 -0
- data/benchmarks/lib/output_to_html.rb +4 -2
- data/benchmarks/models/test_innodb.rb +2 -0
- data/benchmarks/models/test_memory.rb +2 -0
- data/benchmarks/models/test_myisam.rb +2 -0
- data/benchmarks/schema/{mysql_schema.rb → mysql2_schema.rb} +2 -0
- data/gemfiles/4.2.gemfile +4 -3
- data/gemfiles/5.0.gemfile +4 -3
- data/gemfiles/5.1.gemfile +4 -0
- data/gemfiles/5.2.gemfile +4 -0
- data/gemfiles/6.0.gemfile +4 -0
- data/gemfiles/6.1.gemfile +4 -0
- data/gemfiles/7.0.gemfile +4 -0
- data/lib/activerecord-import/active_record/adapters/abstract_adapter.rb +2 -0
- data/lib/activerecord-import/active_record/adapters/jdbcmysql_adapter.rb +6 -4
- data/lib/activerecord-import/active_record/adapters/jdbcpostgresql_adapter.rb +2 -0
- data/lib/activerecord-import/active_record/adapters/jdbcsqlite3_adapter.rb +8 -0
- data/lib/activerecord-import/active_record/adapters/mysql2_adapter.rb +2 -0
- data/lib/activerecord-import/active_record/adapters/postgresql_adapter.rb +2 -0
- data/lib/activerecord-import/active_record/adapters/seamless_database_pool_adapter.rb +2 -0
- data/lib/activerecord-import/active_record/adapters/sqlite3_adapter.rb +2 -0
- data/lib/activerecord-import/adapters/abstract_adapter.rb +12 -16
- data/lib/activerecord-import/adapters/em_mysql2_adapter.rb +2 -0
- data/lib/activerecord-import/adapters/mysql2_adapter.rb +2 -0
- data/lib/activerecord-import/adapters/mysql_adapter.rb +35 -18
- data/lib/activerecord-import/adapters/postgresql_adapter.rb +107 -28
- data/lib/activerecord-import/adapters/sqlite3_adapter.rb +141 -18
- data/lib/activerecord-import/base.rb +15 -8
- data/lib/activerecord-import/import.rb +642 -178
- data/lib/activerecord-import/mysql2.rb +2 -0
- data/lib/activerecord-import/postgresql.rb +2 -0
- data/lib/activerecord-import/sqlite3.rb +2 -0
- data/lib/activerecord-import/synchronize.rb +5 -3
- data/lib/activerecord-import/value_sets_parser.rb +29 -3
- data/lib/activerecord-import/version.rb +3 -1
- data/lib/activerecord-import.rb +5 -16
- data/test/adapters/jdbcmysql.rb +2 -0
- data/test/adapters/jdbcpostgresql.rb +2 -0
- data/test/adapters/jdbcsqlite3.rb +3 -0
- data/test/adapters/makara_postgis.rb +3 -0
- data/test/adapters/mysql2.rb +2 -0
- data/test/adapters/mysql2_makara.rb +2 -0
- data/test/adapters/mysql2spatial.rb +2 -0
- data/test/adapters/postgis.rb +2 -0
- data/test/adapters/postgresql.rb +2 -0
- data/test/adapters/postgresql_makara.rb +2 -0
- data/test/adapters/seamless_database_pool.rb +2 -0
- data/test/adapters/spatialite.rb +2 -0
- data/test/adapters/sqlite3.rb +2 -0
- data/test/{travis → github}/database.yml +7 -1
- data/test/import_test.rb +498 -32
- data/test/jdbcmysql/import_test.rb +2 -1
- data/test/jdbcpostgresql/import_test.rb +2 -1
- data/test/jdbcsqlite3/import_test.rb +6 -0
- data/test/makara_postgis/import_test.rb +10 -0
- data/test/models/account.rb +5 -0
- data/test/models/alarm.rb +4 -0
- data/test/models/animal.rb +8 -0
- data/test/models/bike_maker.rb +9 -0
- data/test/models/book.rb +4 -0
- data/test/models/car.rb +5 -0
- data/test/models/card.rb +5 -0
- data/test/models/chapter.rb +2 -0
- data/test/models/customer.rb +8 -0
- data/test/models/deck.rb +8 -0
- data/test/models/dictionary.rb +6 -0
- data/test/models/discount.rb +2 -0
- data/test/models/end_note.rb +2 -0
- data/test/models/group.rb +2 -0
- data/test/models/order.rb +8 -0
- data/test/models/playing_card.rb +4 -0
- data/test/models/promotion.rb +2 -0
- data/test/models/question.rb +2 -0
- data/test/models/rule.rb +2 -0
- data/test/models/tag.rb +7 -0
- data/test/models/tag_alias.rb +5 -0
- data/test/models/topic.rb +16 -0
- data/test/models/user.rb +5 -0
- data/test/models/user_token.rb +6 -0
- data/test/models/vendor.rb +9 -0
- data/test/models/widget.rb +18 -0
- data/test/mysql2/import_test.rb +2 -0
- data/test/mysql2_makara/import_test.rb +2 -0
- data/test/mysqlspatial2/import_test.rb +2 -0
- data/test/postgis/import_test.rb +6 -0
- data/test/postgresql/import_test.rb +2 -4
- data/test/schema/generic_schema.rb +88 -3
- data/test/schema/jdbcpostgresql_schema.rb +3 -0
- data/test/schema/mysql2_schema.rb +21 -0
- data/test/schema/postgis_schema.rb +3 -0
- data/test/schema/postgresql_schema.rb +63 -0
- data/test/schema/sqlite3_schema.rb +15 -0
- data/test/schema/version.rb +2 -0
- data/test/sqlite3/import_test.rb +4 -50
- data/test/support/active_support/test_case_extensions.rb +8 -1
- data/test/support/assertions.rb +2 -0
- data/test/support/factories.rb +17 -8
- data/test/support/generate.rb +10 -8
- data/test/support/mysql/import_examples.rb +17 -3
- data/test/support/postgresql/import_examples.rb +442 -9
- data/test/support/shared_examples/on_duplicate_key_ignore.rb +45 -0
- data/test/support/shared_examples/on_duplicate_key_update.rb +278 -1
- data/test/support/shared_examples/recursive_import.rb +137 -12
- data/test/support/sqlite3/import_examples.rb +232 -0
- data/test/synchronize_test.rb +10 -0
- data/test/test_helper.rb +44 -3
- data/test/value_sets_bytes_parser_test.rb +15 -2
- data/test/value_sets_records_parser_test.rb +2 -0
- metadata +74 -22
- data/.travis.yml +0 -52
- data/gemfiles/3.2.gemfile +0 -3
- data/gemfiles/4.0.gemfile +0 -3
- data/gemfiles/4.1.gemfile +0 -3
- data/test/schema/mysql_schema.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1b9c717d31cf5a4012568c9d8497947466408be7fef5610fba9143f7a911ed7c
|
4
|
+
data.tar.gz: 925bc5f645152eeb09f9583e9d50b9be67c4bfa8049c303571f82649262e4d5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 409d66e4d4e6e9ac31940cea097837d76c93cbeb4b95461323afc6a5f2ace736f945705e5ef33f2a851bb92c13c27e19ffbc14c7e776a0366f1d76091cafd51f
|
7
|
+
data.tar.gz: 6a0eaa48b85f7b1863dfb2b04c3c193a5e7e1108084556ba1b25fa303bccb40f62dd706ec8d4b5c3394239f167eb1807dfff4fe292edc1e4ad550719a9a63446
|
@@ -0,0 +1,107 @@
|
|
1
|
+
name: Test
|
2
|
+
on: [push, pull_request]
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
services:
|
6
|
+
postgres:
|
7
|
+
image: postgis/postgis:10-2.5
|
8
|
+
env:
|
9
|
+
POSTGRES_USER: postgres
|
10
|
+
POSTGRES_PASSWORD: postgres
|
11
|
+
ports:
|
12
|
+
- 5432:5432
|
13
|
+
# Set health checks to wait until postgres has started
|
14
|
+
options: >-
|
15
|
+
--health-cmd pg_isready
|
16
|
+
--health-interval 10s
|
17
|
+
--health-timeout 5s
|
18
|
+
--health-retries 5
|
19
|
+
strategy:
|
20
|
+
fail-fast: false
|
21
|
+
matrix:
|
22
|
+
ruby:
|
23
|
+
- 3.1
|
24
|
+
env:
|
25
|
+
- AR_VERSION: '7.0'
|
26
|
+
RUBYOPT: --enable-frozen-string-literal
|
27
|
+
- AR_VERSION: 6.1
|
28
|
+
RUBYOPT: --enable-frozen-string-literal
|
29
|
+
include:
|
30
|
+
- ruby: '3.0'
|
31
|
+
env:
|
32
|
+
AR_VERSION: '7.0'
|
33
|
+
- ruby: '3.0'
|
34
|
+
env:
|
35
|
+
AR_VERSION: 6.1
|
36
|
+
- ruby: 2.7
|
37
|
+
env:
|
38
|
+
AR_VERSION: '7.0'
|
39
|
+
- ruby: 2.7
|
40
|
+
env:
|
41
|
+
AR_VERSION: 6.1
|
42
|
+
- ruby: 2.7
|
43
|
+
env:
|
44
|
+
AR_VERSION: '6.0'
|
45
|
+
- ruby: 2.6
|
46
|
+
env:
|
47
|
+
AR_VERSION: 5.2
|
48
|
+
- ruby: 2.6
|
49
|
+
env:
|
50
|
+
AR_VERSION: 5.1
|
51
|
+
- ruby: 2.4
|
52
|
+
env:
|
53
|
+
AR_VERSION: '5.0'
|
54
|
+
- ruby: 2.4
|
55
|
+
env:
|
56
|
+
AR_VERSION: 4.2
|
57
|
+
runs-on: ubuntu-latest
|
58
|
+
env:
|
59
|
+
AR_VERSION: ${{ matrix.env.AR_VERSION }}
|
60
|
+
DB_DATABASE: activerecord_import_test
|
61
|
+
steps:
|
62
|
+
- uses: actions/checkout@v2
|
63
|
+
- uses: ruby/setup-ruby@v1
|
64
|
+
with:
|
65
|
+
ruby-version: ${{ matrix.ruby }}
|
66
|
+
bundler-cache: true
|
67
|
+
- name: Set up databases
|
68
|
+
run: |
|
69
|
+
sudo /etc/init.d/mysql start
|
70
|
+
mysql -e 'CREATE DATABASE ${{ env.DB_DATABASE }} CHARACTER SET utf8 COLLATE utf8_general_ci;' -u root -proot
|
71
|
+
psql -h localhost -U postgres -c 'create database ${{ env.DB_DATABASE }};'
|
72
|
+
psql -h localhost -U postgres -d ${{ env.DB_DATABASE }} -c 'create extension if not exists hstore;'
|
73
|
+
psql -h localhost -U postgres -c 'create extension if not exists postgis;'
|
74
|
+
psql -h localhost -U postgres -c 'create extension if not exists "uuid-ossp";'
|
75
|
+
cp test/github/database.yml test/database.yml
|
76
|
+
env:
|
77
|
+
PGPASSWORD: postgres
|
78
|
+
- name: Run tests with mysql2
|
79
|
+
run: |
|
80
|
+
bundle exec rake test:mysql2
|
81
|
+
bundle exec rake test:mysql2_makara
|
82
|
+
bundle exec rake test:mysql2spatial
|
83
|
+
- name: Run tests with postgresql
|
84
|
+
run: |
|
85
|
+
bundle exec rake test:postgis
|
86
|
+
bundle exec rake test:postgresql
|
87
|
+
bundle exec rake test:postgresql_makara
|
88
|
+
- name: Run tests with seamless_database_pool
|
89
|
+
run: |
|
90
|
+
bundle exec rake test:seamless_database_pool
|
91
|
+
if: ${{ matrix.ruby < '3.0' }}
|
92
|
+
- name: Run tests with sqlite
|
93
|
+
run: |
|
94
|
+
bundle exec rake test:spatialite
|
95
|
+
bundle exec rake test:sqlite3
|
96
|
+
lint:
|
97
|
+
runs-on: ubuntu-latest
|
98
|
+
env:
|
99
|
+
AR_VERSION: '7.0'
|
100
|
+
steps:
|
101
|
+
- uses: actions/checkout@v2
|
102
|
+
- uses: ruby/setup-ruby@v1
|
103
|
+
with:
|
104
|
+
ruby-version: 2.7
|
105
|
+
bundler-cache: true
|
106
|
+
- name: Run Rubocop
|
107
|
+
run: bundle exec rubocop
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
2
|
|
3
|
-
Lint/EndAlignment:
|
4
|
-
AlignWith: variable
|
5
|
-
|
6
3
|
Metrics/AbcSize:
|
7
4
|
Enabled: false
|
8
5
|
|
6
|
+
Metrics/BlockLength:
|
7
|
+
Enabled: false
|
8
|
+
|
9
9
|
Metrics/ClassLength:
|
10
10
|
Enabled: false
|
11
11
|
|
@@ -24,8 +24,8 @@ Metrics/ModuleLength:
|
|
24
24
|
Metrics/PerceivedComplexity:
|
25
25
|
Enabled: false
|
26
26
|
|
27
|
-
Style/
|
28
|
-
|
27
|
+
Style/CommentedKeyword:
|
28
|
+
Enabled: false
|
29
29
|
|
30
30
|
Style/ClassAndModuleChildren:
|
31
31
|
Enabled: false
|
@@ -33,10 +33,25 @@ Style/ClassAndModuleChildren:
|
|
33
33
|
Style/Documentation:
|
34
34
|
Enabled: false
|
35
35
|
|
36
|
-
Style/
|
36
|
+
Style/EvalWithLocation:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
Style/ExpandPathArguments:
|
40
|
+
Enabled: false
|
41
|
+
|
42
|
+
Style/GuardClause:
|
43
|
+
Enabled: false
|
44
|
+
|
45
|
+
Style/IfUnlessModifier:
|
46
|
+
Enabled: false
|
47
|
+
|
48
|
+
Style/NumericPredicate:
|
49
|
+
Enabled: false
|
50
|
+
|
51
|
+
Style/PercentLiteralDelimiters:
|
37
52
|
Enabled: false
|
38
53
|
|
39
|
-
Style/
|
54
|
+
Style/RedundantBegin:
|
40
55
|
Enabled: false
|
41
56
|
|
42
57
|
Style/SpecialGlobalVars:
|
@@ -45,5 +60,56 @@ Style/SpecialGlobalVars:
|
|
45
60
|
Style/StringLiterals:
|
46
61
|
Enabled: false
|
47
62
|
|
48
|
-
Style/
|
63
|
+
Style/SymbolArray:
|
64
|
+
Enabled: false
|
65
|
+
|
66
|
+
Style/TrailingCommaInArrayLiteral:
|
67
|
+
Enabled: false
|
68
|
+
|
69
|
+
Layout/AlignArguments:
|
70
|
+
Enabled: false
|
71
|
+
|
72
|
+
Layout/AlignParameters:
|
73
|
+
EnforcedStyle: with_fixed_indentation
|
74
|
+
|
75
|
+
Layout/EndAlignment:
|
76
|
+
EnforcedStyleAlignWith: variable
|
77
|
+
|
78
|
+
Layout/ElseAlignment:
|
79
|
+
Enabled: false
|
80
|
+
|
81
|
+
Layout/EmptyLineAfterGuardClause:
|
82
|
+
Enabled: false
|
83
|
+
|
84
|
+
Layout/IndentHeredoc:
|
85
|
+
Enabled: false
|
86
|
+
|
87
|
+
Layout/SpaceInsideParens:
|
88
|
+
Enabled: false
|
89
|
+
|
90
|
+
Layout/SpaceInsidePercentLiteralDelimiters:
|
91
|
+
Enabled: false
|
92
|
+
|
93
|
+
Lint/ErbNewArguments:
|
94
|
+
Enabled: false
|
95
|
+
|
96
|
+
Lint/MissingCopEnableDirective:
|
97
|
+
Enabled: false
|
98
|
+
|
99
|
+
Lint/PercentStringArray:
|
100
|
+
Enabled: false
|
101
|
+
|
102
|
+
Naming/HeredocDelimiterNaming:
|
103
|
+
Enabled: false
|
104
|
+
|
105
|
+
Naming/UncommunicativeMethodParamName:
|
106
|
+
Enabled: false
|
107
|
+
|
108
|
+
Security/YAMLLoad:
|
109
|
+
Enabled: false
|
110
|
+
|
111
|
+
Gemspec/RequiredRubyVersion:
|
112
|
+
Enabled: false
|
113
|
+
|
114
|
+
Bundler/OrderedGems:
|
49
115
|
Enabled: false
|
data/Brewfile
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,455 @@
|
|
1
|
+
## Changes in 1.4.1
|
2
|
+
|
3
|
+
### Fixes
|
4
|
+
|
5
|
+
* Fix importing models that have required belongs_to associations and use composite primary keys. Thanks to @thoughtbot-summer vi \##783.
|
6
|
+
|
7
|
+
## Changes in 1.4.0
|
8
|
+
|
9
|
+
### New Features
|
10
|
+
|
11
|
+
* Enable compatibility with frozen string literals. Thanks to @desheikh via \##760.
|
12
|
+
|
13
|
+
## Changes in 1.3.0
|
14
|
+
|
15
|
+
### Fixes
|
16
|
+
|
17
|
+
* Ensure correct timestamp values are returned for models after insert. Thanks to @kos1kov via \##756.
|
18
|
+
* Restore database_version method to public scope. Thanks to @beauraF via \##753.
|
19
|
+
|
20
|
+
### New Features
|
21
|
+
|
22
|
+
* Add support for ActiveRecord 7.0. Thanks to @nickhammond, @ryanwood, @jkowens via \##749 and \##752.
|
23
|
+
* Add support for compound foreign keys. Thanks to @Uladzimiro via \##750.
|
24
|
+
* Add support for :recursive combined with on_duplicate_key_update: :all. Thanks to @deathwish via \##746.
|
25
|
+
|
26
|
+
## Changes in 1.2.0
|
27
|
+
|
28
|
+
### Fixes
|
29
|
+
|
30
|
+
* Update JDBC MySQL adapter to use mysql2 connection adapter. Thanks to @terencechow via \##744.
|
31
|
+
* Fix importing STI models with ActiveRecord 6. Thanks to @clemens1483 via \##743.
|
32
|
+
* Use polymorphic_name instead of base_class.name for imports. Thanks to @kmhajjar via \##741.
|
33
|
+
* Fix compatibility issue with composite primary keys. Thanks to @dlanileonardo via \##737.
|
34
|
+
* Prevent double validation of associations on recursive import.
|
35
|
+
|
36
|
+
## Changes in 1.1.0
|
37
|
+
|
38
|
+
### New Features
|
39
|
+
|
40
|
+
* Add batch progress reporting. Thanks to @gee-forr via \##729.
|
41
|
+
|
42
|
+
## Changes in 1.0.8
|
43
|
+
|
44
|
+
### Fixes
|
45
|
+
|
46
|
+
* Use correct method for clearing query cache. Thanks to @EtienneDepaulis via \##719.
|
47
|
+
|
48
|
+
## Changes in 1.0.7
|
49
|
+
|
50
|
+
### New Features
|
51
|
+
|
52
|
+
* Use @@max_allowed_packet session variable instead of querying SHOW VARIABLES. Thanks to @diclophis via \#706.
|
53
|
+
* Add option :track_validation_failures. When this is set to true, failed_instances will be an array of arrays, with each inner array having the form [:index_in_dataset, :object_with_errors]. Thanks to @rorymckinley via \#684.
|
54
|
+
|
55
|
+
### Fixes
|
56
|
+
|
57
|
+
* Prevent mass-assignment errors in Rails strict mode. Thanks to @diclophis via \##709.
|
58
|
+
|
59
|
+
## Changes in 1.0.6
|
60
|
+
|
61
|
+
### Fixes
|
62
|
+
|
63
|
+
* Handle after_initialize callbacks. Thanks to @AhMohsen46 via \#691 and
|
64
|
+
\#692.
|
65
|
+
* Fix regression introduced in 1.0.4. Explicitly allow adapters to
|
66
|
+
support on duplicate key update. Thanks to @dsobiera, @jkowens via \#696.
|
67
|
+
|
68
|
+
## Changes in 1.0.5
|
69
|
+
|
70
|
+
### Fixes
|
71
|
+
|
72
|
+
* Allow serialized attributes to be returned from import. Thanks to @timanovsky, @jkowens via \#660.
|
73
|
+
* Return ActiveRecord::Connection from
|
74
|
+
ActiveRecord::Base#establish_connection. Thanks to @reverentF via
|
75
|
+
\#663.
|
76
|
+
* Support PostgreSQL array. Thanks to @ujihisa via \#669.
|
77
|
+
* Skip loading association ids when column changed. Thanks to @Aristat
|
78
|
+
via \#673.
|
79
|
+
|
80
|
+
## Changes in 1.0.4
|
81
|
+
|
82
|
+
### Fixes
|
83
|
+
|
84
|
+
* Use prepend pattern for ActiveRecord::Base#establish_connection patching. Thanks to @dombesz via \#648.
|
85
|
+
* Fix NoMethodError when using PostgreSQL ENUM types. Thanks to @sebcoetzee via \#651.
|
86
|
+
* Fix issue updating optimistic lock in Postgres. Thanks to @timanovsky
|
87
|
+
via \#656.
|
88
|
+
|
89
|
+
## Changes in 1.0.3
|
90
|
+
|
91
|
+
### New Features
|
92
|
+
|
93
|
+
* Add support for ActiveRecord 6.1.0.alpha. Thanks to @imtayadeway via
|
94
|
+
\#642.
|
95
|
+
|
96
|
+
### Fixes
|
97
|
+
|
98
|
+
* Return an empty array for results instead of nil when importing empty
|
99
|
+
array. Thanks to @gyfis via \#636.
|
100
|
+
|
101
|
+
## Changes in 1.0.2
|
102
|
+
|
103
|
+
### New Features
|
104
|
+
|
105
|
+
* Add support for CockroachDB adapter. Thanks to @willie via \#605.
|
106
|
+
* Add support for ActiveRecord 6.0.0.rc1. Thanks to @madeindjs, @bill-filler,
|
107
|
+
@jkowens via \#619, \#623.
|
108
|
+
|
109
|
+
### Fixes
|
110
|
+
|
111
|
+
* Fixes NoMethodError when attempting to use nil logger. Thanks to @MattMecel,
|
112
|
+
@khiav22357.
|
113
|
+
* Fix issue validating STI models. Thanks to @thejbsmith, @jkowens via
|
114
|
+
\#626.
|
115
|
+
|
116
|
+
## Changes in 1.0.1
|
117
|
+
|
118
|
+
### Fixes
|
119
|
+
|
120
|
+
* Raise an error with a helpful message if array of values exceeds the number of
|
121
|
+
columns for a table. Thanks to @golddranks via \#589.
|
122
|
+
* Properly check if model responds to import before creating alias.
|
123
|
+
Thanks to @jcw- via \#591.
|
124
|
+
* No longer pass :returning option to child associations on recursive
|
125
|
+
import. Thanks to @dmitriy-kiriyenko via \#595.
|
126
|
+
* Fix import issue for models with Postgresql json/jsonb fields. Thanks
|
127
|
+
to @stokarenko via \#594.
|
128
|
+
* Fix issue importing models with timestamps that contain timezone
|
129
|
+
information. Thanks to @dekaikiwi, @jkowens via \#598.
|
130
|
+
* Ignore :no_returning when using :recursive option. Thanks to @dgollahon, @jkowens
|
131
|
+
via \#599.
|
132
|
+
|
133
|
+
## Changes in 1.0.0
|
134
|
+
|
135
|
+
### New Features
|
136
|
+
|
137
|
+
* Move ActiveRecord::Dirty changes to previous_changes after import.
|
138
|
+
Thanks to @stokarenko via \#584.
|
139
|
+
|
140
|
+
### Breaking Changes
|
141
|
+
|
142
|
+
* Previously :on_duplicate_key_update was enabled by default for MySQL.
|
143
|
+
The update timestamp columns (updated_at, updated_on) would be updated
|
144
|
+
on duplicate key. This was behavior is inconsistent with the other database
|
145
|
+
adapters and could also be considered surprising. Going forward it must
|
146
|
+
be explicitly enabled. See \#548.
|
147
|
+
|
148
|
+
## Changes in 0.28.2
|
149
|
+
|
150
|
+
### Fixes
|
151
|
+
|
152
|
+
* Fix issue where validations where not working in certain scenarios.
|
153
|
+
Thanks to @CASIXx1 via \#579.
|
154
|
+
|
155
|
+
## Changes in 0.28.1
|
156
|
+
|
157
|
+
### Fixes
|
158
|
+
|
159
|
+
* Fix issue where ActiveRecord presence validations were being mutated.
|
160
|
+
Limited custom presence validation to bulk imports.
|
161
|
+
|
162
|
+
## Changes in 0.28.0
|
163
|
+
|
164
|
+
### New Features
|
165
|
+
|
166
|
+
* Allow updated timestamps to be manually set.Thanks to @Rob117, @jkowens via \#570.
|
167
|
+
|
168
|
+
### Fixes
|
169
|
+
|
170
|
+
* Fix validating presence of belongs_to associations. Existence
|
171
|
+
of the parent record is not validated, but the foreign key field
|
172
|
+
cannot be empty. Thanks to @Rob117, @jkowens via \#575.
|
173
|
+
|
174
|
+
## Changes in 0.27.0
|
175
|
+
|
176
|
+
### New Features
|
177
|
+
|
178
|
+
* Add "secret" option validate_uniqueness to enable uniqueness
|
179
|
+
validators when validating import. This is not a recommended
|
180
|
+
approach (See #228), but is being added back in for projects
|
181
|
+
that depended on this feature. Thanks to @jkowens via \#554.
|
182
|
+
|
183
|
+
## Changes in 0.26.0
|
184
|
+
|
185
|
+
### New Features
|
186
|
+
|
187
|
+
* Add on_duplicate_key_update for SQLite. Thanks to @jkowens via \#542.
|
188
|
+
* Add option to update all fields on_duplicate_key_update. Thanks to @aimerald, @jkowens via \#543.
|
189
|
+
|
190
|
+
### Fixes
|
191
|
+
|
192
|
+
* Handle deeply frozen options hashes. Thanks to @jturkel via \#546.
|
193
|
+
* Switch from FactoryGirl to FactoryBot. Thanks to @koic via \#547.
|
194
|
+
* Allow import to work with ProxySQL. Thanks to @GregFarrell via \#550.
|
195
|
+
|
196
|
+
## Changes in 0.25.0
|
197
|
+
|
198
|
+
### New Features
|
199
|
+
|
200
|
+
* Add support for makara_postgis adapter. Thanks to @chadwilken via \#527.
|
201
|
+
* Skip validating presence of belongs_to associations. Thanks to @Sohair63, @naiyt, @jkowens via \#528.
|
202
|
+
|
203
|
+
### Fixes
|
204
|
+
|
205
|
+
* Add missing require for ActiveSupport.on_load. Thanks to @onk via \#529.
|
206
|
+
* Support setting attribute values in before_validation callbacks.
|
207
|
+
Thanks to @SirRawlins, @jkowens via \#531.
|
208
|
+
* Ignore virtual columns. Thanks to @dbourguignon, @jkowens via \#530.
|
209
|
+
|
210
|
+
## Changes in 0.24.0
|
211
|
+
|
212
|
+
### Fixes
|
213
|
+
|
214
|
+
* Use the association primary key when importing. Thanks to @dpogue via \#512.
|
215
|
+
* Allow association ids to be updated. Thanks to @Aristat via \#515.
|
216
|
+
|
217
|
+
## Changes in 0.23.0
|
218
|
+
|
219
|
+
### New Features
|
220
|
+
|
221
|
+
* Rename `import` method to `bulk_import` and alias to `import`. Thanks
|
222
|
+
to @itay-grudev, @jkowens via \#498.
|
223
|
+
* Increment lock_version on duplicate key update. Thanks to @aimerald
|
224
|
+
via \#500.
|
225
|
+
|
226
|
+
### Fixes
|
227
|
+
|
228
|
+
* Fix import_without_validations_or_callbacks exception if array is empty.
|
229
|
+
Thanks to @doloopwhile via \#508.
|
230
|
+
|
231
|
+
## Changes in 0.22.0
|
232
|
+
|
233
|
+
### New Features
|
234
|
+
|
235
|
+
* Add support for importing hashes thru a has many association. Thanks
|
236
|
+
to @jkowens via \#483.
|
237
|
+
|
238
|
+
### Fixes
|
239
|
+
|
240
|
+
* Fix validation logic for recursive import. For those on Rails 5.0 and 5.1,
|
241
|
+
this change requires models with polymorphic associations to specify the `inverse_of`
|
242
|
+
argument (See issue #495). Thanks to @eric-simonton-sama, @jkowens via
|
243
|
+
\#489.
|
244
|
+
|
245
|
+
## Changes in 0.21.0
|
246
|
+
|
247
|
+
### New Features
|
248
|
+
|
249
|
+
* Allow SQL subqueries (objects that respond to .to_sql) to be passed as values. Thanks
|
250
|
+
to @jalada, @jkowens via \#471
|
251
|
+
* Raise an ArgumentError when importing an array of hashes if any of the
|
252
|
+
hash objects have different keys. Thanks to @mbell697 via \#465.
|
253
|
+
|
254
|
+
### Fixes
|
255
|
+
|
256
|
+
* Fix issue loading incorrect foreign key value when syncing belongs_to
|
257
|
+
associations with custom foreign key columns. Thanks to @marcgreenstock, @jkowens via \#470.
|
258
|
+
* Fix issue importing models with polymorphic belongs_to associations.
|
259
|
+
Thanks to @zorab47, @jkowens via \#476.
|
260
|
+
* Fix issue importing STI models with ActiveRecord 4.0. Thanks to
|
261
|
+
@kazuki-st, @jkowens via \#478.
|
262
|
+
|
263
|
+
## Changes in 0.20.2
|
264
|
+
|
265
|
+
### Fixes
|
266
|
+
|
267
|
+
* Unscope model when synchronizing with database. Thanks to @indigoviolet via \#455.
|
268
|
+
|
269
|
+
## Changes in 0.20.1
|
270
|
+
|
271
|
+
### Fixes
|
272
|
+
|
273
|
+
* Prevent :on_duplicate_key_update args from being modified. Thanks to @joshuamcginnis, @jkowens via \#451.
|
274
|
+
|
275
|
+
## Changes in 0.20.0
|
276
|
+
|
277
|
+
### New Features
|
278
|
+
|
279
|
+
* Allow returning columns to be specified for PostgreSQL. Thanks to
|
280
|
+
@tjwp via \#433.
|
281
|
+
|
282
|
+
### Fixes
|
283
|
+
|
284
|
+
* Fixes an issue when bypassing uniqueness validators. Thanks to @vmaxv via \#444.
|
285
|
+
* For AR < 4.2, prevent type casting for binary columns on Postgresql. Thanks to @mwalsher via \#446.
|
286
|
+
* Fix issue logging class name on import. Thanks to @sophylee, @jkowens via \#447.
|
287
|
+
* Copy belongs_to association id to foreign key column before importing. Thanks to @jkowens via \#448.
|
288
|
+
* Reset model instance on validate. Thanks to @vmaxv via \#449.
|
289
|
+
|
290
|
+
## Changes in 0.19.1
|
291
|
+
|
292
|
+
### Fixes
|
293
|
+
|
294
|
+
* Fix a regression where models weren't properly being marked clean. Thanks to @tjwp via \#434.
|
295
|
+
* Raise ActiveRecord::Import::ValueSetTooLargeError when a record being inserted exceeds the
|
296
|
+
`max_allowed_packet` for MySQL. Thanks to @saizai, @jkowens via \#437.
|
297
|
+
* Fix issue concatenating column names array with primary key. Thanks to @keeguon via \#440.
|
298
|
+
|
299
|
+
## Changes in 0.19.0
|
300
|
+
|
301
|
+
### New Features
|
302
|
+
|
303
|
+
* For PostgreSQL, add option to set WHERE condition in conflict_action. Thanks to
|
304
|
+
@Saidbek via \#423.
|
305
|
+
|
306
|
+
### Fixes
|
307
|
+
|
308
|
+
* Fix issue importing saved records with serialized fields. Thanks to
|
309
|
+
@Andreis13, @jkowens via \#425.
|
310
|
+
* Fix issue importing records that have columns defined with default values
|
311
|
+
that are functions or expressions. Thanks to @Andreis13, @jkowens via \#428.
|
312
|
+
|
313
|
+
## Changes in 0.18.3
|
314
|
+
|
315
|
+
### Fixes
|
316
|
+
|
317
|
+
* Set models new_record attribute to false when importing with
|
318
|
+
:on_duplicate_key_ignore. Thanks to @nijikon, @jkowens via \#416.
|
319
|
+
|
320
|
+
## Changes in 0.18.2
|
321
|
+
|
322
|
+
### Fixes
|
323
|
+
|
324
|
+
* Enable custom validate callbacks when validating import. Thanks to @afn via \#410.
|
325
|
+
* Prevent wrong IDs being set on models when using :on_duplicate_key_ignore.
|
326
|
+
Thanks to @afn, @jkowens via \#412.
|
327
|
+
|
328
|
+
## Changes in 0.18.1
|
329
|
+
|
330
|
+
### Fixes
|
331
|
+
|
332
|
+
* Fix to enable validation callbacks (before_validation,
|
333
|
+
after_validation). Thanks to @sinsoku, @jkowens via \#406.
|
334
|
+
|
335
|
+
## Changes in 0.18.0
|
336
|
+
|
337
|
+
### New Features
|
338
|
+
|
339
|
+
* Uniqueness validation is bypassed when validating models since
|
340
|
+
it cannot be guaranteed if there are duplicates in a batch.
|
341
|
+
Thanks to @jkowens via \#301.
|
342
|
+
* Allow for custom timestamp columns. Thanks to @mojidabckuu, @jkowens
|
343
|
+
via \#401.
|
344
|
+
|
345
|
+
### Fixes
|
346
|
+
|
347
|
+
* Fix ActiveRecord 5 issue coercing boolean values when serializing
|
348
|
+
for the database. Thanks to @rjrobinson, @jkowens via \#403.
|
349
|
+
|
350
|
+
## Changes in 0.17.2
|
351
|
+
|
352
|
+
### Fixes
|
353
|
+
|
354
|
+
* Fix issue where PostgreSQL cannot recognize columns if names
|
355
|
+
include mixed case characters. Thanks to @hugobgranja via \#379.
|
356
|
+
* Fix an issue for ActiveRecord 5 where serialized fields with
|
357
|
+
default values were not being typecast. Thanks to @whistlerbrk,
|
358
|
+
@jkowens via \#386.
|
359
|
+
* Add option :force_single_insert for MySQL to make sure a single
|
360
|
+
insert is attempted instead of performing multiple inserts based
|
361
|
+
on max_allowed_packet. Thanks to @mtparet via \#387.
|
362
|
+
|
363
|
+
## Changes in 0.17.1
|
364
|
+
|
365
|
+
### Fixes
|
366
|
+
|
367
|
+
* Along with setting id on models for adapters that support it,
|
368
|
+
add created_at and updated_at timestamps. Thanks to @jacob-carlborg
|
369
|
+
via \#364.
|
370
|
+
* Properly set returned ids when using composite_primary_keys.
|
371
|
+
Thanks to @guigs, @jkowens via \#371.
|
372
|
+
|
373
|
+
## Changes in 0.17.0
|
374
|
+
|
375
|
+
### New Features
|
376
|
+
|
377
|
+
* Add support for composite_primary_keys gem. Thanks to @jkowens
|
378
|
+
via \#350.
|
379
|
+
* Add support for importing an array of hashes. Thanks to @jkowens
|
380
|
+
via \#352.
|
381
|
+
* Add JDBC SQLite3 support. Thanks to @jkowens via \#356.
|
382
|
+
|
383
|
+
### Fixes
|
384
|
+
|
385
|
+
* Remove support for SQLite recursive imports. See \#351.
|
386
|
+
* Improve import speed for Rails 5. Thanks to @ranchodeluxe, @jkowens
|
387
|
+
via \#359.
|
388
|
+
|
389
|
+
## Changes in 0.16.2
|
390
|
+
|
391
|
+
### Fixes
|
392
|
+
|
393
|
+
* Fixes issue clearing query cache on wrong connection when using
|
394
|
+
multiple databases. Thanks to @KentoMoriwaki via \#337
|
395
|
+
* Raises an ArgumentError on incorrect usage of nested arrays. Thanks
|
396
|
+
to @Nitrodist via \#340
|
397
|
+
* Fixes issue that prevented uuid primary keys from being set manually.
|
398
|
+
Thanks to @Dclusin-og, @jkowens via \#342
|
399
|
+
|
400
|
+
## Changes in 0.16.1
|
401
|
+
|
402
|
+
### Fixes
|
403
|
+
|
404
|
+
* Fixes issue with missing error messages on failed instances when
|
405
|
+
importing using arrays of columns and values. Thanks to @Fivell via \#332
|
406
|
+
* Update so SQLite only return ids if table has a primary key field via \#333
|
407
|
+
|
408
|
+
|
409
|
+
## Changes in 0.16.0
|
410
|
+
|
411
|
+
### New Features
|
412
|
+
|
413
|
+
* Add partial index upsert support for PostgreSQL. Thanks to @luislew via \#305
|
414
|
+
* Add UUID primary key support for PostgreSQL. Thanks to @jkowens via
|
415
|
+
\#312
|
416
|
+
* Add store accessor support for JSON, JSON, and HSTORE data types.
|
417
|
+
Thanks to @jkowens via \#322
|
418
|
+
* Log warning if database does not support :on_duplicate_key_update.
|
419
|
+
Thanks to @jkowens via \#324
|
420
|
+
* Add option :on_duplicate_key_ignore for MySQL and SQLite. Thanks to
|
421
|
+
@jkowens via \#326
|
422
|
+
|
423
|
+
### Fixes
|
424
|
+
|
425
|
+
* Fixes issue with recursive import using same primary key for all models.
|
426
|
+
Thanks to @chopraanmol1 via \#309
|
427
|
+
* Fixes issue importing from STI subclass with polymorphic associations.
|
428
|
+
Thanks to @JNajera via \#314
|
429
|
+
* 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
|
430
|
+
|
431
|
+
|
432
|
+
## Changes in 0.15.0
|
433
|
+
|
434
|
+
### New Features
|
435
|
+
|
436
|
+
* 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
|
437
|
+
* Support for Rails 5.0 final release for all except the JDBC driver which is not yet updated to support Rails 5.0
|
438
|
+
|
439
|
+
### Fixes
|
440
|
+
|
441
|
+
* 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
|
442
|
+
|
443
|
+
### Misc
|
444
|
+
|
445
|
+
* `raise_error` is used to raise errors for ActiveRecord 5.0. Thanks to @couragecourag via \#294 `raise_record_invalid` has been
|
446
|
+
|
447
|
+
|
1
448
|
## Changes in 0.14.1
|
2
449
|
|
3
450
|
### Fixes
|
4
451
|
|
5
|
-
* JRuby/JDBCDriver with PostgreSQL will no longer raise a JDBCDriver error when using the :no_returning boolean option. Thanks to
|
452
|
+
* JRuby/JDBCDriver with PostgreSQL will no longer raise a JDBCDriver error when using the :no_returning boolean option. Thanks to @jkowens via \#287
|
6
453
|
|
7
454
|
## Changes in 0.14.0
|
8
455
|
|
@@ -26,7 +473,6 @@
|
|
26
473
|
* Code cleanup, removal of deprecated `alias_method_chain`. Thanks to @codeodor via \#271
|
27
474
|
|
28
475
|
|
29
|
-
|
30
476
|
## Changes in 0.13.0
|
31
477
|
|
32
478
|
### New Features
|