Skip to content

Commit 711b726

Browse files
authored
Add support for VARCHAR[] (#114)
* add varchar array type * fix comment
1 parent 45565c5 commit 711b726

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

Sources/PostgresNIO/Data/PostgresDataType.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ public struct PostgresDataType: Codable, Equatable, ExpressibleByIntegerLiteral,
6565
public static let int4Array = PostgresDataType(1007)
6666
/// `1009` _text
6767
public static let textArray = PostgresDataType(1009)
68+
/// `1015` _varchar
69+
public static let varcharArray = PostgresDataType(1015)
6870
/// `1016` _int8
6971
public static let int8Array = PostgresDataType(1016)
7072
/// `1017` _point
@@ -154,6 +156,7 @@ public struct PostgresDataType: Codable, Equatable, ExpressibleByIntegerLiteral,
154156
case .int2Array: return "SMALLINT[]"
155157
case .int4Array: return "INTEGER[]"
156158
case .textArray: return "TEXT[]"
159+
case .varcharArray: return "VARCHAR[]"
157160
case .int8Array: return "BIGINT[]"
158161
case .pointArray: return "POINT[]"
159162
case .float4Array: return "REAL[]"
@@ -192,6 +195,7 @@ public struct PostgresDataType: Codable, Equatable, ExpressibleByIntegerLiteral,
192195
case .uuid: return .uuidArray
193196
case .jsonb: return .jsonbArray
194197
case .text: return .textArray
198+
case .varchar: return .varcharArray
195199
default: return nil
196200
}
197201
}
@@ -213,6 +217,7 @@ public struct PostgresDataType: Codable, Equatable, ExpressibleByIntegerLiteral,
213217
case .uuidArray: return .uuid
214218
case .jsonbArray: return .jsonb
215219
case .textArray: return .text
220+
case .varcharArray: return .varchar
216221
default: return nil
217222
}
218223
}

Tests/PostgresNIOTests/PostgresNIOTests.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,15 @@ final class PostgresNIOTests: XCTestCase {
919919
let conn = try PostgresConnection.test(on: eventLoop).wait()
920920
try conn.channel.close().wait()
921921
}
922+
923+
// https://github.com/vapor/postgres-nio/issues/113
924+
func testVaryingCharArray() throws {
925+
let conn = try PostgresConnection.test(on: eventLoop).wait()
926+
defer { try! conn.close().wait() }
927+
928+
let res = try conn.query(#"SELECT '{"foo", "bar", "baz"}'::VARCHAR[] as foo"#).wait()
929+
XCTAssertEqual(res[0].column("foo")?.array(of: String.self), ["foo", "bar", "baz"])
930+
}
922931
}
923932

924933
func env(_ name: String) -> String? {

0 commit comments

Comments
 (0)