the left outer join means there is a lazy=False or lazy='joinedload' on the relationship, or in this case since its sporadic, the parent Invoice is likely being loaded with an option like joinedload(Product.vat). The options specified in Query get attached to lazy loaders later in the chain, if the given joinedload() chain doesn't start from the entity being queried (which is probably the case if the query uses joinedload() and not joinedload_all()). For those Product objects already in the identity map, this option would not take place.
On Mar 7, 2011, at 8:13 AM, Joril wrote: > Hi everyone! > > I have an object graph like this: > > Invoice -> Detail (one-to-many with cascade) -> Product (many-to-one) - >> VAT (many-to-one) > > My problem is that sometimes if I have a Detail and try to read its > Product, the triggered lazy-loading generates a query more complicated > than necessary, having a LEFT OUTER JOIN on the VAT table too... Other > times the lazy-loading query joins only Detail and Product. > I think I'm doing something fishy here.. What could I check, to ensure > that the lazy loading doesn't touch unneeded entities? > > Many thanks! > > (SQLAlchemy 0.6.6, PGSQL 8.3) > > -- > 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 > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- 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 sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.