From cf7453e0019194256731a4cb10df50ac4256582f Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 21 Jun 2011 10:01:46 -0400 Subject: [PATCH] - 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. --- CHANGES | 6 ++++++ lib/sqlalchemy/orm/query.py | 2 +- test/orm/test_query.py | 32 +++++++++++++++++++------------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index f270e5d632..09f45d58bc 100644 --- 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 diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 98f9885a36..9530172540 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -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) diff --git a/test/orm/test_query.py b/test/orm/test_query.py index 1e2d5e96d6..0cb3fc7641 100644 --- a/test/orm/test_query.py +++ b/test/orm/test_query.py @@ -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""" -- 2.39.5