I tested with your suggested orderby, but the outcome was the same. I tested with the query as you wrote it below, with no common_filter, and the query still failed. Since that's a pretty straightforward query that should work, this seems like a bug to me, so I filed a web2py bug report: http://code.google.com/p/web2py/issues/detail?id=930
On Thursday, August 9, 2012 5:39:14 PM UTC-4, howesc wrote: > > i had to look up common_filters.....based on your experience i would > assume that this is being implemented as a query filter rather than getting > results from the DB and then filtering them. so what is must be causing in > your case is: > > posts = db((db.posts.id.belongs(post_ids)) & > (db.posts.post_date<=request.now)).select(db.posts.ALL,orderby=db.posts.post_date, > cache > =(cache.ram, 60)) > > it *might* work if you put an orderby on that is > db.posts.id|db.posts.post_date > i'm not sure. you might have to remove the common filter for this query > and then filter the results. (i don't have experience with common filters > and how they are implemented) > > GAE has a restriction on IN queries (web2py belongs queries) that they > have no more than 30 items in the list. "because i said so" says google. > > > > On Thursday, August 9, 2012 1:57:13 PM UTC-7, spiffytech wrote: >> >> I've narrowed the problem down further- the exception is caused by a >> common_filter attached to my posts table: >> >> common_filter = lambda query: db.posts.post_date <= request.now >> >> I'm not sure why that would trigger the orderby error, though. >> >> Also, is there some significance to limiting the belongs lists to 30 >> items? >> >> >> >> On Thursday, August 9, 2012 4:24:13 PM UTC-4, howesc wrote: >>> >>> the query and the error message do not match. your query has no >>> orderby, yet the error message suggests there is an orderby property set. >>> this confuses me. >>> >>> i do: >>> >>> db(db.table.id.belongs([list of items not more than 30 long])).select() >>> >>> all the time on GAE and it works for me (latest stable web2py, and the >>> last time i checked trunk though that was a few weeks ago) >>> >>> note that cache does nothing on selects on GAE due to the inability to >>> serialize Rows objects to memcache (at least i think that is the limitation) >>> >>> cfh >>> >>> On Thursday, August 9, 2012 10:40:33 AM UTC-7, spiffytech wrote: >>>> >>>> I'm trying to use the DAL belongs clause on App Engine and am getting >>>> an error. >>>> >>>> posts = db(db.posts.id.belongs(post_ids)).select(db.posts.ALL, cache=( >>>> cache.ram, 60)) >>>> >>>> Produces: >>>> >>>> BadArgumentError: First ordering property must be the same as >>>> inequality filter property, if specified for this query; received __key__, >>>> expected post_date >>>> >>>> Some Googling suggests this can be due to not providing a sort key. I >>>> tried orderby=db.posts.post_date with no success. What could be going >>>> wrong? >>>> >>>> I'm using the latest trunk web2py, but tested all the way back to >>>> 1.99.3. >>>> >>> --