summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2009-07-25 19:34:02 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2009-07-25 19:34:02 +0000
commit4d036d6dd4a6dde9e7ae18ebc6451fdf8da0c726 (patch)
tree3ba800230bc7f1ff23644fa45166151aff9aa41e /test/sql
parent1e6df0eeb7845e85e98ce334474e4c9ab8c10611 (diff)
downloadsqlalchemy-4d036d6dd4a6dde9e7ae18ebc6451fdf8da0c726.tar.gz
- Unary expressions such as DISTINCT propagate their
type handling to result sets, allowing conversions like unicode and such to take place. [ticket:1420]
Diffstat (limited to 'test/sql')
-rw-r--r--test/sql/test_query.py7
-rw-r--r--test/sql/test_types.py10
2 files changed, 17 insertions, 0 deletions
diff --git a/test/sql/test_query.py b/test/sql/test_query.py
index c9305b615..51b933e45 100644
--- a/test/sql/test_query.py
+++ b/test/sql/test_query.py
@@ -469,6 +469,13 @@ class QueryTest(TestBase):
self.assert_(r['query_users.user_id']) == 1
self.assert_(r['query_users.user_name']) == "john"
+ # unary experssions
+ r = select([users.c.user_name.distinct()]).order_by(users.c.user_name).execute().fetchone()
+ eq_(r[users.c.user_name], 'jack')
+ eq_(r.user_name, 'jack')
+ r.close()
+
+
def test_row_as_args(self):
users.insert().execute(user_id=1, user_name='john')
r = users.select(users.c.user_id==1).execute().fetchone()
diff --git a/test/sql/test_types.py b/test/sql/test_types.py
index 13b6d0954..15799358a 100644
--- a/test/sql/test_types.py
+++ b/test/sql/test_types.py
@@ -529,6 +529,16 @@ class ExpressionTest(TestBase, AssertsExecutionResults):
# this one relies upon anonymous labeling to assemble result
# processing rules on the column.
assert testing.db.execute(select([expr])).scalar() == -15
+
+ def test_distinct(self):
+ s = select([distinct(test_table.c.avalue)])
+ eq_(testing.db.execute(s).scalar(), 25)
+
+ s = select([test_table.c.avalue.distinct()])
+ eq_(testing.db.execute(s).scalar(), 25)
+
+ assert distinct(test_table.c.data).type == test_table.c.data.type
+ assert test_table.c.data.distinct().type == test_table.c.data.type
class DateTest(TestBase, AssertsExecutionResults):
@classmethod