diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-01-24 17:29:56 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-01-24 17:29:56 +0000 |
commit | c10104f0a89d2ef4bc4ea08aed8f1237d051351d (patch) | |
tree | 9b717b6aef40a991b8d471bba95a4b26537f4dcc /test/orm/query.py | |
parent | febf00ea5d44e96117be882e7e125fd4e6115c59 (diff) | |
download | sqlalchemy-c10104f0a89d2ef4bc4ea08aed8f1237d051351d.tar.gz |
- refined and clarified query.__join() for readabilityrel_0_5_2
- _ORMJoin() gets a new flag join_to_left to specify if
we really want to alias from the existing left side or not. eager loading
wants this flag off in almost all cases, query.join() usually wants it on.
- query.join()/outerjoin() will now properly join an aliased()
construct to the existing left side, even if query.from_self()
or query.select_from(someselectable) has been called.
[ticket:1293]
Diffstat (limited to 'test/orm/query.py')
-rw-r--r-- | test/orm/query.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/orm/query.py b/test/orm/query.py index 1b56dbb26..9d01be837 100644 --- a/test/orm/query.py +++ b/test/orm/query.py @@ -743,6 +743,42 @@ class FromSelfTest(QueryTest, AssertsCompiledSQL): "LEFT OUTER JOIN addresses AS addresses_1 ON anon_1.users_id = addresses_1.user_id ORDER BY addresses_1.id" ) + def test_aliases(self): + """test that aliased objects are accessible externally to a from_self() call.""" + + s = create_session() + + ualias = aliased(User) + eq_( + s.query(User, ualias).filter(User.id > ualias.id).from_self(User.name, ualias.name). + order_by(User.name, ualias.name).all(), + [ + (u'chuck', u'ed'), + (u'chuck', u'fred'), + (u'chuck', u'jack'), + (u'ed', u'jack'), + (u'fred', u'ed'), + (u'fred', u'jack') + ] + ) + + eq_( + s.query(User, ualias).filter(User.id > ualias.id).from_self(User.name, ualias.name).filter(ualias.name=='ed')\ + .order_by(User.name, ualias.name).all(), + [(u'chuck', u'ed'), (u'fred', u'ed')] + ) + + eq_( + s.query(User, ualias).filter(User.id > ualias.id).from_self(ualias.name, Address.email_address). + join(ualias.addresses).order_by(ualias.name, Address.email_address).all(), + [ + (u'ed', u'fred@fred.com'), + (u'jack', u'ed@bettyboop.com'), + (u'jack', u'ed@lala.com'), + (u'jack', u'ed@wood.com'), + (u'jack', u'fred@fred.com')] + ) + def test_multiple_entities(self): sess = create_session() |