]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- first() works as expected with Query.from_statement().
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 10 Dec 2008 20:28:54 +0000 (20:28 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 10 Dec 2008 20:28:54 +0000 (20:28 +0000)
CHANGES
lib/sqlalchemy/orm/query.py
test/orm/query.py

diff --git a/CHANGES b/CHANGES
index f60705ea7036bc7d61f39f9eed577cd460e64031..cc60fec7af3a03730b257edb612486132973dcaf 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -37,7 +37,9 @@ CHANGES
     - Query.select_from(), from_statement() ensure
       that the given argument is a FromClause,
       or Text/Select/Union, respectively.
-      
+
+    - first() works as expected with Query.from_statement().
+    
     - Fixed bug introduced in 0.5rc4 involving eager 
       loading not functioning for properties which were
       added to a mapper post-compile using 
index 291837dfa29f40b3fc6e34c490c64853905cfffb..1922c5ac6cfd0de0ad85ce9e742cd9c87a5a5882 100644 (file)
@@ -1035,13 +1035,13 @@ class Query(object):
 
         """
         if self._statement:
-            return list(self)[0]
+            ret = list(self)[0:1]
         else:
             ret = list(self[0:1])
-            if len(ret) > 0:
-                return ret[0]
-            else:
-                return None
+        if len(ret) > 0:
+            return ret[0]
+        else:
+            return None
 
     def one(self):
         """Return exactly one result or raise an exception.
index 6b74b94175e3e36de3c1bbfb1c62d4a213f1516e..5d60335dd50cf7c86334ff5144a6e6e303b173c5 100644 (file)
@@ -574,21 +574,6 @@ class SliceTest(QueryTest):
         ])
 
 
-class TextTest(QueryTest):
-    def test_fulltext(self):
-        assert [User(id=7), User(id=8), User(id=9),User(id=10)] == create_session().query(User).from_statement("select * from users").all()
-
-    def test_fragment(self):
-        assert [User(id=8), User(id=9)] == create_session().query(User).filter("id in (8, 9)").all()
-
-        assert [User(id=9)] == create_session().query(User).filter("name='fred'").filter("id=9").all()
-
-        assert [User(id=9)] == create_session().query(User).filter("name='fred'").filter(User.id==9).all()
-
-    def test_binds(self):
-        assert [User(id=8), User(id=9)] == create_session().query(User).filter("id in (:id1, :id2)").params(id1=8, id2=9).all()
-
-
 class FooTest(FixtureTest):
     keep_data = True
         
@@ -906,7 +891,10 @@ class YieldTest(QueryTest):
 
 class TextTest(QueryTest):
     def test_fulltext(self):
-        assert [User(id=7), User(id=8), User(id=9),User(id=10)] == create_session().query(User).from_statement("select * from users").all()
+        assert [User(id=7), User(id=8), User(id=9),User(id=10)] == create_session().query(User).from_statement("select * from users order by id").all()
+
+        assert User(id=7) == create_session().query(User).from_statement("select * from users order by id").first()
+        assert None == create_session().query(User).from_statement("select * from users where name='nonexistent'").first()
 
     def test_fragment(self):
         assert [User(id=8), User(id=9)] == create_session().query(User).filter("id in (8, 9)").all()