def execute
      return unless @start && @limit
      @next_to_insert = @start
      while @next_to_insert <= @limit
        stride = @throttler.stride
        affected_rows = @connection.update(copy(bottom, top(stride)))

        if @throttler && affected_rows > 0
          @throttler.run
        end

        @printer.notify(bottom, @limit)
        @next_to_insert = top(stride) + 1
        break if @start == @limit
      end
      @printer.end
    end
def execute
      return unless @start && @limit
      @next_to_insert = @start
      while @next_to_insert <= @limit
        stride = @throttler.stride
        affected_rows = @connection.update(copy(bottom, top(stride)))

        if @throttler && affected_rows > 0
          @throttler.run
        end

        @printer.notify(bottom, @limit)
        @next_to_insert = top(stride) + 1
        break if @start == @limit
      end
      @printer.end
    end
Copy from origin to destination in chunks of size `stride`.
 Use the `throttler` class to sleep between each stride.