From d9ac62c91466e40b557d27c4d712f86759d63a4b Mon Sep 17 00:00:00 2001 From: Matthew Rudy Jacobs Date: Sun, 21 Nov 2010 00:18:33 +0800 Subject: [PATCH 1/2] Fix Bug: disable_referential_integrity doesn't work for postgres 9.0.1 --- .../connection_adapters/postgresql_adapter.rb | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-) diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index ccc5085..7dd81ab 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -404,10 +404,7 @@ module ActiveRecord # REFERENTIAL INTEGRITY ==================================== def supports_disable_referential_integrity?() #:nodoc: - version = query("SHOW server_version")[0][0].split('.') - version[0].to_i >= 8 && version[1].to_i >= 1 - rescue - return false + postgresql_version >= 80100 end def disable_referential_integrity #:nodoc: -- 1.7.0.3 From 16d7ba0698ef28efab31940ba4d3aed237814c7e Mon Sep 17 00:00:00 2001 From: Matthew Rudy Jacobs Date: Sun, 21 Nov 2010 20:45:01 +0800 Subject: [PATCH 2/2] Cleaner way to extract the Postgres version --- .../connection_adapters/postgresql_adapter.rb | 8 ++++++-- 1 files changed, 6 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 7dd81ab..a4b1aa7 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -953,8 +953,12 @@ module ActiveRecord else # Mimic PGconn.server_version behavior begin - query('SELECT version()')[0][0] =~ /PostgreSQL (\d+)\.(\d+)\.(\d+)/ - ($1.to_i * 10000) + ($2.to_i * 100) + $3.to_i + if query('SELECT version()')[0][0] =~ /PostgreSQL ([0-9.]+)/ + major, minor, tiny = $1.split(".") + (major.to_i * 10000) + (minor.to_i * 100) + tiny.to_i + else + 0 + end rescue 0 end -- 1.7.0.3