From 57353c12fe426b92476babb3645fe9f7cecbb5da Mon Sep 17 00:00:00 2001 From: Albert Wang Date: Sun, 7 Sep 2025 02:02:48 -0700 Subject: [PATCH] Skip serialization on explain query --- project/tests/test_execute_sql.py | 2 -- silk/sql.py | 13 +------------ 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/project/tests/test_execute_sql.py b/project/tests/test_execute_sql.py index deefb7ef..5cdee112 100644 --- a/project/tests/test_execute_sql.py +++ b/project/tests/test_execute_sql.py @@ -133,7 +133,6 @@ def test_explain_simple(self): sql.connection.ops.explain_query_prefix.return_value = prefix execute_sql(sql) self.assertNotIn(prefix, params) - params = tuple(force_str(param) for param in params) mock_cursor.execute.assert_called_once_with(f"{prefix} {_simple_mock_query_sql}", params) def test_explain_unicode(self): @@ -144,7 +143,6 @@ def test_explain_unicode(self): sql.connection.ops.explain_query_prefix.return_value = prefix execute_sql(sql) self.assertNotIn(prefix, params) - params = tuple(force_str(param) for param in params) mock_cursor.execute.assert_called_once_with(f"{prefix} {_simple_mock_query_sql}", params) def test_explain_non_unicode(self): diff --git a/silk/sql.py b/silk/sql.py index 509ed525..b24f8306 100644 --- a/silk/sql.py +++ b/silk/sql.py @@ -59,18 +59,7 @@ def _explain_query(connection, q, params): else: prefixed_query = f"{prefix} {q}" with connection.cursor() as cur: - try: - params_str = tuple(force_str(param) for param in params) - except UnicodeDecodeError: - # Sometimes `force_str` can still raise a UnicodeDecodeError - # Reference: https://github.com/jazzband/django-silk/issues?q=encoding - Logger.error( - "UnicodeDecodeError while trying to explain query: %s. " - "This could be caused by a non-UTF-8 encoded parameter.", - q - ) - return None - cur.execute(prefixed_query, params_str) + cur.execute(prefixed_query, params) result = _unpack_explanation(cur.fetchall()) return '\n'.join(result) return None