aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2013-01-29 15:49:21 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2013-01-29 15:49:35 -0800
commitefd2be35510af7b02e70e4c5939720d7b12bc1c1 (patch)
tree52c4ad0c72af72d48c004c80b320ee29546fec64 /activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
parent95e87bfaa344a4d421a32890574d06b1eb2deb92 (diff)
downloadrails-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.rb13
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' }