From 55d455d7d0d4d67d9f3d13cf74de471c15ce5d50 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 5 Feb 2007 23:26:37 +0000 Subject: [PATCH] - added distinct() method to SelectResults. generally should only make a difference when using count(). --- CHANGES | 5 ++++- lib/sqlalchemy/ext/selectresults.py | 6 ++++++ test/orm/eagertest3.py | 4 +++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index bfd310a07e..e11af50b75 100644 --- a/CHANGES +++ b/CHANGES @@ -38,7 +38,10 @@ - postgres: - better reflection of sequences for alternate-schema Tables [ticket:442] - sequences on a non-pk column will properly fire off on INSERT - +- ext: + - added distinct() method to SelectResults. generally should only make a difference + when using count(). + 0.3.4 - general: - global "insure"->"ensure" change. in US english "insure" is actually diff --git a/lib/sqlalchemy/ext/selectresults.py b/lib/sqlalchemy/ext/selectresults.py index 3e7fa93c87..5ad961f0ad 100644 --- a/lib/sqlalchemy/ext/selectresults.py +++ b/lib/sqlalchemy/ext/selectresults.py @@ -89,6 +89,12 @@ class SelectResults(object): """apply an OFFSET to the query.""" return self[offset:] + def distinct(self): + """applies a DISTINCT to the query""" + new = self.clone() + new._ops['distinct'] = True + return new + def list(self): """return the results represented by this SelectResults as a list. diff --git a/test/orm/eagertest3.py b/test/orm/eagertest3.py index 5b498c0c80..1db0298477 100644 --- a/test/orm/eagertest3.py +++ b/test/orm/eagertest3.py @@ -318,7 +318,9 @@ class EagerTest4(testbase.ORMTest): filters = [q.join_to('employees'), Employee.c.name.startswith('J')] - d = SelectResults(q, and_(*filters), ops=dict(distinct=True)) + d = SelectResults(q) + d = d.join_to('employees').filter(Employee.c.name.startswith('J')) + d = d.distinct() d = d.order_by([desc(Department.c.name)]) assert d.count() == 2 assert d[0] is d2 -- 2.47.2