8989get_parameter (connection:: PormGPostgres ) = PgParameterizedQuery (" " , Any[], 0 )
9090
9191function add_parameter! (pq:: PormGPostgresParam , value:: AbstractArray ; contains:: Bool = false )
92- parameters:: Vector{String} = String[]
93- for v in value
94- pq. parameter_count += 1
95- push! (pq. parameters, v)
96- push! (parameters, " \$ $(pq. parameter_count) " )
97- end
98- return parameters
92+ # parameters::Vector{String} = String[]
93+ # for v in value
94+ # pq.parameter_count += 1
95+ # push!(pq.parameters, v)
96+ # push!(parameters, "\$$(pq.parameter_count)")
97+ # end
98+ contains && (throw (ArgumentError (" Contains option is not supported for array parameters" )))
99+ pq. parameter_count += 1
100+ push! (pq. parameters, value)
101+ # push!(pq.parameters, "ANY(\$$(pq.parameter_count))")
102+ return " \$ $(pq. parameter_count) "
99103end
100104function add_parameter! (pq:: PormGPostgresParam , value; contains:: Bool = false ):: String
101105 contains && (value = string (" %" , value |> escape_like_pattern, " %" )) # Escape LIKE patterns if needed
@@ -1613,7 +1617,7 @@ function _get_filter_query(v::SQLTypeOper, instruc::SQLInstruction)
16131617 return string (column, " " , v. operator, " " , placeholders)
16141618 elseif v. operator in [" in" , " not in" ]
16151619 if isa (placeholders, String)
1616- return string (column, " " , v. operator, " (" , placeholders, " )" )
1620+ return string (column, " " , v. operator == " in " ? " = ANY " : " <> ALL " , " (" , placeholders, " )" )
16171621 elseif isa (placeholders, AbstractArray)
16181622 return string (column, " " , v. operator, " (" , join (placeholders, " , " ), " )" )
16191623 else
@@ -2268,7 +2272,7 @@ function update(objct::SQLObject; table_alias::Union{Nothing, SQLTableAlias} = n
22682272 """
22692273 end
22702274
2271- @info sql
2275+ # @info sql
22722276
22732277 @infiltrate false
22742278
@@ -2468,9 +2472,10 @@ function bulk_insert(objct::SQLObjectHandler, df_o::DataFrames.DataFrame;
24682472 for (index, row) in enumerate (eachrow (df))
24692473 values = String[]
24702474 try
2471- values = [model. fields[field]. formater (row[field]) for field in fields_df]
2472- param_placeholders = add_parameter! (parameters, values)
2475+ param_placeholders = [add_parameter! (parameters, model. fields[field]. formater (row[field]) ) for field in fields_df]
2476+ # param_placeholders = add_parameter!(parameters, values)
24732477 catch e
2478+ @infiltrate false
24742479 _depuration_values_bulk_insert (fields_df, model, row, index, django_prefix)
24752480 throw (" Error in bulk_update, the row $(index) has a problem: $(e) " )
24762481 end
@@ -2761,8 +2766,8 @@ function _bulk_update(objct::SQLObjectHandler, df::DataFrames.DataFrame,
27612766 for (index, row) in enumerate (eachrow (df))
27622767 values = String[]
27632768 try
2764- values = [model. fields[field]. formater (row[field]) for field in joined_columns]
2765- param_placeholders = add_parameter! (instruction. parameters, values)
2769+ param_placeholders = [add_parameter! (instruction . parameters, model. fields[field]. formater (row[field]) ) for field in joined_columns]
2770+ # param_placeholders = add_parameter!(instruction.parameters, values)
27662771 catch e
27672772 _depuration_values_bulk_insert (fields_df, model, row, index, settings. django_prefix != = nothing )
27682773 throw (" Error in bulk_update, the row $(index) has a problem: $(e) " )
@@ -2971,7 +2976,7 @@ function delete(objct::SQLObjectHandler;
29712976
29722977 # Process field updates (for SET_NULL, SET_DEFAULT, etc.)
29732978 for ((field, value), affected_models) in collector. field_updates
2974- @infiltrate
2979+ @infiltrate false
29752980 for (affected_model, keys) in affected_models
29762981 update_field (connection, affected_model, field, value, keys, show_query, conn)
29772982 end
@@ -3220,10 +3225,11 @@ function delete_objects(connection::Union{PormGPostgres, SQLite.DB}, model::Porm
32203225 @infiltrate false
32213226 # Execute the actual deletion SQL
32223227 _where = String[]
3228+ parameters = get_parameter (connection)
32233229 # @info keys[1][:objct] |> query
32243230 for key in keys
32253231 pk_field = key[:key ]
3226- push! (_where, """ "$(pk_field) " IN ($(key[:objct ] |> query) ) """ )
3232+ push! (_where, """ "$(pk_field) " IN ($(query ( key[:objct ], parameters = parameters)) ) """ )
32273233 end
32283234 sql:: String = " "
32293235 if size (keys, 1 ) == 1
@@ -3244,7 +3250,7 @@ function delete_objects(connection::Union{PormGPostgres, SQLite.DB}, model::Porm
32443250 deleted_counter[model. name] = _query |> do_count
32453251 _query. values (pk_field) # Ensure the query is built
32463252 @infiltrate false
3247- sql = " DELETE FROM $(model. name |> lowercase) WHERE $(pk_field) IN ($(_query |> query ) )"
3253+ sql = " DELETE FROM $(model. name |> lowercase) WHERE $(pk_field) IN ($(query ( _query, parameters = parameters) ) )"
32483254 end
32493255
32503256 sql == " " && throw (" Error in delete, the SQL query is empty, this should not happen" )
@@ -3253,23 +3259,25 @@ function delete_objects(connection::Union{PormGPostgres, SQLite.DB}, model::Porm
32533259 @info sql
32543260 return deleted_counter # Return count of deleted objects
32553261 end
3256- result, conn = with_transaction (connection, sql, conn= conn)
3262+ @infiltrate false
3263+ result, conn = with_transaction (connection, sql, conn= conn, params= parameters)
32573264 return deleted_counter # Return count of deleted objects
32583265end
32593266
32603267function update_field (connection:: PormGPostgres , model:: PormGModel , field:: String , value:: Any , keys:: Dict{Symbol, Union{String, SQLObjectHandler}} , show_query:: Bool , conn:: Union{Nothing, LibPQ.Connection} )
32613268 # Update field values using query object like CASCADE
3262- @infiltrate
3269+ @infiltrate false
32633270 pk_field = keys[:key ]
32643271 _query = keys[:objct ]
3272+ parameters = get_parameter (connection)
32653273 value_sql = value === nothing ? " NULL" : model. fields[field]. formater (value)
3266- sql = " UPDATE $(model. name |> lowercase) SET $(field) = $(value_sql) WHERE $(pk_field) IN ($(_query |> query ) )"
3274+ sql = " UPDATE $(model. name |> lowercase) SET $(field) = $(value_sql) WHERE $(pk_field) IN ($(query ( _query, parameters = parameters) ) )"
32673275 if show_query
32683276 @info sql
32693277 return
32703278 end
3271- LibPQ. execute (connection, sql)
3272- with_transaction (connection, sql, conn= conn)
3279+ # LibPQ.execute(connection, sql)
3280+ with_transaction (connection, sql, conn= conn, params = parameters )
32733281end
32743282
32753283
0 commit comments