← Back to team overview

pyax team mailing list archive

[Bug 320695] Re: Queries larger than the batch size fail when processing queryMore results

 

It is my feeling a reasonable fix would look something like this:

    def __processQueryResult(self, query_result):
        """ processes the result from a query or queryAll call into an
        Batch, calling queryMore as necessary to complete the query
        operation

        @param query_result: return result from a query or queryAll call
        @note: Although queryMore also returns a query_result this is not
            intended to be a primary input to this method. Rather, these are
            handled internally to this method and aggregated into the
            query_result_batch

        @return: a Batch populated with the sobject(s) found by the
            query call that produced the query_result parameter.
        @rtype: pyax.sobject.batch.Batch
        """
        sobject_records, done, query_locator = self._unpackQueryResult(query_result)
        sobject_records = sobject_records if (isinstance(sobject_records,list)) else [sobject_records]
        while done is False:
            query_result = self.__queryMore(query_locator)
            done = query_result['done']
            records = query_result['records']
            query_locator = query_result['queryLocator']
            sobject_records.extend(records)

        query_result_batch = self.__resultToObject(sobject_records)
        if (done is True) and (len(query_result_batch) == 0):
            query_result_batch = {'result':dict([(k,query_result[k]._dir) for k in query_result.keys()])}
        return query_result_batch

-- 
Queries larger than the batch size fail when processing queryMore results
https://bugs.launchpad.net/bugs/320695
You received this bug notification because you are a member of pyax
Developers, which is the registrant for pyax.



References