Re: [Sqlalchemy-tickets] [sqlalchemy] #2419: column targeting failure with any() + polymorphic->pol
Brought to you by:
zzzeek
From: sqlalchemy <mi...@zz...> - 2012-02-28 17:07:17
|
#2419: column targeting failure with any() + polymorphic->polymorphic ------------------------------+------------------------------- Reporter: zzzeek | Owner: zzzeek Type: defect | Status: new Priority: high | Milestone: 0.7.6 Component: orm | Severity: major - 1-3 hours Resolution: | Keywords: Progress State: in progress | ------------------------------+------------------------------- Comment (by zzzeek): it appears I can generate the identical query and identical result without the error using outerjoin() + contains_eager: {{{ #!python ea = aliased(E) q = s.query(B, B.ds.any(D.id==1)).options(contains_eager("es", alias=ea)) q = q.join(C, C.b_id==B.id) q = q.limit(5).from_self().outerjoin(ea, B.es) print q.all() }}} {{{ SELECT e_1.id AS e_1_id, e_1.b_id AS e_1_b_id, anon_1.b_id AS anon_1_b_id, anon_1.anon_2 AS anon_1_anon_2 FROM (SELECT b.id AS b_id, EXISTS (SELECT 1 FROM d WHERE b.id = d.b_id AND d.id = ?) AS anon_2 FROM b JOIN (SELECT a.id AS a_id, c.id AS c_id, c.b_id AS c_b_id FROM a JOIN c ON a.id = c.id) AS anon_3 ON anon_3.c_b_id = b.id LIMIT ? OFFSET ?) AS anon_1 LEFT OUTER JOIN e AS e_1 ON anon_1.b_id = e_1.b_id }}} vs. {{{ SELECT anon_1.b_id AS anon_1_b_id, anon_1.anon_2 AS anon_1_anon_2, e_1.id AS e_1_id, e_1.b_id AS e_1_b_id FROM (SELECT b.id AS b_id, EXISTS (SELECT 1 FROM d WHERE b.id = d.b_id AND d.id = ?) AS anon_2 FROM b JOIN (SELECT a.id AS a_id, c.id AS c_id, c.b_id AS c_b_id FROM a JOIN c ON a.id = c.id) AS anon_3 ON anon_3.c_b_id = b.id LIMIT ? OFFSET ?) AS anon_1 LEFT OUTER JOIN e AS e_1 ON anon_1.b_id = e_1.b_id }}} -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2419#comment:2> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |