Skip to content

Commit 24eac06

Browse files
committed
Skip serialization on explain query
1 parent 23a8da2 commit 24eac06

2 files changed

Lines changed: 2 additions & 15 deletions

File tree

project/tests/test_execute_sql.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ def test_explain_simple(self):
131131
mock_cursor = sql.connection.cursor.return_value.__enter__.return_value
132132
sql.connection.ops.explain_query_prefix.return_value = prefix
133133
execute_sql(sql)
134-
params = tuple(force_str(param) for param in params)
135134
mock_cursor.execute.assert_called_once_with(f"{prefix} {_simple_mock_query_sql}", params)
136135

137136
def test_explain_unicode(self):
@@ -141,7 +140,6 @@ def test_explain_unicode(self):
141140
mock_cursor = sql.connection.cursor.return_value.__enter__.return_value
142141
sql.connection.ops.explain_query_prefix.return_value = prefix
143142
execute_sql(sql)
144-
params = tuple(force_str(param) for param in params)
145143
mock_cursor.execute.assert_called_once_with(f"{prefix} {_simple_mock_query_sql}", params)
146144

147145
def test_explain_non_unicode(self):
@@ -151,4 +149,4 @@ def test_explain_non_unicode(self):
151149
mock_cursor = sql.connection.cursor.return_value.__enter__.return_value
152150
sql.connection.ops.explain_query_prefix.return_value = prefix
153151
execute_sql(sql)
154-
self.assertFalse(mock_cursor.execute.called)
152+
mock_cursor.execute.assert_called_once_with(f"{prefix} {_simple_mock_query_sql}", params)

silk/sql.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,7 @@ def _explain_query(connection, q, params):
5555
# for queries other than `select`
5656
prefixed_query = f"{prefix} {q}"
5757
with connection.cursor() as cur:
58-
try:
59-
params_str = tuple(force_str(param) for param in params)
60-
except UnicodeDecodeError:
61-
# Sometimes `force_str` can still raise a UnicodeDecodeError
62-
# Reference: https://github.com/jazzband/django-silk/issues?q=encoding
63-
Logger.error(
64-
"UnicodeDecodeError while trying to explain query: %s. "
65-
"This could be caused by a non-UTF-8 encoded parameter.",
66-
q
67-
)
68-
return None
69-
cur.execute(prefixed_query, params_str)
58+
cur.execute(prefixed_query, params)
7059
result = _unpack_explanation(cur.fetchall())
7160
return '\n'.join(result)
7261
return None

0 commit comments

Comments
 (0)