From d6c1205584b1ba597db4071b168681678b1e9875 Mon Sep 17 00:00:00 2001 From: Yves Senn Date: Fri, 30 May 2014 13:18:31 +0200 Subject: [PATCH] pg, `default_sequence_name` respects schema. Closes #7516. --- activerecord/CHANGELOG.md | 4 ++++ .../postgresql/schema_statements.rb | 4 ++-- .../adapters/postgresql/postgresql_adapter_test.rb | 14 ++++++-------- 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 @@ def client_min_messages=(level) 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 @@ def test_serial_sequence 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 @@ def test_pk_and_sequence_for 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 @@ def test_pk_and_sequence_for_with_non_standard_primary_key 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 -- GitLab