the patch takes advantage of other improvements in 0.8 and would be 
destabilizing for 0.7.   it's a pretty major rethink of how join() works.

On Apr 26, 2013, at 4:58 AM, gvv <[email protected]> wrote:

> Hi Michael,
> 
> Sorry to be a pain, but will these patches be applied to 7.10?
> My app needs a lot of mods for it to work in 8.0.
> 
> If not don't worry, I guess it is time for me to move on to 8.
> 
> I'll try it out this weekend.
> 
> Thanks
> 
> 
> On Friday, April 26, 2013 8:33:45 AM UTC+10, Michael Bayer wrote:
> I may have come up with a really great solution for all of this, if you'd 
> like to try the branch I have at https://bitbucket.org/zzzeek/sa_2714 - all 
> the original use cases seem to be working.
> 
> I'll be testing this branch over the next day or so and will have it 
> committed soon.  0.8.1 is also due for a release.
> 
> 
>  
> 
> On Apr 24, 2013, at 6:42 PM, gvv <[email protected]> wrote:
> 
>> Hi Michael,
>> 
>> Thank you very much for your help and quick response.
>> 
>> The workaround worked.
>> 
>> I really like the simplicity of the query api that i automate the generation 
>> of it.
>> I will try to incorporate the workaround.
>> 
>> Thanks again
>> 
>> On Thursday, April 25, 2013 7:31:49 AM UTC+10, Michael Bayer wrote:
>> Here's a technique you should be able to use as a workaround:
>> 
>> 1. for every mapper that you're joining *to* which is also a joined 
>> inheritance subclass, transform it into an aliased() construct
>> 2. any join involving an aliased() construct, construct the ON criterion 
>> manually.
>> 
>> These two techniques should bypass all the automation in query.join() that's 
>> failing, such as:
>> 
>>     from sqlalchemy.orm import aliased
>> 
>>     up = aliased(UserPerson)
>>     pa = aliased(PersonAddress)
>> 
>>     session.query(User).\
>>         outerjoin(up, up.ItemUserPerson_Id == User.Id).\
>>         outerjoin(pa, pa.ItemPerson_Id == up.Id).\
>>         outerjoin(pa.Emails).\
>>         outerjoin(pa.Phones).\
>>         first()
>> 
>> 
>> 
>> 
>> On Apr 24, 2013, at 1:38 PM, Michael Bayer <[email protected]> wrote:
>> 
>>> oh.  this *fails in 0.7 also*.   I thought this was a regression.    Yeah, 
>>> this query is a little crazier than we've planned for, I can see the 
>>> general thing it's failing to do but will have to see what's involved to 
>>> get it going.   But not a regression is good news at least.
>>> 
>>> 
>>> On Apr 24, 2013, at 8:35 AM, gvv <[email protected]> wrote:
>>> 
>>>> Hi All,
>>>> 
>>>> using 7.10 but falls over also in 8.0.
>>>> 
>>>> User has a One2One UserPerson.
>>>> UserPerson inherits from Person.
>>>> Person has a One2Many PersonAddress.
>>>> PersonAddress inherits from Address.
>>>> Address has a One2Many Phone and One2Many Email.
>>>> 
>>>> The following query falls over with an (OperationalError) no such column: 
>>>> Address.Id.
>>>>  
>>>> session.query(User, UserPerson, PersonAddress).filter(User.Id == 1).\
>>>>         
>>>> outerjoin(User.Personal,UserPerson.Addresses,PersonAddress.Phones,PersonAddress.Emails).first()
>>>> 
>>>> What am I doing wrong ?
>>>> 
>>>> Thanks in advance for your help.
>>>> 
>>>> 
>>>> sqlalchemy.exc.OperationalError: (OperationalError) no such column: 
>>>> Address.Id u'SELECT "User"."Id" AS "User_Id", anon_1."UserPerson_Id" AS 
>>>> "anon_1_UserPerson_Id", anon_1."Person_Id" AS "anon_1_Person_Id", 
>>>> anon_1."Person_PersonType" AS "anon_1_Person_PersonType", 
>>>> anon_1."UserPerson_ItemUserPerson_Id" AS 
>>>> "anon_1_UserPerson_ItemUserPerson_Id", anon_2."PersonAddress_Id" AS 
>>>> "anon_2_PersonAddress_Id", anon_2."Address_Id" AS "anon_2_Address_Id", 
>>>> anon_2."Address_AddressType" AS "anon_2_Address_AddressType", 
>>>> anon_2."PersonAddress_ItemPerson_Id" AS 
>>>> "anon_2_PersonAddress_ItemPerson_Id" \nFROM "User" LEFT OUTER JOIN (SELECT 
>>>> "Person"."Id" AS "Person_Id", "Person"."PersonType" AS 
>>>> "Person_PersonType", "UserPerson"."Id" AS "UserPerson_Id", 
>>>> "UserPerson"."ItemUserPerson_Id" AS "UserPerson_ItemUserPerson_Id" \nFROM 
>>>> "Person" JOIN "UserPerson" ON "UserPerson"."Id" = "Person"."Id") AS anon_1 
>>>> ON anon_1."UserPerson_ItemUserPerson_Id" = "User"."Id" LEFT OUTER JOIN 
>>>> (SELECT "Address"."Id" AS "Address_Id", "Address"."AddressType" AS 
>>>> "Address_AddressType", "PersonAddress"."Id" AS "PersonAddress_Id", 
>>>> "PersonAddress"."ItemPerson_Id" AS "PersonAddress_ItemPerson_Id" \nFROM 
>>>> "Address" JOIN "PersonAddress" ON "PersonAddress"."Id" = "Address"."Id") 
>>>> AS anon_2 ON anon_1."Person_Id" = anon_2."PersonAddress_ItemPerson_Id" 
>>>> LEFT OUTER JOIN "Phone" ON anon_2."Address_Id" = "Phone"."ItemPhone_Id" 
>>>> LEFT OUTER JOIN "Email" ON "Address"."Id" = "Email"."ItemEmail_Id" \nWHERE 
>>>> "User"."Id" = ?\n LIMIT ? OFFSET ?' (1, 1, 0)
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "sqlalchemy" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>> email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>  
>>>>  
>>>> <test.py><decl_enum.py>
>>> 
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "sqlalchemy" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>  
>>>  
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to