# File lib/taps/data_stream.rb, line 280
  def load_buffer(chunksize)
    # make sure BasicObject is not polluted by subsequent requires
    Sequel::BasicObject.remove_methods!

    num = 0
    loop do
      limit = calc_limit(chunksize)
      # we have to use local variables in order for the virtual row filter to work correctly
      key = primary_key
      buf_limit = buffer_limit
      ds = table.order(*order_by).filter { key.sql_number > buf_limit }.limit(limit)
      log.debug "DataStreamKeyed#load_buffer SQL -> #{ds.sql}"
      data = ds.all
      self.buffer += data
      num += data.size
      if data.size > 0
        # keep a record of the last primary key value in the buffer
        state[:filter] = self.buffer.last[ primary_key ]
      end

      break if num >= chunksize or data.size == 0
    end
  end