According to the Google docs (
https://developers.google.com/appengine/docs/python/datastore/queries#Query_Projection),
 
projection queries have the following limitations:


   - You can only project indexed properties. This means that projecting 
   Text, Blob or other properties explicitly marked as unindexed is not 
   supported.
   - You cannot project a property that also is referenced in an equality 
   filter. For example SELECT A FROM kind WHERE A = 1 is not supported, but 
SELECT 
   A FROM kind WHERE B = 1 or SELECT A FROM kind WHERE A > 1 is supported.
   - You cannot project the same property more than once.
   - The entities returned by a projection query are only partially 
   populated, so they cannot be saved back to the Datastore.

Does the new code avoid doing a projection when text or blob fields are 
included and when one of the requested fields is referenced in an equality 
filter? Also, should there be a way to override the projection query (right 
now it looks like it's automatic whenever you request fewer than all the 
fields)?

Also, are GAE tables allowed to have id fields with names other than "id"? 
If so, should line 4094 (
http://code.google.com/p/web2py/source/browse/gluon/dal.py#4094):

query_projection = [p for p in projection if p != 'id'] if projection \

be changed to something like:

query_projection = [p for p in projection if p != self.db[tablename]._id.
name] if projection \

Anthony

On Sunday, June 10, 2012 10:21:18 PM UTC-4, Massimo Di Pierro wrote:
>
> Hello Google App Engine users,
>
> Thanks to howesc we have a new feature in trunk: support for datastore 
> projections.
> The problem and its solution are best explained in this post:
>
> http://stackoverflow.com/questions/10940995/does-google-app-engine-projection-queries-are-supported-by-web2py
>
> Pleas help us test it. In particular help us test trunk and make sure it 
> does not break your GAE apps.
>
> Massimo
>

Reply via email to