From b564f6c66136633b2ec0b27c5762c5911a487b2c Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Mon, 7 Jun 2010 20:18:17 +0000 Subject: [PATCH] [soc2010/query-refactor] Moved has_results (implementation of exists()) onto the compiler, where it belongs. git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/query-refactor@13334 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/query.py | 2 +- django/db/models/sql/compiler.py | 14 ++++++++++++++ django/db/models/sql/query.py | 14 -------------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/django/db/models/query.py b/django/db/models/query.py index a2a82f85ee..812e1c82b7 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -493,7 +493,7 @@ class QuerySet(object): def exists(self): if self._result_cache is None: - return self.query.has_results(using=self.db) + return self.query.get_compiler(self.db).has_results() return bool(self._result_cache) ################################################## diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 2877171fd2..e2788019f3 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -662,6 +662,20 @@ class SQLCompiler(object): columns = {} self.query.deferred_to_data(columns, self.query.deferred_to_columns_cb) return columns + + def has_results(self): + q = self.query.clone() + q.add_extra({'a': 1}, None, None, None, None, None) + q.select = [] + q.select_fields = [] + q.default_cols = False + q.select_related = False + q.set_extra_mask(('a',)) + q.set_aggregate_mask(()) + q.clear_ordering(True) + q.set_limits(high=1) + compiler = q.get_compiler(using=self.using) + return bool(compiler.execute_sql(SINGLE)) def results_iter(self): """ diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 0913399e2a..02d13bd7a9 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -402,20 +402,6 @@ class Query(object): return number - def has_results(self, using): - q = self.clone() - q.add_extra({'a': 1}, None, None, None, None, None) - q.select = [] - q.select_fields = [] - q.default_cols = False - q.select_related = False - q.set_extra_mask(('a',)) - q.set_aggregate_mask(()) - q.clear_ordering(True) - q.set_limits(high=1) - compiler = q.get_compiler(using=using) - return bool(compiler.execute_sql(SINGLE)) - def combine(self, rhs, connector): """ Merge the 'rhs' query into the current one (with any 'rhs' effects