]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
merged r6310 of trunk [ticket:1522]
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 1 Sep 2009 22:15:19 +0000 (22:15 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 1 Sep 2009 22:15:19 +0000 (22:15 +0000)
CHANGES
lib/sqlalchemy/orm/query.py
test/orm/test_query.py

diff --git a/CHANGES b/CHANGES
index 9f817651496d942b336262e1d0a7c28a4c58ed1d..6f579532dfd9ed5d1c5594774116a2fae2dd2e9e 100644 (file)
--- 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
index e764856bf26b52b0e1bffef4263dbe4d64048019..db886dcb8a865af0e69b9c8c5f98c7521d77d77c 100644 (file)
@@ -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
index 88a95bf7608a3eda14ac1f46eb679dd8c648b5bd..09e27c8d8949e64b492cff52eae4a496b199cedd 100644 (file)
@@ -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()