mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
pg, default_sequence_name
needs to return a string.
This is a reacon tod6c1205584 (commitcomment-7502487)
This backwards incompatibility was introduced withd6c12055
to fix #7516. However both `connection.default_sequence_name` and `model.sequence_name` are public API. The PostgreSQL adapter should honor the interface and return strings. /cc @matthewd @chancancode
This commit is contained in:
parent
5cdd02ddd4
commit
3fe54b3a05
3 changed files with 12 additions and 8 deletions
|
@ -1,3 +1,7 @@
|
|||
* `default_sequence_name` from the PostgreSQL adapter returns a `String`.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Fixed a regression where whitespaces were stripped from DISTINCT queries in
|
||||
PostgreSQL.
|
||||
|
||||
|
|
|
@ -281,9 +281,9 @@ module ActiveRecord
|
|||
def default_sequence_name(table_name, pk = nil) #:nodoc:
|
||||
result = serial_sequence(table_name, pk || 'id')
|
||||
return nil unless result
|
||||
Utils.extract_schema_qualified_name(result)
|
||||
Utils.extract_schema_qualified_name(result).to_s
|
||||
rescue ActiveRecord::StatementInvalid
|
||||
PostgreSQL::Name.new(nil, "#{table_name}_#{pk || 'id'}_seq")
|
||||
PostgreSQL::Name.new(nil, "#{table_name}_#{pk || 'id'}_seq").to_s
|
||||
end
|
||||
|
||||
def serial_sequence(table, column)
|
||||
|
|
|
@ -134,18 +134,18 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def test_default_sequence_name
|
||||
assert_equal PostgreSQL::Name.new('public', 'accounts_id_seq'),
|
||||
assert_equal 'public.accounts_id_seq',
|
||||
@connection.default_sequence_name('accounts', 'id')
|
||||
|
||||
assert_equal PostgreSQL::Name.new('public', 'accounts_id_seq'),
|
||||
assert_equal 'public.accounts_id_seq',
|
||||
@connection.default_sequence_name('accounts')
|
||||
end
|
||||
|
||||
def test_default_sequence_name_bad_table
|
||||
assert_equal PostgreSQL::Name.new(nil, 'zomg_id_seq'),
|
||||
assert_equal 'zomg_id_seq',
|
||||
@connection.default_sequence_name('zomg', 'id')
|
||||
|
||||
assert_equal PostgreSQL::Name.new(nil, 'zomg_id_seq'),
|
||||
assert_equal 'zomg_id_seq',
|
||||
@connection.default_sequence_name('zomg')
|
||||
end
|
||||
|
||||
|
@ -153,7 +153,7 @@ module ActiveRecord
|
|||
with_example_table do
|
||||
pk, seq = @connection.pk_and_sequence_for('ex')
|
||||
assert_equal 'id', pk
|
||||
assert_equal @connection.default_sequence_name('ex', 'id'), seq
|
||||
assert_equal @connection.default_sequence_name('ex', 'id'), seq.to_s
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -161,7 +161,7 @@ module ActiveRecord
|
|||
with_example_table 'code serial primary key' do
|
||||
pk, seq = @connection.pk_and_sequence_for('ex')
|
||||
assert_equal 'code', pk
|
||||
assert_equal @connection.default_sequence_name('ex', 'code'), seq
|
||||
assert_equal @connection.default_sequence_name('ex', 'code'), seq.to_s
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue