summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-05-01 15:17:07 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-05-01 15:17:07 +0000
commitc407a608c38a8d483e77fb950b21995b16fa05f7 (patch)
tree5c202561885612461e6aaaba3071bf82c7763ba0
parente7f3f997fec841013ebaea749516929bfba9f9c6 (diff)
downloadsqlalchemy-c407a608c38a8d483e77fb950b21995b16fa05f7.tar.gz
added some reference tests for the any() situation
-rw-r--r--test/orm/query.py26
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()