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] <javascript:>> 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] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> 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