Skip to content

Commit 0e79469

Browse files
committed
Allow String to be used for table and column names in COPY FROM
1 parent 568d258 commit 0e79469

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

Sources/PostgresNIO/Connection/PostgresConnection+CopyFrom.swift

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
134137
private 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

Comments
 (0)