aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2019-06-21 18:13:10 +0200
committerGitHub <noreply@github.com>2019-06-21 18:13:10 +0200
commit75a0cf4f8bc2e9be3e852a7b2e4ddd14380bd222 (patch)
treeb2dc61d60dca770c2e4c5a7a8195475cc513ee00 /activerecord/lib
parentc631e8d011a7cf3e7ade4e9e8db56d2b89bd530c (diff)
parentbba7c63a663b073034f4c73f0d59655751694e5a (diff)
downloadrails-75a0cf4f8bc2e9be3e852a7b2e4ddd14380bd222.tar.gz
rails-75a0cf4f8bc2e9be3e852a7b2e4ddd14380bd222.tar.bz2
rails-75a0cf4f8bc2e9be3e852a7b2e4ddd14380bd222.zip
Merge pull request #36529 from Shopify/schema-cache-deduplication-init-with
Also deduplicate schema cache data when using the init_with interface
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/schema_cache.rb12
1 files changed, 6 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/schema_cache.rb b/activerecord/lib/active_record/connection_adapters/schema_cache.rb
index 5da26171bb..d01327290d 100644
--- a/activerecord/lib/active_record/connection_adapters/schema_cache.rb
+++ b/activerecord/lib/active_record/connection_adapters/schema_cache.rb
@@ -35,11 +35,11 @@ module ActiveRecord
end
def init_with(coder)
- @columns = coder["columns"]
- @columns_hash = {}
- @primary_keys = coder["primary_keys"]
- @data_sources = coder["data_sources"]
- @indexes = coder["indexes"] || {}
+ @columns = deep_deduplicate(coder["columns"])
+ @columns_hash = @columns.transform_values { |columns| columns.index_by(&:name) }
+ @primary_keys = deep_deduplicate(coder["primary_keys"])
+ @data_sources = deep_deduplicate(coder["data_sources"])
+ @indexes = deep_deduplicate(coder["indexes"] || {})
@version = coder["version"]
@database_version = coder["database_version"]
end
@@ -127,9 +127,9 @@ module ActiveRecord
def marshal_load(array)
@version, @columns, _columns_hash, @primary_keys, @data_sources, @indexes, @database_version = array
@indexes ||= {}
- @columns_hash = {}
@columns = deep_deduplicate(@columns)
+ @columns_hash = @columns.transform_values { |columns| columns.index_by(&:name) }
@primary_keys = deep_deduplicate(@primary_keys)
@data_sources = deep_deduplicate(@data_sources)
@indexes = deep_deduplicate(@indexes)