diff options
author | Yves Senn <yves.senn@gmail.com> | 2014-05-30 13:18:31 +0200 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2014-05-30 13:20:37 +0200 |
commit | d6c1205584b1ba597db4071b168681678b1e9875 (patch) | |
tree | f8d5c9d1da84cbe5baa65c8a32470ea6377d1769 /activerecord | |
parent | 6c2b569660c9216595d02ce6412e3bdcc7293317 (diff) | |
download | rails-d6c1205584b1ba597db4071b168681678b1e9875.tar.gz rails-d6c1205584b1ba597db4071b168681678b1e9875.tar.bz2 rails-d6c1205584b1ba597db4071b168681678b1e9875.zip |
pg, `default_sequence_name` respects schema. Closes #7516.
Diffstat (limited to 'activerecord')
3 files changed, 12 insertions, 10 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index 1ed45d8a18..964357c4a2 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,7 @@ +* PostgreSQL `default_sequence_name` respects schema. Fixes #7516. + + *Yves Senn* + * Fixed `columns_for_distinct` of postgresql adapter to work correctly with orders without sort direction modifiers. 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 0eaaa97454..09db337a82 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb @@ -273,9 +273,9 @@ module ActiveRecord def default_sequence_name(table_name, pk = nil) #:nodoc: result = serial_sequence(table_name, pk || 'id') return nil unless result - result.split('.').last + Utils.extract_schema_qualified_name(result) rescue ActiveRecord::StatementInvalid - "#{table_name}_#{pk || 'id'}_seq" + PostgreSQL::Name.new(nil, "#{table_name}_#{pk || 'id'}_seq") end def serial_sequence(table, column) diff --git a/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb b/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb index aaa874af7d..cfff1f980b 100644 --- a/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb +++ b/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb @@ -134,18 +134,18 @@ module ActiveRecord end def test_default_sequence_name - assert_equal 'accounts_id_seq', + assert_equal PostgreSQL::Name.new('public', 'accounts_id_seq'), @connection.default_sequence_name('accounts', 'id') - assert_equal 'accounts_id_seq', + assert_equal PostgreSQL::Name.new('public', 'accounts_id_seq'), @connection.default_sequence_name('accounts') end def test_default_sequence_name_bad_table - assert_equal 'zomg_id_seq', + assert_equal PostgreSQL::Name.new(nil, 'zomg_id_seq'), @connection.default_sequence_name('zomg', 'id') - assert_equal 'zomg_id_seq', + assert_equal PostgreSQL::Name.new(nil, 'zomg_id_seq'), @connection.default_sequence_name('zomg') end @@ -153,8 +153,7 @@ module ActiveRecord with_example_table do pk, seq = @connection.pk_and_sequence_for('ex') assert_equal 'id', pk - expected = PostgreSQL::Name.new("public", @connection.default_sequence_name('ex', 'id')) - assert_equal expected, seq + assert_equal @connection.default_sequence_name('ex', 'id'), seq end end @@ -162,8 +161,7 @@ module ActiveRecord with_example_table 'code serial primary key' do pk, seq = @connection.pk_and_sequence_for('ex') assert_equal 'code', pk - expected = PostgreSQL::Name.new("public", @connection.default_sequence_name('ex', 'code')) - assert_equal expected, seq + assert_equal @connection.default_sequence_name('ex', 'code'), seq end end |