From 4d036d6dd4a6dde9e7ae18ebc6451fdf8da0c726 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 25 Jul 2009 19:34:02 +0000 Subject: - Unary expressions such as DISTINCT propagate their type handling to result sets, allowing conversions like unicode and such to take place. [ticket:1420] --- test/sql/test_query.py | 7 +++++++ test/sql/test_types.py | 10 ++++++++++ 2 files changed, 17 insertions(+) (limited to 'test/sql') 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 -- cgit v1.2.1