summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2017-05-17 13:05:04 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2017-05-17 17:08:23 -0400
commit912fb6c2d54d7f2fcda654a8f7702d122e8b8d70 (patch)
treebc9fb26d88acc7631fce8eacbfd90d53253f2584 /test
parent4c6917e1d68a8baab7efe10e9ce5e5c8187f65ca (diff)
downloadsqlalchemy-912fb6c2d54d7f2fcda654a8f7702d122e8b8d70.tar.gz
Add new configuration, inspection for baked queries
Added new flag :paramref:`.Session.enable_baked_queries` to the :class:`.Session` to allow baked queries to be disabled session-wide, reducing memory use. Also added new :class:`.Bakery` wrapper so that the bakery returned by :paramref:`.BakedQuery.bakery` can be inspected. Change-Id: I5657af7a99d2b24c89d6aee1343f432728e3f807
Diffstat (limited to 'test')
-rw-r--r--test/ext/test_baked.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/ext/test_baked.py b/test/ext/test_baked.py
index 263a1bb6c..d2fcfbab8 100644
--- a/test/ext/test_baked.py
+++ b/test/ext/test_baked.py
@@ -447,6 +447,41 @@ class ResultTest(BakedTest):
exp
)
+ def test_disable_on_session(self):
+ User = self.classes.User
+
+ canary = mock.Mock()
+
+ def fn1(s):
+ canary.fn1()
+ return s.query(User.id, User.name).order_by(User.id)
+
+ def fn2(q):
+ canary.fn2()
+ return q.filter(User.id == bindparam('id'))
+
+ def fn3(q):
+ canary.fn3()
+ return q
+
+ for x in range(3):
+ bq = self.bakery(fn1)
+
+ bq += fn2
+
+ sess = Session(autocommit=True, enable_baked_queries=False)
+ eq_(
+ bq.add_criteria(fn3)(sess).params(id=7).all(),
+ [(7, 'jack')]
+ )
+
+ eq_(
+ canary.mock_calls,
+ [mock.call.fn1(), mock.call.fn2(), mock.call.fn3(),
+ mock.call.fn1(), mock.call.fn2(), mock.call.fn3(),
+ mock.call.fn1(), mock.call.fn2(), mock.call.fn3()]
+ )
+
def test_spoiled_full_w_params(self):
User = self.classes.User