diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2011-04-11 14:38:42 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2011-04-11 14:38:42 -0700 |
commit | 622f23b604546784aeab3cca5a47f0d6b281cf91 (patch) | |
tree | 10e61826a12b5c767a221b925d8e507c748227e8 /activerecord/lib/active_record | |
parent | 75dc9fbac76a2da78b8d21e1ede16fea38d16564 (diff) | |
download | rails-622f23b604546784aeab3cca5a47f0d6b281cf91.tar.gz rails-622f23b604546784aeab3cca5a47f0d6b281cf91.tar.bz2 rails-622f23b604546784aeab3cca5a47f0d6b281cf91.zip |
wrap the pg_get_serial_sequence function and reuse it for the default sequence name
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 12 |
1 files changed, 10 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 015d5eb646..2283a5bb68 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -748,8 +748,16 @@ module ActiveRecord # Returns the sequence name for a table's primary key or some other specified key. def default_sequence_name(table_name, pk = nil) #:nodoc: - default_pk, default_seq = pk_and_sequence_for(table_name) - default_seq || "#{table_name}_#{pk || default_pk || 'id'}_seq" + serial_sequence(table_name, pk || 'id').split('.').last + rescue ActiveRecord::StatementInvalid + "#{table_name}_#{pk || 'id'}_seq" + end + + def serial_sequence(table, column) + result = exec_query(<<-eosql, 'SCHEMA', [[nil, table], [nil, column]]) + SELECT pg_get_serial_sequence($1, $2) + eosql + result.rows.first.first end # Resets the sequence of a table's primary key to the maximum value. |