summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-02-10 16:33:48 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2014-02-10 16:33:48 -0500
commit2a25e42c08e7541fa70dfc5e6b1ac843d6d02027 (patch)
treee08634faa1ce95291d71276f71538ba50cc1aa20 /test
parentab738c21aa540cebf3c2f839e177146fc4b43672 (diff)
downloadsqlalchemy-2a25e42c08e7541fa70dfc5e6b1ac843d6d02027.tar.gz
- Fixed bug where :meth:`.Query.get` would fail to consistently
raise the :class:`.InvalidRequestError` that invokes when called on a query with existing criterion, when the given identity is already present in the identity map. [ticket:2951]
Diffstat (limited to 'test')
-rw-r--r--test/orm/test_query.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/orm/test_query.py b/test/orm/test_query.py
index dbac48580..3d88dce56 100644
--- a/test/orm/test_query.py
+++ b/test/orm/test_query.py
@@ -455,6 +455,24 @@ class GetTest(QueryTest):
# order_by()/get() doesn't raise
s.query(User).order_by(User.id).get(8)
+ def test_no_criterion_when_already_loaded(self):
+ """test that get()/load() does not use preexisting filter/etc. criterion,
+ even when we're only using the identity map."""
+
+ User, Address = self.classes.User, self.classes.Address
+
+
+ s = create_session()
+
+ u1 = s.query(User).get(7)
+
+ q = s.query(User).join('addresses').filter(Address.user_id==8)
+ assert_raises(sa_exc.InvalidRequestError, q.get, 7)
+ assert_raises(sa_exc.InvalidRequestError, s.query(User).filter(User.id==7).get, 19)
+
+ # order_by()/get() doesn't raise
+ s.query(User).order_by(User.id).get(8)
+
def test_unique_param_names(self):
users = self.tables.users