4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/composite_primary_keys/connection_adapters/abstract_mysql_adapter.rb', line 4
def subquery_for(key, select)
subselect = select.clone
subselect.projections = [key]
subselect.distinct unless select.limit || select.offset || select.orders.any?
if key.is_a?(Array)
key_names = key.map(&:name).map {|key_name| Arel.sql(key_name)}
Arel::SelectManager.new(subselect.as("__active_record_temp")).project(key_names)
else
key_name = quote_column_name(key.name)
Arel::SelectManager.new(subselect.as("__active_record_temp")).project(Arel.sql(key_name))
end
end
|