# File lib/rubyrep/proxy_block_cursor.rb, line 110
    def checksum(options = {})
      reset_checksum
      return_row = row = nil
      row_count = 0

      if options.include? :proxy_block_size
        block_size = options[:proxy_block_size]
        raise ":proxy_block_size must be greater than 0" unless block_size > 0
        while row_count < block_size and next?
          row = next_row
          update_checksum(row)
          row_count += 1
        end
        return_row = row
      elsif options.include? :max_row
        max_row = options[:max_row]
        while next?
          row = next_row
          rank = rank_rows row, max_row
          if rank > 0 
            # row > max_row ==> save the current row and break off
            self.last_row = row
            break
          end
          row_count += 1
          update_checksum(row)
          return_row, row = row, nil
        end  
      else
        raise "options must include either :proxy_block_size or :max_row"
      end
      return_keys = return_row.reject {|key, | not primary_key_names.include? key} if return_row
      return return_keys, current_checksum, row_count
    end