summaryrefslogtreecommitdiff
path: root/test/orm/query.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2009-01-24 17:29:56 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2009-01-24 17:29:56 +0000
commitc10104f0a89d2ef4bc4ea08aed8f1237d051351d (patch)
tree9b717b6aef40a991b8d471bba95a4b26537f4dcc /test/orm/query.py
parentfebf00ea5d44e96117be882e7e125fd4e6115c59 (diff)
downloadsqlalchemy-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.py36
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()