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:
parent
6c2b569660
commit
d6c1205584
3 changed files with 12 additions and 10 deletions
|
@ -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.
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue