@@ -131,9 +131,12 @@ public struct PostgresCopyFromFormat: Sendable {
131131///
132132/// An empty `columns` array signifies that no columns should be specified in the query and that all columns will be
133133/// copied by the caller.
134+ ///
135+ /// - Important: The table and column names are inserted into the `COPY FROM` query as passed and might thus be
136+ /// susceptible to SQL injection. Ensure no untrusted data is contained in these strings.
134137private func buildCopyFromQuery(
135- table: StaticString ,
136- columns: [ StaticString ] = [ ] ,
138+ table: String ,
139+ columns: [ String ] = [ ] ,
137140 format: PostgresCopyFromFormat
138141) -> PostgresQuery {
139142 var query = """
@@ -173,11 +176,11 @@ extension PostgresConnection {
173176 /// Throw an error from the closure to fail the data transfer. The error thrown by the closure will be rethrown
174177 /// by the `copyFrom` function.
175178 ///
176- /// - Note : The table and column names are inserted into the SQL query verbatim. They are forced to be compile-time
177- /// specified to avoid runtime SQL injection attacks .
179+ /// - Important : The table and column names are inserted into the `COPY FROM` query as passed and might thus be
180+ /// susceptible to SQL injection. Ensure no untrusted data is contained in these strings .
178181 public func copyFrom(
179- table: StaticString ,
180- columns: [ StaticString ] = [ ] ,
182+ table: String ,
183+ columns: [ String ] = [ ] ,
181184 format: PostgresCopyFromFormat = . text( . init( ) ) ,
182185 logger: Logger ,
183186 isolation: isolated ( any Actor ) ? = #isolation,
0 commit comments