diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2013-01-29 15:49:21 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2013-01-29 15:49:35 -0800 |
commit | efd2be35510af7b02e70e4c5939720d7b12bc1c1 (patch) | |
tree | 52c4ad0c72af72d48c004c80b320ee29546fec64 | |
parent | 95e87bfaa344a4d421a32890574d06b1eb2deb92 (diff) | |
download | rails-efd2be35510af7b02e70e4c5939720d7b12bc1c1.tar.gz rails-efd2be35510af7b02e70e4c5939720d7b12bc1c1.tar.bz2 rails-efd2be35510af7b02e70e4c5939720d7b12bc1c1.zip |
reloading type map on extension changing
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/oid.rb | 4 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 13 |
2 files changed, 15 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb index d90b9283ef..f4aa9d215a 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid.rb @@ -239,6 +239,10 @@ module ActiveRecord @mapping[oid] end + def clear + @mapping.clear + end + def key?(oid) @mapping.key? oid end diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 08354b9f81..5ce2f1b04c 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -586,11 +586,15 @@ module ActiveRecord end def enable_extension(name) - exec_query "CREATE EXTENSION IF NOT EXISTS #{name}" + exec_query("CREATE EXTENSION IF NOT EXISTS #{name}").tap { + reload_type_map + } end def disable_extension(name) - exec_query "DROP EXTENSION IF EXISTS #{name} CASCADE" + exec_query("DROP EXTENSION IF EXISTS #{name} CASCADE").tap { + reload_type_map + } end def extension_enabled?(name) @@ -666,6 +670,11 @@ module ActiveRecord private + def reload_type_map + OID::TYPE_MAP.clear + initialize_type_map + end + def initialize_type_map result = execute('SELECT oid, typname, typelem, typdelim, typinput FROM pg_type', 'SCHEMA') leaves, nodes = result.partition { |row| row['typelem'] == '0' } |