Method: ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter#columns_for_distinct
- Defined in:
- activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
#columns_for_distinct(columns, orders) ⇒ Object
In MySQL 5.7.5 and up, ONLY_FULL_GROUP_BY affects handling of queries that use DISTINCT and ORDER BY. It requires the ORDER BY columns in the select list for distinct queries, and requires that the ORDER BY include the distinct column. See dev.mysql.com/doc/refman/en/group-by-handling.html
611 612 613 614 615 616 617 618 619 620 |
# File 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb', line 611 def columns_for_distinct(columns, orders) # :nodoc: order_columns = orders.compact_blank.map { |s| # Convert Arel node to string s = visitor.compile(s) unless s.is_a?(String) # Remove any ASC/DESC modifiers s.gsub(/\s+(?:ASC|DESC)\b/i, "") }.compact_blank.map.with_index { |column, i| "#{column} AS alias_#{i}" } (order_columns << super).join(", ") end |