# File lib/dm-aggregates/adapters/data_objects_adapter.rb, line 4 def aggregate(query) with_reader(read_statement(query), query.bind_values) do |reader| results = [] while(reader.next!) do row = query.fields.zip(reader.values).map do |field,value| if field.respond_to?(:operator) send(field.operator, field.target, value) else field.typecast(value) end end results << (query.fields.size > 1 ? row : row[0]) end results end end