Merge pull request #25987 from aquajach/master
Fix does_not_support_reverse? to find sql functions with commas in nested brackets
This commit is contained in:
commit
8debad2a18
@ -1137,7 +1137,7 @@ def reverse_sql_order(order_query)
|
||||
|
||||
def does_not_support_reverse?(order)
|
||||
# Uses SQL function with multiple arguments.
|
||||
/\([^()]*,[^()]*\)/.match?(order) ||
|
||||
(order.include?(',') && order.split(',').find { |section| section.count('(') != section.count(')')}) ||
|
||||
# Uses "nulls first" like construction.
|
||||
/nulls (first|last)\Z/i.match?(order)
|
||||
end
|
||||
|
@ -240,6 +240,15 @@ def test_reverse_order_with_multiargument_function
|
||||
assert_raises(ActiveRecord::IrreversibleOrderError) do
|
||||
Topic.order("concat(author_name, title)").reverse_order
|
||||
end
|
||||
assert_raises(ActiveRecord::IrreversibleOrderError) do
|
||||
Topic.order("concat(lower(author_name), title)").reverse_order
|
||||
end
|
||||
assert_raises(ActiveRecord::IrreversibleOrderError) do
|
||||
Topic.order("concat(author_name, lower(title))").reverse_order
|
||||
end
|
||||
assert_raises(ActiveRecord::IrreversibleOrderError) do
|
||||
Topic.order("concat(lower(author_name), title, length(title)").reverse_order
|
||||
end
|
||||
end
|
||||
|
||||
def test_reverse_order_with_nulls_first_or_last
|
||||
|
Loading…
Reference in New Issue
Block a user