Comment 5 for bug 301187

Revision history for this message
Ray C Horn (mrpython94596) wrote : Re: [Bug 301187] Re: pyax fails to return results when COUNT() is used inSOQL

My own bug fix remains where it is - my version of pyax always behaves the
same across the board regardless of the SOQL.

--------------------------------------------------
From: "Kevin Shuk" <email address hidden>
Sent: Friday, January 23, 2009 4:31 PM
To: <email address hidden>
Subject: [Bug 301187] Re: pyax fails to return results when COUNT() is used
inSOQL

> I will have to check the query itself to to see if it's a select count()
> and act accordingly, otherwise a legitimate query that returns no rows
> may provide a surprising result (not an empty batch).
>
> Borrowing behaviour from apex, the count() query should return just the
> integer. It's a different enough kind of query to warrant this, and
> since SOQL isn't SQL, I don't feel quite so bad about the different
> behaviour.
>
> ** Changed in: pyax
> Importance: Undecided => High
> Assignee: (unassigned) => Kevin Shuk (surf)
> Status: New => Confirmed
>
> --
> pyax fails to return results when COUNT() is used in SOQL
> https://bugs.launchpad.net/bugs/301187
> You received this bug notification because you are a direct subscriber
> of the bug.
>
> Status in Salesforce.com Apex API library for Python: Fix Committed
>
> Bug description:
> Consider the following SOQL statement:
>
> Select COUNT() from Solution s WHERE (s.Status = 'Published') AND
> (s.IsDeleted = False) AND (s.LastModifiedDate > 2008-08-24T00:00:00.000Z)
>
> The results pyax reports from connection.py in the __processQueryResult
> method is an empty {} in the query_result_batch variable.
>
> The problem is the query_result says {u'records': None, u'done': True,
> u'queryLocator': None, u'size': '106'}.
>
> The fix would be to add the following exception code as follows:
>
> query_result_batch = self.__resultToObject(sobject_records)
> if (done is True) and (len(query_result_batch) == 0):
> query_result_batch = query_result
> return query_result_batch
>
> This is a hack but it works so long as I get something back from the SOQL
> rather than nothing which is what pyax wants to give me.
>
> Perhaps the development team can give me a more elegant solution in a
> later release however since I need this to work now I am using my own hack
> in the meantime.
>
> I suspect the pyax development team simply did not expect people to use
> the COUNT() function which can be useful even though it does not return
> any SalesForce objects it does return the number of items a SOQL would
> return.
>