diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-02-10 16:33:48 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-02-10 16:33:48 -0500 |
| commit | 2a25e42c08e7541fa70dfc5e6b1ac843d6d02027 (patch) | |
| tree | e08634faa1ce95291d71276f71538ba50cc1aa20 /test | |
| parent | ab738c21aa540cebf3c2f839e177146fc4b43672 (diff) | |
| download | sqlalchemy-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.py | 18 |
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 |
