]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed the error message for "could not find a FROM clause"
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 1 Sep 2009 22:14:22 +0000 (22:14 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 1 Sep 2009 22:14:22 +0000 (22:14 +0000)
in query.join() which would fail to issue correctly
if the query was against a pure SQL construct.
[ticket:1522]

CHANGES
lib/sqlalchemy/orm/query.py
test/orm/test_query.py

diff --git a/CHANGES b/CHANGES
index dfefd8c12bca11c5673eaac5c30944ea0e7c9596..6d680cfa8045fc6a5e5af0682c96f6ce412fb86f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -437,6 +437,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 f09b594c0c27401fb5be8eb28aca2bc893cb4b24..dfbe229e2ea1dd28ff866d389d995d4038b5ba10 100644 (file)
@@ -1036,7 +1036,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 8cb7ef969bd676bfcea8ef574e7071490f66eb95..691e00aaeba26d6f0d99f5ac6ae35ffcad693775 100644 (file)
@@ -1214,6 +1214,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()