Class: ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
- Defined in:
- lib/composite_primary_keys/connection_adapters/abstract_mysql_adapter.rb
Instance Method Summary collapse
Instance Method Details
#subquery_for(key, select) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/composite_primary_keys/connection_adapters/abstract_mysql_adapter.rb', line 4 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) # CPK #subselect.project Arel.sql(key.name) subselect.project Arel.sql(Array(key).map(&:name).join(', ')) subselect.from subsubselect.as('__active_record_temp') end |