Hi. If I have a many-to-many relation between Class1 and Class2, the
following query:
Class1.query.filter(Class1.class2s.contains(obj1)).filter(Class1.class2s.contains(obj2))
, where obj1 and obj2 are instances of Class2, generates the following
sql in .4.6:

SELECT <lots of columns>
FROM class1, secondary
WHERE class1.id = secondary.class1_id AND %s = secondary.class2_id AND
class1.id = secondary.class1_id AND  %s = secondary.class2_id

Note that the secondary table isn't being aliased for each contains(),
so this will never return anything unless obj1==obj2. I think this
used to use separate subqueries (with Exists) for each contains(), so
this query worked before .4.6. (I only have .4.6 installed, so I can't
verify).

Also, if obj1 and obj2 aren't actually instances of type Class2 but
are instead instances of some other mapped class that don't belong in
this relation, SQLA happily uses them in the above query if they have
a column with the same name as Class2's primary key. I would think
that throwing an exception in that case would be better behavior?

--~--~---------~--~----~------------~-------~--~----~
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