diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-05-01 15:17:07 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-05-01 15:17:07 +0000 |
| commit | c407a608c38a8d483e77fb950b21995b16fa05f7 (patch) | |
| tree | 5c202561885612461e6aaaba3071bf82c7763ba0 | |
| parent | e7f3f997fec841013ebaea749516929bfba9f9c6 (diff) | |
| download | sqlalchemy-c407a608c38a8d483e77fb950b21995b16fa05f7.tar.gz | |
added some reference tests for the any() situation
| -rw-r--r-- | test/orm/query.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/orm/query.py b/test/orm/query.py index 9245d43f3..c3032182c 100644 --- a/test/orm/query.py +++ b/test/orm/query.py @@ -349,6 +349,32 @@ class FilterTest(QueryTest): assert [User(id=9)] == sess.query(User).filter(User.addresses.any(email_address='fred@fred.com')).all() + @testing.fails_on_everything_except() + def test_broken_any_1(self): + sess = create_session() + + # overcorrelates + assert [User(id=7), User(id=8)] == sess.query(User).join("addresses").filter(~User.addresses.any(Address.email_address=='fred@fred.com')).all() + + def test_broken_any_2(self): + sess = create_session() + + # works, filter is before the join + assert [User(id=7), User(id=8)] == sess.query(User).filter(~User.addresses.any(Address.email_address=='fred@fred.com')).join("addresses", aliased=True).all() + + def test_broken_any_3(self): + sess = create_session() + + # works, filter is after the join, but reset_joinpoint is called, removing aliasing + assert [User(id=7), User(id=8)] == sess.query(User).join("addresses", aliased=True).filter(Address.email_address != None).reset_joinpoint().filter(~User.addresses.any(email_address='fred@fred.com')).all() + + @testing.fails_on_everything_except() + def test_broken_any_4(self): + sess = create_session() + + # filter is after the join, gets aliased. in 0.5 any(), has() and not contains() are shielded from aliasing + assert [User(id=10)] == sess.query(User).outerjoin("addresses", aliased=True).filter(~User.addresses.any()).all() + @testing.unsupported('maxdb') # can core def test_has(self): sess = create_session() |
