Skip to content

Commit e81eb75

Browse files
committed
Leave order by alone when same column crosses two tables.
1 parent dab3498 commit e81eb75

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22
MASTER
33

4+
* Leave order by alone when same column crosses two tables [Ransom Briggs]
5+
46

57
* 2.3 * (December 1st, 2009)
68

lib/active_record/connection_adapters/sqlserver_adapter/core_ext/active_record.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,11 @@ def add_order_with_sqlserver_unique_checking!(sql, order, scope = :auto)
8383
else
8484
[nil, ord_tn_and_cn.first]
8585
end
86-
if (ord_table_name && ord_table_name == select_table_name && unique_order_hash[ord_column_name]) || unique_order_hash[ord_column_name]
86+
unique_key = [(ord_table_name || select_table_name), ord_column_name]
87+
if unique_order_hash[unique_key]
8788
array
8889
else
89-
unique_order_hash[ord_column_name] = true
90+
unique_order_hash[unique_key] = true
9091
array << "#{ord} #{dir}".strip
9192
end
9293
end.join(', ')

test/cases/adapter_test_sqlserver.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ def setup
218218
assert_equal 'MIN(comments.id) DESC, MIN(comments.post_id) ASC', order_to_min_set(@two_orders_with_desc_and_asc)
219219
end
220220

221+
should 'leave order by alone when same column crosses two tables' do
222+
assert_equal ' ORDER BY developers.name, projects.name', add_order!('developers.name, projects.name')
223+
end
224+
221225
end
222226

223227
context 'with different language' do

0 commit comments

Comments
 (0)