@@ -48,6 +48,18 @@ def get_transaction_status_display(vendor, level):
48
48
return choices .get (level )
49
49
50
50
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
+
51
63
class SQLPanel (Panel ):
52
64
"""
53
65
Panel that displays information about the SQL queries run while processing
@@ -147,19 +159,6 @@ def generate_stats(self, request, response):
147
159
query_similar = defaultdict (lambda : defaultdict (int ))
148
160
query_duplicates = defaultdict (lambda : defaultdict (int ))
149
161
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
-
163
162
if self ._queries :
164
163
width_ratio_tally = 0
165
164
factor = int (256.0 / (len (self ._databases ) * 2.5 ))
@@ -181,8 +180,8 @@ def duplicate_key(query):
181
180
# the last query recorded for each DB alias
182
181
last_by_alias = {}
183
182
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
186
185
187
186
trans_id = query .get ("trans_id" )
188
187
prev_query = last_by_alias .get (alias , {})
@@ -259,11 +258,11 @@ def duplicate_key(query):
259
258
try :
260
259
(query ["similar_count" ], query ["similar_color" ]) = query_similar_colors [
261
260
alias
262
- ][similar_key (query )]
261
+ ][_similar_query_key (query )]
263
262
(
264
263
query ["duplicate_count" ],
265
264
query ["duplicate_color" ],
266
- ) = query_duplicates_colors [alias ][duplicate_key (query )]
265
+ ) = query_duplicates_colors [alias ][_duplicate_query_key (query )]
267
266
except KeyError :
268
267
pass
269
268
0 commit comments