<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def fetchmany(self, size):
 """Returns a list of remaining rows, containing no more than size rows, used to process results in chunks. The list will be empty when there are no more rows. The default for cursor.arraysize is 1 which is no different than calling fetchone(). A ProgrammingError exception is raised if no SQL has been executed or if it did not return a result set (e.g. was not a SELECT statement). :param size: int, max number of rows to return """

        fut = self._run_operation(self._impl.fetchmany, size)
        return fut