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 /activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | |
parent | 95e87bfaa344a4d421a32890574d06b1eb2deb92 (diff) | |
download | rails-efd2be35510af7b02e70e4c5939720d7b12bc1c1.tar.gz rails-efd2be35510af7b02e70e4c5939720d7b12bc1c1.tar.bz2 rails-efd2be35510af7b02e70e4c5939720d7b12bc1c1.zip |
reloading type map on extension changing
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 13 |
1 files changed, 11 insertions, 2 deletions
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' } |