From f7307aabe689f250ac5a8a1fda8d7e11c8545c65 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 1 Sep 2009 22:15:19 +0000 Subject: [PATCH] merged r6310 of trunk [ticket:1522] --- CHANGES | 5 +++++ lib/sqlalchemy/orm/query.py | 2 +- test/orm/test_query.py | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 9f81765149..6f579532df 100644 --- a/CHANGES +++ b/CHANGES @@ -72,6 +72,11 @@ CHANGES - Fixed incorrect exception raise in Weak/StrongIdentityMap.add() [ticket:1506] + + - Fixed the error message for "could not find a FROM clause" + in query.join() which would fail to issue correctly + if the query was against a pure SQL construct. + [ticket:1522] - Fixed a somewhat hypothetical issue which would result in the wrong primary key being calculated for a mapper diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index e764856bf2..db886dcb8a 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1032,7 +1032,7 @@ class Query(object): if not clause: clause = left_selectable - if not clause: + if not clause and left_entity: for ent in self._entities: if ent.corresponds_to(left_entity): clause = ent.selectable diff --git a/test/orm/test_query.py b/test/orm/test_query.py index 88a95bf760..09e27c8d89 100644 --- a/test/orm/test_query.py +++ b/test/orm/test_query.py @@ -1189,6 +1189,12 @@ class JoinTest(QueryTest): result = sess.query(ualias).join((oalias1, ualias.orders), (oalias2, ualias.orders)).\ filter(or_(oalias1.user_id==9, oalias2.user_id==7)).all() eq_(result, [User(id=7,name=u'jack'), User(id=9,name=u'fred')]) + + def test_pure_expression_error(self): + sess = create_session() + + assert_raises_message(sa.exc.InvalidRequestError, "Could not find a FROM clause to join from", sess.query(users).join, addresses) + def test_orderby_arg_bug(self): sess = create_session() -- 2.47.3