On Oct 16, 2007, at 10:45 AM, klaus wrote:
> > The only thing that I could find out about the reason is that in > engine/base.py (1290) > context.column_labels > contains the wrong entries. It should contain something like > {..., '<table>_<column>': '<table>_<column>', ...}. > In the case above, however, it contains > {..., '<table>_<column>': '<column>', '<column>': '<column>', ...}. > (That is, it contains two items for each column, but the values are > '<column>' instead of '<table>_<column>'.) > > After that, I got lost. These values are generated by the postgres > driver. But I could not find where it takes its input from the Alias > object to generate something different than for the Table object. that is exactly correct, and was one of two issues present in 0.4. both issues, one of which occurs in 0.3 and 0.4 and the other just in 0.4 (though its hiding in 0.3 to some degree as well) originate from two distinct name confusions that arise because you're using the name of the table as the name of the alias. If you name the alias something other than "test" then all issues go away. so one issue was a hardcoded notion of bind parameter names used in the ORM by query.get(), which also is used for a many-to-one lazyload - it used the "label" of the column which in this case is "test_id", and conflicted with the existing "test_id" name (the compiler would rename the param as "test_id_1" but the Query object wasn't tracking that). So 0.3 now generates a "random" name whereas 0.4 uses anonymous bind parameters now (which are like "random" bind param names except they are compile-time generated in a deterministic fashion). second issue is that the column_labels dictionary was being populated with column labels from all selects embedded in the statement, not just the top level one, so again the "test_id" column at the top level conflicted with the embedded "id" column. since compilation maintains a stack of select objects, the fix is easy as it means we only operate when the stack is only one select object deep (i.e. its the outermost select). 0.3 rev 3624 and 0.4 rev 3625 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---