Skip to content

Commit 344e639

Browse files
committed
Make query key functions top-level functions
Avoid redefining them every time the SQLPanel.generate_stats() method is called.
1 parent 2cd4a02 commit 344e639

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

debug_toolbar/panels/sql/panel.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,18 @@ def get_transaction_status_display(vendor, level):
4848
return choices.get(level)
4949

5050

51+
def _similar_query_key(query):
52+
return query["raw_sql"]
53+
54+
55+
def _duplicate_query_key(query):
56+
raw_params = () if query["raw_params"] is None else tuple(query["raw_params"])
57+
# saferepr() avoids problems because of unhashable types
58+
# (e.g. lists) when used as dictionary keys.
59+
# https://github.com/jazzband/django-debug-toolbar/issues/1091
60+
return (query["raw_sql"], saferepr(raw_params))
61+
62+
5163
class SQLPanel(Panel):
5264
"""
5365
Panel that displays information about the SQL queries run while processing
@@ -147,19 +159,6 @@ def generate_stats(self, request, response):
147159
query_similar = defaultdict(lambda: defaultdict(int))
148160
query_duplicates = defaultdict(lambda: defaultdict(int))
149161

150-
# The keys used to determine similar and duplicate queries.
151-
def similar_key(query):
152-
return query["raw_sql"]
153-
154-
def duplicate_key(query):
155-
raw_params = (
156-
() if query["raw_params"] is None else tuple(query["raw_params"])
157-
)
158-
# saferepr() avoids problems because of unhashable types
159-
# (e.g. lists) when used as dictionary keys.
160-
# https://github.com/jazzband/django-debug-toolbar/issues/1091
161-
return (query["raw_sql"], saferepr(raw_params))
162-
163162
if self._queries:
164163
width_ratio_tally = 0
165164
factor = int(256.0 / (len(self._databases) * 2.5))
@@ -181,8 +180,8 @@ def duplicate_key(query):
181180
# the last query recorded for each DB alias
182181
last_by_alias = {}
183182
for alias, query in self._queries:
184-
query_similar[alias][similar_key(query)] += 1
185-
query_duplicates[alias][duplicate_key(query)] += 1
183+
query_similar[alias][_similar_query_key(query)] += 1
184+
query_duplicates[alias][_duplicate_query_key(query)] += 1
186185

187186
trans_id = query.get("trans_id")
188187
prev_query = last_by_alias.get(alias, {})
@@ -259,11 +258,11 @@ def duplicate_key(query):
259258
try:
260259
(query["similar_count"], query["similar_color"]) = query_similar_colors[
261260
alias
262-
][similar_key(query)]
261+
][_similar_query_key(query)]
263262
(
264263
query["duplicate_count"],
265264
query["duplicate_color"],
266-
) = query_duplicates_colors[alias][duplicate_key(query)]
265+
) = query_duplicates_colors[alias][_duplicate_query_key(query)]
267266
except KeyError:
268267
pass
269268

0 commit comments

Comments
 (0)