2 module ConnectionAdapters
3 class PostgreSQLAdapter
4 alias_method :old_pk_and_sequence_for, :pk_and_sequence_for
6 def pk_and_sequence_for(table)
7 result = query(<<-end_sql, 'PK and serial sequence')[0]
8 SELECT attr.attname, seq.relname
14 WHERE seq.oid = dep.objid
16 AND attr.attrelid = dep.refobjid
17 AND attr.attnum = dep.refobjsubid
18 AND attr.attrelid = cons.conrelid
19 AND attr.attnum = cons.conkey[1]
20 AND cons.contype = 'p'
21 AND dep.classid = '"pg_class"'::regclass
22 AND dep.refclassid = '"pg_class"'::regclass
23 AND dep.refobjid = '#{quote_table_name(table)}'::regclass
26 if result.nil? or result.empty?
27 old_pk_and_sequence_for(table)
29 [result.first, result.last]