class ActiveRecord::Result

def cast_values(type_overrides = {}) # :nodoc:

:nodoc:
def cast_values(type_overrides = {}) # :nodoc:
  if columns.one?
    # Separated to avoid allocating an array per row
    type = if type_overrides.is_a?(Array)
      type_overrides.first
    else
      column_type(columns.first, 0, type_overrides)
    end
    rows.map do |(value)|
      type.deserialize(value)
    end
  else
    types = if type_overrides.is_a?(Array)
      type_overrides
    else
      columns.map.with_index { |name, i| column_type(name, i, type_overrides) }
    end
    rows.map do |values|
      Array.new(values.size) { |i| types[i].deserialize(values[i]) }
    end
  end
end