From: Mike Bayer Date: Tue, 21 Jun 2011 14:03:40 +0000 (-0400) Subject: - Repaired the "no statement condition" X-Git-Tag: rel_0_6_9~58 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c4f279be4e551d6a0b8ae8c87e92aee9cd6445ea;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 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]. --- diff --git a/CHANGES b/CHANGES index dd304e3419..b227364d10 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,15 @@ ======= CHANGES ======= +0.6.9 +===== +- orm + - 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]. + 0.6.8 ===== - orm diff --git a/lib/sqlalchemy/__init__.py b/lib/sqlalchemy/__init__.py index ae88787626..8d4e2a57d3 100644 --- a/lib/sqlalchemy/__init__.py +++ b/lib/sqlalchemy/__init__.py @@ -115,6 +115,6 @@ from sqlalchemy.engine import create_engine, engine_from_config __all__ = sorted(name for name, obj in locals().items() if not (name.startswith('_') or inspect.ismodule(obj))) -__version__ = '0.6.8' +__version__ = '0.6.9' del inspect, sys diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index c5bf59d629..e065eccb19 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -367,7 +367,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 6067964ef1..d8e1a4d70b 100644 --- a/test/orm/test_query.py +++ b/test/orm/test_query.py @@ -417,20 +417,26 @@ class InvalidGenerationsTest(QueryTest, AssertsCompiledSQL): def test_from_statement(self): 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"""