def limit(self, n, skip=None):
        """
        Limit the result set. However when the query set already has limit field before,
        this would raise an exception
        :Parameters:
        - n : The maximum number of rows returned
        - skip: how many rows to skip
        :Return: a new QuerySet object so we can chain operations
        """
        if self.query.limit is not None:
            raise MonSQLException('LIMIT already defined')

        new_query_set = self.clone()
        new_query_set.query.limit = n
        new_query_set.query.skip = skip

        return new_query_set