Sha256: 68b1991823257029e434b3435441fd1edb2a5d10b160364864b7b96b0149ef46

Contents?: true

Size: 1012 Bytes

Versions: 1

Compression:

Stored size: 1012 Bytes

Contents

module ActiveRecord
  module ConnectionAdapters
    class AbstractMysqlAdapter
      def subquery_for(key, select)
        subselect = select.clone
        subselect.projections = [key]

        # Materialize subquery by adding distinct
        # to work with MySQL 5.7.6 which sets optimizer_switch='derived_merge=on'
        subselect.distinct unless select.limit || select.offset || select.orders.any?

        # CPK
        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

        # CPK
        #subselect.project Arel.sql(key.name)
#        subselect.project Arel.sql(Array(key).map(&:name).join(', '))

 #       subselect.from subsubselect.as('__active_record_temp')
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
composite_primary_keys-11.0.0.rc2 lib/composite_primary_keys/connection_adapters/abstract_mysql_adapter.rb