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.
