]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Repaired the "no statement condition"
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 21 Jun 2011 14:01:46 +0000 (10:01 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 21 Jun 2011 14:01:46 +0000 (10:01 -0400)
assertion in Query which would attempt
to raise if a generative method were called
after from_statement() were called.
[ticket:2199].  Also in 0.6.9.

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

diff --git a/CHANGES b/CHANGES
index f270e5d6320a7ce06a4bee117c1942be20a72059..09f45d58bc602d16b21359f1c5eea70060193d2e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -23,6 +23,12 @@ CHANGES
     due to an unnecessary lookup of the name
     in the _decl_class_registry. [ticket:2194]
 
+  - Repaired the "no statement condition" 
+    assertion in Query which would attempt
+    to raise if a generative method were called
+    after from_statement() were called.
+    [ticket:2199].  Also in 0.6.9.
+
 - mssql
   - Adjusted the pyodbc dialect such that bound
     values are passed as bytes and not unicode
index 98f9885a360ae1c68643d4557aca3d87ef9c8f82..9530172540f1305124145c0b0115458f24d04315 100644 (file)
@@ -370,7 +370,7 @@ class Query(object):
     def _no_statement_condition(self, meth):
         if not self._enable_assertions:
             return
-        if self._statement:
+        if self._statement is not None:
             raise sa_exc.InvalidRequestError(
                 ("Query.%s() being called on a Query with an existing full "
                  "statement - can't apply criterion.") % meth)
index 1e2d5e96d66dbe03aff25f492be081aacaa06f71..0cb3fc764113e59206c99c59741560d0102616a6 100644 (file)
@@ -496,20 +496,26 @@ class InvalidGenerationsTest(QueryTest, AssertsCompiledSQL):
 
         s = create_session()
 
-        q = s.query(User).filter(User.id==5)
-        assert_raises(sa_exc.InvalidRequestError, q.from_statement, "x")
-
-        q = s.query(User).filter_by(id=5)
-        assert_raises(sa_exc.InvalidRequestError, q.from_statement, "x")
-
-        q = s.query(User).limit(5)
-        assert_raises(sa_exc.InvalidRequestError, q.from_statement, "x")
-
-        q = s.query(User).group_by(User.name)
-        assert_raises(sa_exc.InvalidRequestError, q.from_statement, "x")
+        for meth, arg, kw in [
+            (Query.filter, (User.id==5,), {}),
+            (Query.filter_by, (), {'id':5}),
+            (Query.limit, (5, ), {}),
+            (Query.group_by, (User.name,), {}),
+            (Query.order_by, (User.name,), {})
+        ]:
+            q = s.query(User)
+            q = meth(q, *arg, **kw)
+            assert_raises(
+                sa_exc.InvalidRequestError,
+                q.from_statement, "x"
+            )
 
-        q = s.query(User).order_by(User.name)
-        assert_raises(sa_exc.InvalidRequestError, q.from_statement, "x")
+            q = s.query(User)
+            q = q.from_statement("x")
+            assert_raises(
+                sa_exc.InvalidRequestError,
+                meth, q, *arg, **kw
+            )
 
 class OperatorTest(QueryTest, AssertsCompiledSQL):
     """test sql.Comparator implementation for MapperProperties"""