summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2012-11-11 01:59:24 +0200
committerAnssi Kääriäinen <akaariai@gmail.com>2012-11-13 23:01:34 +0200
commitfe21c233d44a5cafff0766eb17ed3df20e08b70f (patch)
tree5bea65e8eb0f28b4c854d162af3c613651f50b5c
parent538d6c0fcd7e0a5505aa4d0424edc823ce2f511f (diff)
Removed use of SortedDict for query.alias_refcount
This will have a smallish impact on performance. Refs #19276.
-rw-r--r--django/db/models/sql/query.py10
1 files changed, 5 insertions, 5 deletions
diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index cef01c48ab..f5a477f2a3 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -103,7 +103,7 @@ class Query(object):
def __init__(self, model, where=WhereNode):
self.model = model
- self.alias_refcount = SortedDict()
+ self.alias_refcount = {}
# alias_map is the most important data structure regarding joins.
# It's used for recording which joins exist in the query and what
# type they are. The key is the alias of the joined table (possibly
@@ -845,7 +845,7 @@ class Query(object):
count. Note that after execution, the reference counts are zeroed, so
tables added in compiler will not be seen by this method.
"""
- return len([1 for count in six.itervalues(self.alias_refcount) if count])
+ return len([1 for count in self.alias_refcount.values() if count])
def join(self, connection, always_create=False, exclusions=(),
promote=False, outer_if_first=False, nullable=False, reuse=None):
@@ -1583,9 +1583,9 @@ class Query(object):
# comparison to NULL (e.g. in
# Tag.objects.exclude(parent__parent__name='t1'), a tag with no parent
# would otherwise be overlooked).
- active_positions = [pos for (pos, count) in
- enumerate(six.itervalues(query.alias_refcount)) if count]
- if active_positions[-1] > 1:
+ active_positions = len([count for count
+ in query.alias_refcount.items() if count])
+ if active_positions > 1:
self.add_filter(('%s__isnull' % prefix, False), negate=True,
trim=True, can_reuse=can_reuse)