summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-05-18 15:49:14 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-05-18 15:49:14 +0000
commitfa56f0acb412c89a02df198a75502f59915a08bb (patch)
treeafb9d9f0889c83ab04e8e465087499cc41be599f
parent664687adb952c19d5bff731617e216f011e8e450 (diff)
downloadsqlalchemy-fa56f0acb412c89a02df198a75502f59915a08bb.tar.gz
- added test for threadlocal not supporting begin_nested()
- removed query.compile(); use explicit query.with_labels().statement instead - moved statement annotation step upwards from query._compile_context() to outliers from_self()/statement. speeds zoomark.step_6_editing by 16%
-rw-r--r--lib/sqlalchemy/orm/query.py15
-rw-r--r--test/engine/transaction.py4
-rw-r--r--test/orm/manytomany.py5
-rw-r--r--test/orm/query.py2
4 files changed, 14 insertions, 12 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index 5df13d8d9..084f9b81d 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -304,7 +304,7 @@ class Query(object):
def statement(self):
"""return the full SELECT statement represented by this Query."""
- return self._compile_context(labels=self._with_labels).statement
+ return self._compile_context(labels=self._with_labels).statement._annotate({'_halt_adapt': True})
statement = property(statement)
def subquery(self):
@@ -537,7 +537,7 @@ class Query(object):
those being selected.
"""
- fromclause = self.compile().correlate(None)
+ fromclause = self.with_labels().statement.correlate(None)
self._statement = self._criterion = None
self._order_by = self._group_by = self._distinct = False
self._limit = self._offset = None
@@ -1240,11 +1240,6 @@ class Query(object):
self.session._autoflush()
return self.session.scalar(s, params=self._params, mapper=self._mapper_zero())
- def compile(self):
- """compiles and returns a SQL statement based on the criterion and conditions within this Query."""
-
- return self._compile_context().statement
-
def _compile_context(self, labels=True):
context = QueryContext(self)
@@ -1324,9 +1319,9 @@ class Query(object):
if context.eager_order_by:
statement.append_order_by(*context.eager_order_by)
-
- context.statement = statement._annotate({'_halt_adapt': True})
-
+
+ context.statement = statement
+
return context
def __log_debug(self, msg):
diff --git a/test/engine/transaction.py b/test/engine/transaction.py
index 69d35748b..7d8d6bd61 100644
--- a/test/engine/transaction.py
+++ b/test/engine/transaction.py
@@ -453,6 +453,10 @@ class TLTransactionTest(TestBase):
users.drop(tlengine)
tlengine.dispose()
+ def test_nested_unsupported(self):
+ self.assertRaises(NotImplementedError, tlengine.contextual_connect().begin_nested)
+ self.assertRaises(NotImplementedError, tlengine.begin_nested)
+
def test_connection_close(self):
"""test that when connections are closed for real, transactions are rolled back and disposed."""
diff --git a/test/orm/manytomany.py b/test/orm/manytomany.py
index 3fc62cd76..7a60f01c6 100644
--- a/test/orm/manytomany.py
+++ b/test/orm/manytomany.py
@@ -302,7 +302,10 @@ class M2MTest3(_base.MappedTest):
'a1s': relation(A, secondary=c2a1, lazy=False),
'a2s': relation(A, secondary=c2a2, lazy=False)})
- assert create_session().query(C).compile()
+ assert create_session().query(C).with_labels().statement
+
+ # TODO: seems like just a test for an ancient exception throw.
+ # how about some data/inserts/queries/assertions for this one
if __name__ == "__main__":
diff --git a/test/orm/query.py b/test/orm/query.py
index af165e47d..490f4ede3 100644
--- a/test/orm/query.py
+++ b/test/orm/query.py
@@ -326,7 +326,7 @@ class CompileTest(QueryTest):
def test_deferred(self):
session = create_session()
- s = session.query(User).filter(and_(addresses.c.email_address == bindparam('emailad'), Address.user_id==User.id)).compile()
+ s = session.query(User).filter(and_(addresses.c.email_address == bindparam('emailad'), Address.user_id==User.id)).statement
l = session.query(User).instances(s.execute(emailad = 'jack@bean.com'))
assert [User(id=7)] == l