def each_row(options={}, &block)
          options = {:connection => self.connection}.merge(options)
          cursor  = PostgreSQLCursor::Cursor.new(to_unprepared_sql, options)
          return cursor.each_row(&block) if block_given?
          cursor
        end
Public: Executes the query, returning each row as a hash
to the given block.

options     - Hash to control
fraction: 0.1..1.0    - The cursor_tuple_fraction (default 1.0)
block_size: 1..n      - The number of rows to fetch per db block fetch
while: value          - Exits loop when block does not return this value.
until: value          - Exits loop when block returns this value.
cursor_name: string   - Allows you to name your cursor.

Example:
Post.where(user_id:123).each_row { |hash| Post.process(hash) }
Post.each_row.map {|r| r["id"].to_i }

Returns the number of rows yielded to the block