aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
diff options
context:
space:
mode:
authorJosh Williams <jwilliams@endpoint.com>2013-11-19 15:50:14 -0500
committerJosh Williams <jwilliams@endpoint.com>2014-03-20 07:29:00 -0400
commit0110d7b714a6ecc810a38ef5a27b66ec321995e5 (patch)
tree732a5b9ec73b4af9a731fcaf480e8a2e2f23bd28 /activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
parent8cea8ae278c0e0417e5d58a387cc5d31c0590251 (diff)
downloadrails-0110d7b714a6ecc810a38ef5a27b66ec321995e5.tar.gz
rails-0110d7b714a6ecc810a38ef5a27b66ec321995e5.tar.bz2
rails-0110d7b714a6ecc810a38ef5a27b66ec321995e5.zip
Postgres schema: Constrain sequence search classid
The pk_an_sequence_for query previously joined against pg_class's oid for rows in pg_depend, but pg_depend's objid may point to other system tables, such as pg_attrdef. If a row in one of those other tables coincidentally has the same oid as an (unrelated) sequence, that sequence name may be returned instead of the real one. This ensures that only the pg_depend entries pointing to pg_class are considered.
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.rb1
1 files changed, 1 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 ae8ede4b42..e0afa989cd 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
@@ -327,6 +327,7 @@ module ActiveRecord
AND attr.attrelid = cons.conrelid
AND attr.attnum = cons.conkey[1]
AND cons.contype = 'p'
+ AND dep.classid = 'pg_class'::regclass
AND dep.refobjid = '#{quote_table_name(table)}'::regclass
end_sql