def fetchall(self):
        """
        As in DBAPI2.0 (except the fact rows are not tuples but
        lists so if you try to modify them, you will succeed instead of
        the correct behavior that would be that an exception would have
        been raised)
        Additionally every row returned by this class is addressable
        by column name besides the column position in the query.
        """
        try:
            allrows = self.__dbapi2_cursor.fetchall()
        except Exception, e:
            self.__connection.reconnect(None, self.__log_reconnect)
            self.__dbapi2_cursor = self.__connection._get_raw_cursor()

            allrows = self.__dbapi2_cursor.fetchall()

        if not allrows:
            return allrows
        else:
            return [self.row(self.__col2idx_map, dbapi2_row) for dbapi2_row in allrows]
As in DBAPI2.0 (except the fact rows are not tuples but
        lists so if you try to modify them, you will succeed instead of
        the correct behavior that would be that an exception would have
        been raised)
        Additionally every row returned by this class is addressable
        by column name besides the column position in the query.