@@ -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+
5163class 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