# see PR: https://github.com/rails/rails/pull/12185
#
class ActiveRecord::Associations::JoinDependency::JoinPart

  def extract_record(row)
    # Used to be: Hash[column_names_with_alias.map{|cn, an| [cn, row[an]]}]
    #  that is fairly inefficient cause all the values are first copied
    #  in to an array only to construct the Hash
    # This code is performance critical as it is called per row.
    hash = {}

    index = 0
    while index < column_names_with_alias.length do
      cn,an = column_names_with_alias[index]
      hash[cn] = row[an]
      index += 1
    end

    hash
  end
end