How would you do the query in GQL? Have you confirmed that it can be done?

Anthony

On Sunday, August 12, 2012 9:23:39 PM UTC-4, spiffytech wrote:
>
> 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.
>>>>>
>>>>

-- 



Reply via email to