Now I understand. WIll fix asap.

On Monday, 15 April 2013 10:12:50 UTC-5, Ricardo Cárdenas wrote:
>
> Hello Massimo,
>
> I have psql 9.1.8; a quick console test shows replace() working fine. My 
> read of the error is that replace() is being handed an incorrect 
> datatype. Notice the following fragment from the DAL-generated SQL (posted 
> below):
>
> REPLACE(my_group.id,'%','%%')
>
> The first argument is an integer. I assume replace() cannot handle that. 
> best regards -Ricardo
>
>
> On Monday, April 15, 2013 9:56:53 AM UTC-5, Massimo Di Pierro wrote:
>>
>> Which postgresql version are you using? It is complain there is not 
>> replace function but there should be:
>>
>> http://www.postgresql.org/docs/8.1/static/functions-string.html
>>
>> On Saturday, 13 April 2013 15:23:04 UTC-5, Ricardo Cárdenas wrote:
>>>
>>> Hi niphlod, here's the code:
>>>
>>>     p = db.my_post
>>>     g = db.my_group
>>>     m = db.my_membership
>>>     query = ((m.my_user == auth.user.id) &
>>>             (m.my_group == g.id) &
>>>             (p.groups.contains(g.id)))
>>>     rows= db(query).select(p.id, p.status, orderby=~p.creation_date,distinct
>>> =True)
>>>
>>> The SQL generated is:
>>>
>>> SELECT DISTINCT my_post.id, my_post.status FROM my_post, 
>>> my_membership,my_group WHERE 
>>> (((my_membership.my_user = 1) AND (my_membership.my_group = my_group.id
>>> )) AND (CAST(my_post.groups AS CHAR(512)) LIKE (('%|' || (REPLACE((
>>> REPLACE(my_group.id,'%','%%')),'|','||')) || '|%')))) ORDER BY 
>>> my_post.creation_date 
>>> DESC;
>>>
>>> and the error again:
>>>
>>> <class 'psycopg2.ProgrammingError'> function replace(integer, unknown, 
>>> unknown) does not exist LINE 1: ...ost.groups AS CHAR(512)) LIKE (('%|' || 
>>> (REPLACE((REPLACE(me... ^ HINT: No function matches the given name and 
>>> argument types. You might need to add explicit type casts.
>>>
>>> Thanks and best regards -Ricardo
>>>
>>>
>>> On Saturday, April 13, 2013 10:42:52 AM UTC-5, Niphlod wrote:
>>>>
>>>> can you post the code that generates the error and the query generated 
>>>> bu the DAL ( i.e. print db(......)._select() with the underscore) ?
>>>>
>>>> On Saturday, April 13, 2013 4:28:55 PM UTC+2, Ricardo Cárdenas wrote:
>>>>>
>>>>> Just upgraded to 2.4.6-stable+timestamp.2013.04.12.23.32.51.
>>>>>
>>>>> Code that worked in my prior version (I think trunk 2013.04.02? sorry 
>>>>> don't have the exact version on-hand) now breaks. I get the following 
>>>>> error:
>>>>>
>>>>> <class 'psycopg2.ProgrammingError'> function replace(integer, 
>>>>> unknown, unknown) does not exist LINE 1: ...ost.groups AS CHAR(512)) LIKE 
>>>>> (('%|' || (REPLACE((REPLACE(me... ^ HINT: No function matches the given 
>>>>> name and argument types. You might need to add explicit type casts
>>>>>
>>>>> The ticket comes from a 3-table query on PostgreSQL that uses 
>>>>> .CONTAINS. (Perhaps related to this 
>>>>> issue<https://groups.google.com/forum/?fromgroups=#!searchin/web2py/contains/web2py/WKmzK6prO20/SRkZ2SF5YlwJ>.)
>>>>>  
>>>>> When I simplify the query to a simple db(table).select(), the code works 
>>>>> (though of course it doesn't bring back the results I am looking for).
>>>>>
>>>>> I just thought I'd throw it out there in case someone has worked on 
>>>>> that code recently..
>>>>>
>>>>> best regards -Ricardo
>>>>>
>>>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to