instance method
subquery_for
Ruby on Rails 4.2.9
Since v4.0.13 Last seen in v5.2.8.1Signature
subquery_for(key, select)
MySQL is too stupid to create a temporary table for use subquery, so we have to give it some prompting in the form of a subsubquery. Ugh!
Parameters
-
keyreq -
selectreq
Source
# File activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb, line 735
def subquery_for(key, select)
subsubselect = select.clone
subsubselect.projections = [key]
# Materialize subquery by adding distinct
# to work with MySQL 5.7.6 which sets optimizer_switch='derived_merge=on'
subsubselect.distinct unless select.limit || select.offset || select.orders.any?
subselect = Arel::SelectManager.new(select.engine)
subselect.project Arel.sql(key.name)
subselect.from subsubselect.as('__active_record_temp')
end
Defined in activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb line 735
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter