oh....youre *extending* abstractclauseprocessor ??? well yes, thats  
going to change things quite a bit.  I think you should study ACP in  
its current form; what its doing now is faithfully calling  
convert_element() for *every* element in the expression, and also is  
not copying any elements before calling convert_element() -  
convert_element() always gets components from the original clause  
only.   if convert_element() returns non-None, the resulting element  
is assembled into the output, and traversal *stops* for the remainder  
of that element.  this is different behavior than it was before.  the  
reason it stops for a replaced element is because its assumed that the  
replacement value is not part of the expression which is being copied,  
and therefore should not be copied or processed itself.  if its that  
second part of the behavior thats breaking it for you, we can add an  
option to switch it off (comment out line 156, stop_on.add(newelem) to  
produce this).

this new version of ACP can locate things besides just plain Table,  
Alias and Column objects; it can locate things like Joins embedded in  
a clause which match the target selectable.

On Nov 7, 2007, at 10:45 AM, svilen wrote:

>
> On Wednesday 07 November 2007 16:57:08 Michael Bayer wrote:
>> On Nov 7, 2007, at 2:03 AM, [EMAIL PROTECTED] wrote:
>>> - something changed in the traversing (AbstractClauseProcessor -
>>> r3727)
>>> and it does not find proper things...
>>
>> ACP has been entirely rewritten.   if you can provide simple tests
>> in the form that theyre present in test/sql/generative.py and/or
>> test/sql/ selectable.py that would be helpful.  I have a feeling
>> its not "missing" things, its just doing it slightly differently.
>
> http://dbcook.svn.sourceforge.net/viewvc/dbcook/trunk/dbcook/misc/aggregator/
> (no it does not need dbcook)
> $ cd ....dbcook/misc/aggregator/tests
> $ PYTHONPATH=$PYTHONPATH:../.. python convertertest.py
>
> ...
> ====================================================
> FAIL: count tags per movie
>  File "tests/convertertest.py", line 73, in
> test1_count_tags_per_movie['oid']) ...
> AssertionError: ['oid'] != ['tabl', 'oid']
> ====================================================
> FAIL: count tags per movie
>  File "tests/convertertest.py", line 73, in
> test1_count_tags_per_movie['oid']) ...
> AssertionError: ['oid'] != ['tabl', 'oid']
>
> ----------------------------------------------------
> i did print the interesting elements in my
> Converter.convert_element(), and the result is that
> a) order is slightly different - which i dont care
> b) 1 item is not traversed in r3727
> e.g.
> r3626:
>> Column tags.tabl
>> Column tags.oid
>> Column movies.id
>> Column tags.tabl
>> Column tags.oid
>> Column movies.id
>> Column users.id
>> Column userpics.uid
>> Column userpics.state
> ....
> r3627:
>> Column tags.tabl
>> Column tags.oid
>> Column movies.id
>> Column tags.oid
>> Column movies.id
>> Column users.id
>> Column userpics.uid
>> Column userpics.state
> the 2nd tags.tabl is missing, hence the assertFails
>
> ciao
> svilen
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to