diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2019-06-19 13:04:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-19 13:04:32 +0200 |
commit | aae270de9e0862f31b14642908472d235a17936f (patch) | |
tree | 5767421c16e244e15de4043afaa2d8f7a539c8c5 /activerecord/lib/active_record/connection_adapters/postgresql | |
parent | aeba121a83965d242ed6d7fd46e9c166079a3230 (diff) | |
parent | 17acb771d815f030ac1cf36b1af4050f02816c39 (diff) | |
download | rails-aae270de9e0862f31b14642908472d235a17936f.tar.gz rails-aae270de9e0862f31b14642908472d235a17936f.tar.bz2 rails-aae270de9e0862f31b14642908472d235a17936f.zip |
Merge pull request #35891 from Shopify/schema-cache-deduplication
Deduplicate various Active Record schema cache structures
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/column.rb | 13 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/type_metadata.rb | 8 |
2 files changed, 21 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/column.rb b/activerecord/lib/active_record/connection_adapters/postgresql/column.rb index ec25bb1e19..b4ea6c42d3 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/column.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/column.rb @@ -23,6 +23,19 @@ module ActiveRecord def sql_type super.sub(/\[\]\z/, "") end + + def ==(other) + other.is_a?(Column) && + super && + serial? == other.serial? + end + alias :eql? :== + + def hash + Column.hash ^ + super.hash ^ + serial?.hash + end end end PostgreSQLColumn = PostgreSQL::Column # :nodoc: diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/type_metadata.rb b/activerecord/lib/active_record/connection_adapters/postgresql/type_metadata.rb index 8bdec623af..b7f6479357 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/type_metadata.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/type_metadata.rb @@ -7,6 +7,8 @@ module ActiveRecord class TypeMetadata < DelegateClass(SqlTypeMetadata) undef to_yaml if method_defined?(:to_yaml) + include Deduplicable + attr_reader :oid, :fmod def initialize(type_metadata, oid: nil, fmod: nil) @@ -29,6 +31,12 @@ module ActiveRecord oid.hash ^ fmod.hash end + + private + def deduplicated + __setobj__(__getobj__.deduplicate) + super + end end end PostgreSQLTypeMetadata = PostgreSQL::TypeMetadata |