提交 d6c12055 编写于 作者: Y Yves Senn

pg, `default_sequence_name` respects schema. Closes #7516.

上级 6c2b5696
* 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 @@ 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)
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册