aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
diff options
context:
space:
mode:
authorJonathan Baudanza <jon@jonb.org>2014-01-12 17:53:16 -0500
committerJonathan Baudanza <jon@jonb.org>2014-01-16 15:00:27 -0800
commita099d7d97f80236185f1994a76a4366b2a5e21ab (patch)
tree4be4ce16a7546cfd0fe0f63e7cabe1ababf9f8f3 /activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
parentcaa981d88112f019ade868f75af6b5f399c244a4 (diff)
downloadrails-a099d7d97f80236185f1994a76a4366b2a5e21ab.tar.gz
rails-a099d7d97f80236185f1994a76a4366b2a5e21ab.tar.bz2
rails-a099d7d97f80236185f1994a76a4366b2a5e21ab.zip
psql implementation of #index_name_exists?
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
index 571257f6dd..ae8ede4b42 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
@@ -126,6 +126,19 @@ module ActiveRecord
SQL
end
+ def index_name_exists?(table_name, index_name, default)
+ exec_query(<<-SQL, 'SCHEMA').rows.first[0].to_i > 0
+ SELECT COUNT(*)
+ FROM pg_class t
+ INNER JOIN pg_index d ON t.oid = d.indrelid
+ INNER JOIN pg_class i ON d.indexrelid = i.oid
+ WHERE i.relkind = 'i'
+ AND i.relname = '#{index_name}'
+ AND t.relname = '#{table_name}'
+ AND i.relnamespace IN (SELECT oid FROM pg_namespace WHERE nspname = ANY (current_schemas(false)) )
+ SQL
+ end
+
# Returns an array of indexes for the given table.
def indexes(table_name, name = nil)
result = query(<<-SQL, 'SCHEMA')