@@ -58,6 +58,11 @@ def visit_Arel_Nodes_Limit o, collector
5858 end
5959 end
6060
61+ def visit_Arel_Nodes_Grouping ( o , collector )
62+ remove_invalid_ordering_from_select_statement ( o . expr )
63+ super
64+ end
65+
6166 def visit_Arel_Nodes_SelectStatement o , collector
6267 @select_statement = o
6368 distinct_One_As_One_Is_So_Not_Fetch o
@@ -127,14 +132,11 @@ def visit_Arel_Nodes_OuterJoin o, collector
127132 visit o . right , collector
128133 end
129134
130- # Need to remove ordering from subqueries unless TOP/OFFSET also used. Otherwise, SQLServer
131- # returns error "The ORDER BY clause is invalid in views, inline functions, derived tables,
132- # subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified."
133135 def collect_in_clause ( left , right , collector )
134136 if Array === right
135- right . each { |node | remove_invalid_ordering_from_in_clause ( node ) }
137+ right . each { |node | remove_invalid_ordering_from_select_statement ( node ) }
136138 else
137- remove_invalid_ordering_from_in_clause ( right )
139+ remove_invalid_ordering_from_select_statement ( right )
138140 end
139141
140142 super
@@ -231,7 +233,10 @@ def remote_server_table_name o
231233 ) . quoted
232234 end
233235
234- def remove_invalid_ordering_from_in_clause ( node )
236+ # Need to remove ordering from subqueries unless TOP/OFFSET also used. Otherwise, SQLServer
237+ # returns error "The ORDER BY clause is invalid in views, inline functions, derived tables,
238+ # subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified."
239+ def remove_invalid_ordering_from_select_statement ( node )
235240 return unless Arel ::Nodes ::SelectStatement === node
236241
237242 node . orders = [ ] unless node . offset || node . limit
0 commit comments