composite_primary_keys 12.0.8 → 12.0.9

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
2
  SHA256:
3
- metadata.gz: 8349636fa2a670d60ef8f8cf288d31f805aafebb8c3f0d121c23aafb4f34dc08
4
- data.tar.gz: 7932c338e6e3fad7831715dff3b879a9364356e19b93eeba8e5db55e74f6ad25
3
+ metadata.gz: 2465cca0fa83a628e24f3221e88095690295c99b2bf46818bd2ebd76df8300b5
4
+ data.tar.gz: a22c2b61575c26e23e51b314c05c158663c26ce7a9c64fb56019d596edc6a844
5
5
  SHA512:
6
- metadata.gz: 9659459ef7f9d4a0331e778904d7c3fe869c18c638a9b852bd1961cd8892699e6ef6e7cbea3127510926277cc6ad21a1ecd5d0e722f229b883361be02dc7aff9
7
- data.tar.gz: 7dd7ce6eac76e6728f00337f325d55014b04e209458d826e439454a53eee9668f4e5cb165a2dfa07d4c9821d75f88666b156a66a875c78e87ce97dec35f7d262
6
+ metadata.gz: 3147006b49f98c3d1e88dbec56590fad63c13506634427361e14e06d611e75666c89c48c3e9151d174dc075d850a238285be6bc62739d8971d7bf190bc6e9db9
7
+ data.tar.gz: 34d811c5ab6afb7d5b4b9dc871b2df660f42abaf146ffc7faa60c9d4d2edfb8c1a8fa6e49b40488a6090a7bb64218fafb6b0e965744b4daa0d11c0fc34605abf
data/History.rdoc CHANGED
@@ -1,3 +1,6 @@
1
+ == 12.0.9 (2021-02-22)
2
+ * Third time is hopefully the charm on MySQL/MariaDB auto increment fix
3
+
1
4
  == 12.0.8 (2021-02-16)
2
5
  * Revert to previous MySQL/MariaDB auto increment fix
3
6
 
@@ -62,7 +62,6 @@ require 'active_record/nested_attributes'
62
62
  require 'active_record/connection_adapters/abstract/database_statements'
63
63
  require 'active_record/connection_adapters/abstract_adapter'
64
64
  require 'active_record/connection_adapters/postgresql/database_statements'
65
- require 'active_record/connection_adapters/mysql/database_statements'
66
65
 
67
66
  require 'active_record/relation/where_clause'
68
67
 
@@ -100,7 +99,6 @@ require_relative 'composite_primary_keys/nested_attributes'
100
99
 
101
100
  require_relative 'composite_primary_keys/connection_adapters/abstract/database_statements'
102
101
  require_relative 'composite_primary_keys/connection_adapters/abstract_adapter'
103
- require_relative 'composite_primary_keys/connection_adapters/mysql/database_statements'
104
102
  require_relative 'composite_primary_keys/connection_adapters/postgresql/database_statements'
105
103
  require_relative 'composite_primary_keys/connection_adapters/sqlserver/database_statements'
106
104
 
@@ -5,16 +5,31 @@ module ActiveRecord
5
5
  sql, binds = to_sql_and_binds(arel, binds)
6
6
  value = exec_insert(sql, name, binds, pk, sequence_name)
7
7
 
8
+ return id_value if id_value
9
+
8
10
  if pk.is_a?(Array) && !value.empty?
9
11
  # This is a CPK model and the query result is not empty. Thus we can figure out the new ids for each
10
12
  # auto incremented field
11
- id_value || pk.map {|key| value.first[key]}
13
+ pk.map {|key| value.first[key]}
12
14
  elsif pk.is_a?(Array)
13
- # This is CPK, but we don't know what autoincremented fields were updated. So return nil, which means
14
- # the existing id_value of the model will be used.
15
- id_value || Array.new(pk.size)
15
+ # This is CPK, but we don't know what autoincremented fields were updated.
16
+ result = Array.new(pk.size)
17
+
18
+ # Is there an autoincrementing field?
19
+ auto_key = pk.find do |key|
20
+ attribute = arel.ast.relation[key]
21
+ column = column_for_attribute(attribute)
22
+ if column.respond_to?(:auto_increment?)
23
+ column.auto_increment?
24
+ end
25
+ end
26
+
27
+ if auto_key
28
+ result[pk.index(auto_key)] = last_inserted_id(value)
29
+ end
30
+ result
16
31
  else
17
- id_value || last_inserted_id(value)
32
+ last_inserted_id(value)
18
33
  end
19
34
  end
20
35
  end
@@ -2,7 +2,7 @@ module CompositePrimaryKeys
2
2
  module VERSION
3
3
  MAJOR = 12
4
4
  MINOR = 0
5
- TINY = 8
5
+ TINY = 9
6
6
  STRING = [MAJOR, MINOR, TINY].join('.')
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: composite_primary_keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.0.8
4
+ version: 12.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charlie Savage
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-16 00:00:00.000000000 Z
11
+ date: 2021-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -71,7 +71,6 @@ files:
71
71
  - lib/composite_primary_keys/composite_relation.rb
72
72
  - lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb
73
73
  - lib/composite_primary_keys/connection_adapters/abstract_adapter.rb
74
- - lib/composite_primary_keys/connection_adapters/mysql/database_statements.rb
75
74
  - lib/composite_primary_keys/connection_adapters/postgresql/database_statements.rb
76
75
  - lib/composite_primary_keys/connection_adapters/sqlserver/database_statements.rb
77
76
  - lib/composite_primary_keys/core.rb
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveRecord
4
- module ConnectionAdapters
5
- module MySQL
6
- module DatabaseStatements
7
- def insert(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = [])
8
- sql, binds = to_sql_and_binds(arel, binds)
9
- value = exec_insert(sql, name, binds, pk, sequence_name)
10
-
11
- # CPK
12
- if pk.is_a?(Array)
13
- pk.map do |key|
14
- column = column_for(arel.ast.relation.name, key)
15
- column.auto_increment? ? last_inserted_id(value) : nil
16
- end
17
- else
18
- id_value || last_inserted_id(value)
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end