Skip to content

Commit 136efb3

Browse files
authored
Revert "Fix #665 and #714, add cleanup in middleware (#798)" (#807)
This partially reverts commit e00b93c. The fixes in the middleware to restore the original `execute_sql` function remain in place.
1 parent 8a1cbfd commit 136efb3

File tree

2 files changed

+13
-22
lines changed

2 files changed

+13
-22
lines changed

project/tests/test_execute_sql.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from silk.collector import DataCollector
66
from silk.models import Request, SQLQuery
7-
from silk.sql import execute_sql, force_str_with_fallback
7+
from silk.sql import execute_sql
88

99
from .util import delete_all_models
1010

@@ -14,9 +14,8 @@ def mock_sql():
1414
mock_sql_query._execute_sql = Mock()
1515
mock_sql_query.query = NonCallableMock(spec_set=['model'])
1616
mock_sql_query.query.model = Mock()
17-
query_string = 'SELECT * FROM table_name WHERE column1 = %s AND column2 = %s'
18-
params = (b'\x0a\x00\x00\xff', 1)
19-
mock_sql_query.as_sql = Mock(return_value=(query_string, params))
17+
query_string = 'SELECT * from table_name'
18+
mock_sql_query.as_sql = Mock(return_value=(query_string, ()))
2019

2120
mock_sql_query.connection = NonCallableMock(
2221
spec_set=['cursor', 'features', 'ops'],
@@ -31,13 +30,13 @@ def mock_sql():
3130
ops=NonCallableMock(spec_set=['explain_query_prefix']),
3231
)
3332

34-
return mock_sql_query, query_string, params
33+
return mock_sql_query, query_string
3534

3635

3736
def call_execute_sql(cls, request):
3837
DataCollector().configure(request=request)
3938
delete_all_models(SQLQuery)
40-
cls.mock_sql, cls.query_string, cls.params = mock_sql()
39+
cls.mock_sql, cls.query_string = mock_sql()
4140
kwargs = {
4241
'one': 1,
4342
'two': 2
@@ -80,7 +79,7 @@ def test_count(self):
8079

8180
def test_query(self):
8281
query = list(DataCollector().queries.values())[0]
83-
self.assertEqual(query['query'], self.query_string % tuple(force_str_with_fallback(param) for param in self.params))
82+
self.assertEqual(query['query'], self.query_string)
8483

8584

8685
class TestCallSilky(TestCase):
@@ -89,7 +88,7 @@ def tearDown(self):
8988

9089
def test_no_effect(self):
9190
DataCollector().configure()
92-
sql, _, _ = mock_sql()
91+
sql, _ = mock_sql()
9392
sql.query.model = NonCallableMagicMock(spec_set=['__module__'])
9493
sql.query.model.__module__ = 'silk.models'
9594
# No SQLQuery models should be created for silk requests for obvious reasons
@@ -111,23 +110,23 @@ def _query(self):
111110

112111
def test_request(self):
113112
DataCollector().configure(request=Request.objects.create(path='/path/to/somewhere'))
114-
sql, _, _ = mock_sql()
113+
sql, _ = mock_sql()
115114
execute_sql(sql)
116115
query = self._query()
117116
self.assertEqual(query['request'], DataCollector().request)
118117

119118
def test_registration(self):
120119
DataCollector().configure(request=Request.objects.create(path='/path/to/somewhere'))
121-
sql, _, _ = mock_sql()
120+
sql, _ = mock_sql()
122121
execute_sql(sql)
123122
query = self._query()
124123
self.assertIn(query, DataCollector().queries.values())
125124

126125
def test_explain(self):
127126
DataCollector().configure(request=Request.objects.create(path='/path/to/somewhere'))
128-
sql, qs, params = mock_sql()
127+
sql, qs = mock_sql()
129128
prefix = "EXPLAIN"
130129
mock_cursor = sql.connection.cursor.return_value.__enter__.return_value
131130
sql.connection.ops.explain_query_prefix.return_value = prefix
132131
execute_sql(sql)
133-
mock_cursor.execute.assert_called_once_with(f"{prefix} {qs}", tuple(force_str_with_fallback(param) for param in params))
132+
mock_cursor.execute.assert_called_once_with(f"{prefix} {qs}", ())

silk/sql.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,6 @@ def _should_wrap(sql_query):
2121
return True
2222

2323

24-
def force_str_with_fallback(value):
25-
"""As force_str, but for bytes that do not decode to utf-8, return hex instead of erroring."""
26-
try:
27-
return force_str(value)
28-
except UnicodeDecodeError:
29-
return f"0x{value.hex()}"
30-
31-
3224
def _unpack_explanation(result):
3325
for row in result:
3426
if not isinstance(row, str):
@@ -63,7 +55,7 @@ def _explain_query(connection, q, params):
6355
# for queries other than `select`
6456
prefixed_query = f"{prefix} {q}"
6557
with connection.cursor() as cur:
66-
cur.execute(prefixed_query, tuple(force_str_with_fallback(param) for param in params))
58+
cur.execute(prefixed_query, params)
6759
result = _unpack_explanation(cur.fetchall())
6860
return '\n'.join(result)
6961
return None
@@ -85,7 +77,7 @@ def execute_sql(self, *args, **kwargs):
8577
return iter([])
8678
else:
8779
return
88-
sql_query = q % tuple(force_str_with_fallback(param) for param in params)
80+
sql_query = q % tuple(force_str(param) for param in params)
8981
if _should_wrap(sql_query):
9082
tb = ''.join(reversed(traceback.format_stack()))
9183
query_dict = {

0 commit comments

Comments
 (0)