class ActiveRecord::Result

def hash_rows

def hash_rows
  @hash_rows ||=
    begin
      # We freeze the strings to prevent them getting duped when
      # used as keys in ActiveRecord::Base's @attributes hash
      columns = @columns.map { |c| c.dup.freeze }
      @rows.map { |row|
        # In the past we used Hash[columns.zip(row)]
        #  though elegant, the verbose way is much more efficient
        #  both time and memory wise cause it avoids a big array allocation
        #  this method is called a lot and needs to be micro optimised
        hash = {}
        index = 0
        length = columns.length
        while index < length
          hash[columns[index]] = row[index]
          index += 1
        end
        hash
      }
    end
end