File tree Expand file tree Collapse file tree 3 files changed +24
-0
lines changed Expand file tree Collapse file tree 3 files changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -120,6 +120,8 @@ def _quote_params(self, params):
120
120
return params
121
121
if isinstance (params , dict ):
122
122
return {key : self ._quote_expr (value ) for key , value in params .items ()}
123
+ if isinstance (params , tuple ):
124
+ return tuple (self ._quote_expr (p ) for p in params )
123
125
return [self ._quote_expr (p ) for p in params ]
124
126
125
127
def _decode (self , param ):
Original file line number Diff line number Diff line change @@ -4,6 +4,8 @@ Change log
4
4
Pending
5
5
-------
6
6
7
+ * Fixed PostgreSQL raw query with a tuple parameter during on explain.
8
+
7
9
3.8.1 (2022-12-03)
8
10
------------------
9
11
Original file line number Diff line number Diff line change @@ -221,6 +221,26 @@ def test_json_param_conversion(self):
221
221
'["{\\ "foo\\ ": \\ "bar\\ "}"]' ,
222
222
)
223
223
224
+ @unittest .skipUnless (
225
+ connection .vendor == "postgresql" , "Test valid only on PostgreSQL"
226
+ )
227
+ def test_tuple_param_conversion (self ):
228
+ self .assertEqual (len (self .panel ._queries ), 0 )
229
+
230
+ list (
231
+ PostgresJSON .objects .raw (
232
+ "SELECT * FROM tests_postgresjson WHERE field ->> 'key' IN %s" ,
233
+ [("a" , "b'" )],
234
+ )
235
+ )
236
+
237
+ response = self .panel .process_request (self .request )
238
+ self .panel .generate_stats (self .request , response )
239
+
240
+ # ensure query was logged
241
+ self .assertEqual (len (self .panel ._queries ), 1 )
242
+ self .assertEqual (self .panel ._queries [0 ]["params" ], '[["a", "b\' "]]' )
243
+
224
244
def test_binary_param_force_text (self ):
225
245
self .assertEqual (len (self .panel ._queries ), 0 )
226
246
You can’t perform that action at this time.
0 commit comments