11import datetime
2- from decimal import Decimal
32import uuid
3+ from decimal import Decimal
44
55import duckdb
66import psycopg .errors
@@ -47,7 +47,9 @@ def test_prepared(cur: Cursor):
4747
4848def test_prepared_select_list_parameters (cur : Cursor ):
4949 cur .sql ("CREATE TEMP TABLE t_select_param (id int, name text) USING duckdb" )
50- cur .sql ("INSERT INTO t_select_param VALUES (1, 'alice'), (2, 'bob'), (42, 'charlie')" )
50+ cur .sql (
51+ "INSERT INTO t_select_param VALUES (1, 'alice'), (2, 'bob'), (42, 'charlie')"
52+ )
5153
5254 expected_rows = [
5355 ("my_label" , 1 , "alice" ),
@@ -61,8 +63,12 @@ def test_prepared_select_list_parameters(cur: Cursor):
6163 q_select = "SELECT %s AS label, id, name FROM t_select_param ORDER BY id"
6264 assert cur .sql (q_select , ("my_label" ,), prepare = True ) == expected_rows
6365
64- q_select_where = "SELECT %s AS label, id, name FROM t_select_param WHERE id = %s"
65- assert cur .sql (q_select_where , ("my_label" , 42 ), prepare = True ) == [("my_label" , 42 , "charlie" )]
66+ q_select_where = (
67+ "SELECT %s AS label, id, name FROM t_select_param WHERE id = %s"
68+ )
69+ assert cur .sql (q_select_where , ("my_label" , 42 ), prepare = True ) == [
70+ ("my_label" , 42 , "charlie" )
71+ ]
6672
6773
6874def _create_typed_bind_parquet (tmp_path ) -> str :
@@ -103,7 +109,9 @@ def test_prepared_parquet_untyped_in_param(cur: Cursor, tmp_path):
103109def test_prepared_parquet_casted_param_controls (cur : Cursor , tmp_path ):
104110 parquet_path = _create_typed_bind_parquet (tmp_path )
105111 q_between = "SELECT count(*) FROM read_parquet(%s) t WHERE t['bc_date'] BETWEEN %s::integer AND %s::integer"
106- q_in = "SELECT count(*) FROM read_parquet(%s) t WHERE t['data_stream'] IN (%s::text)"
112+ q_in = (
113+ "SELECT count(*) FROM read_parquet(%s) t WHERE t['data_stream'] IN (%s::text)"
114+ )
107115 cur .sql ("SET duckdb.force_execution = true" )
108116
109117 for mode in ("force_custom_plan" , "force_generic_plan" ):
@@ -123,7 +131,9 @@ def test_prepared_parquet_native_prepare_execute_between(cur: Cursor, tmp_path):
123131
124132 for mode in ("force_custom_plan" , "force_generic_plan" ):
125133 cur .sql (f"SET plan_cache_mode = '{ mode } '" )
126- cur .sql (f"PREPARE b1_between AS SELECT count(*) FROM read_parquet('{ escaped_path } ') t WHERE t['bc_date'] BETWEEN $1 AND $2" )
134+ cur .sql (
135+ f"PREPARE b1_between AS SELECT count(*) FROM read_parquet('{ escaped_path } ') t WHERE t['bc_date'] BETWEEN $1 AND $2"
136+ )
127137 assert cur .sql ("EXECUTE b1_between(20240901, 20240902)" ) == 2
128138 cur .sql ("DEALLOCATE b1_between" )
129139
@@ -139,7 +149,9 @@ def test_prepared_parquet_native_prepare_execute_in(cur: Cursor, tmp_path):
139149
140150 for mode in ("force_custom_plan" , "force_generic_plan" ):
141151 cur .sql (f"SET plan_cache_mode = '{ mode } '" )
142- cur .sql (f"PREPARE b3_in AS SELECT count(*) FROM read_parquet('{ escaped_path } ') t WHERE t['data_stream'] IN ($1)" )
152+ cur .sql (
153+ f"PREPARE b3_in AS SELECT count(*) FROM read_parquet('{ escaped_path } ') t WHERE t['data_stream'] IN ($1)"
154+ )
143155 assert cur .sql ("EXECUTE b3_in('lv')" ) == 1
144156 cur .sql ("DEALLOCATE b3_in" )
145157
@@ -277,13 +289,18 @@ def test_prepared_array_parameters(cur: Cursor):
277289 assert cur .sql (q_num , ([Decimal ("1.1" ), Decimal ("2.2" )],), prepare = True ) == 1
278290
279291 cur .sql ("SET plan_cache_mode = 'force_generic_plan'" )
280- assert cur .sql (q_num , ([Decimal ("1.1" ), Decimal ("2.2" )],)) == 1 # creates generic plan
281-
282-
283- @pytest .mark .parametrize ("type_sql,value" , [
284- ("oid" , 42 ),
285- ("name" , "myname" ),
286- ])
292+ assert (
293+ cur .sql (q_num , ([Decimal ("1.1" ), Decimal ("2.2" )],)) == 1
294+ ) # creates generic plan
295+
296+
297+ @pytest .mark .parametrize (
298+ "type_sql,value" ,
299+ [
300+ ("oid" , 42 ),
301+ ("name" , "myname" ),
302+ ],
303+ )
287304def test_prepared_unsupported_parameter_type (cur : Cursor , type_sql , value ):
288305 cur .sql (f"CREATE TABLE t(x { type_sql } ) USING duckdb" )
289306 cur .sql ("INSERT INTO t VALUES (%s)" , (value ,))
0 commit comments