summaryrefslogtreecommitdiff
path: root/test/sql/query.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-09-08 22:50:37 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-09-08 22:50:37 +0000
commite158234478f3bb17ec90e5dc5a125d0207d2d5fe (patch)
tree5eb6c9af9dea8e5b404a10513f1283b4bb7a14e0 /test/sql/query.py
parentbf71da5ee6961e4ce67d079651b38f414e641ac7 (diff)
downloadsqlalchemy-e158234478f3bb17ec90e5dc5a125d0207d2d5fe.tar.gz
- The exists() construct won't "export" its contained list
of elements as FROM clauses, allowing them to be used more effectively in the columns clause of a SELECT. - and_() and or_() now generate a ColumnElement, allowing boolean expressions as result columns, i.e. select([and_(1, 0)]). [ticket:798]
Diffstat (limited to 'test/sql/query.py')
-rw-r--r--test/sql/query.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/sql/query.py b/test/sql/query.py
index fa247a7b2..6ca2a2542 100644
--- a/test/sql/query.py
+++ b/test/sql/query.py
@@ -200,6 +200,26 @@ class QueryTest(TestBase):
self.assert_(not (rp != equal))
self.assert_(not (equal != equal))
+ def test_or_and_as_columns(self):
+ if testing.against('sqlite'):
+ true, false = 1, 0
+ else:
+ true, false = literal_column('true'), literal_column('false')
+
+ self.assertEquals(testing.db.execute(select([and_(true, false)])).scalar(), False)
+ self.assertEquals(testing.db.execute(select([and_(true, true)])).scalar(), True)
+ self.assertEquals(testing.db.execute(select([or_(true, false)])).scalar(), True)
+ self.assertEquals(testing.db.execute(select([or_(false, false)])).scalar(), False)
+ self.assertEquals(testing.db.execute(select([not_(or_(false, false))])).scalar(), True)
+
+ row = testing.db.execute(select([or_(false, false).label("x"), and_(true, false).label("y")])).fetchone()
+ assert row.x == False
+ assert row.y == False
+
+ row = testing.db.execute(select([or_(true, false).label("x"), and_(true, false).label("y")])).fetchone()
+ assert row.x == True
+ assert row.y == False
+
def test_fetchmany(self):
users.insert().execute(user_id = 7, user_name = 'jack')
users.insert().execute(user_id = 8, user_name = 'ed')