1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

pg, default_sequence_name respects schema. Closes #7516.

This commit is contained in:
Yves Senn 2014-05-30 13:18:31 +02:00
parent 6c2b569660
commit d6c1205584
3 changed files with 12 additions and 10 deletions

View file

@ -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.

View file

@ -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)

View file

@ -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