mirror of https://github.com/django/django.git
Fixed #13156 -- Ensure that exists() queries are as fast as they can be. Thanks to Jerome Leclanche for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12810 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
d58020fce8
commit
9f6a82fafb
|
@ -377,10 +377,13 @@ class Query(object):
|
|||
def has_results(self, using):
|
||||
q = self.clone()
|
||||
q.add_extra({'a': 1}, None, None, None, None, None)
|
||||
q.add_fields(())
|
||||
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()
|
||||
q.clear_ordering(True)
|
||||
q.set_limits(high=1)
|
||||
compiler = q.get_compiler(using=using)
|
||||
return bool(compiler.execute_sql(SINGLE))
|
||||
|
|
|
@ -277,6 +277,16 @@ class Plaything(models.Model):
|
|||
|
||||
|
||||
__test__ = {'API_TESTS':"""
|
||||
>>> # Regression for #13156 -- exists() queries have minimal SQL
|
||||
>>> from django.db import connection
|
||||
>>> settings.DEBUG = True
|
||||
>>> Tag.objects.exists()
|
||||
False
|
||||
>>> # Ok - so the exist query worked - but did it include too many columns?
|
||||
>>> "id" not in connection.queries[-1]['sql'] and "name" not in connection.queries[-1]['sql']
|
||||
True
|
||||
>>> settings.DEBUG = False
|
||||
|
||||
>>> generic = NamedCategory.objects.create(name="Generic")
|
||||
>>> t1 = Tag.objects.create(name='t1', category=generic)
|
||||
>>> t2 = Tag.objects.create(name='t2', parent=t1, category=generic)
|
||||
|
|
Loading…
Reference in New Issue