Skip to content

Commit 1fc1c20

Browse files
authored
re-add encoding warning (#54)
1 parent 185d009 commit 1fc1c20

File tree

3 files changed

+28
-10
lines changed

3 files changed

+28
-10
lines changed

Sources/PostgresNIO/Connection/PostgresClient+Query.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,16 @@ private final class PostgresParameterizedQuery: PostgresRequest {
6565
case .parseComplete:
6666
return []
6767
case .parameterDescription:
68-
// let params = try PostgresMessage.ParameterDescription(message: message)
69-
// if params.dataTypes.count != binds.count {
70-
// self.logger!.warning("Expected parameters count (\(params.dataTypes.count)) does not equal binds count (\(binds.count))")
71-
// } else {
72-
// for (i, item) in zip(params.dataTypes, binds).enumerated() {
73-
// if item.0 != item.1.type {
74-
// self.logger!.warning("bind $\(i + 1) type (\(item.1.type)) does not match expected parameter type (\(item.0))")
75-
// }
76-
// }
77-
// }
68+
let params = try PostgresMessage.ParameterDescription(message: message)
69+
if params.dataTypes.count != self.binds.count {
70+
self.logger!.warning("Expected parameters count (\(params.dataTypes.count)) does not equal binds count (\(binds.count))")
71+
} else {
72+
for (i, item) in zip(params.dataTypes, self.binds).enumerated() {
73+
if item.0 != item.1.type {
74+
self.logger!.warning("bind $\(i + 1) type (\(item.1.type)) does not match expected parameter type (\(item.0))")
75+
}
76+
}
77+
}
7878
return []
7979
case .commandComplete:
8080
return []

Tests/PostgresNIOTests/NIOPostgresTests.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,23 @@ final class NIOPostgresTests: XCTestCase {
556556
XCTAssertEqual(rows[0].column("languages")?.array(of: String.self), ["en"])
557557
XCTAssertEqual(rows[0].column("currencies")?.array(of: String.self), ["USD", "DKK"])
558558
}
559+
560+
func testBindDate() throws {
561+
// https://github.com/vapor/postgres-nio/issues/53
562+
let date = Date(timeIntervalSince1970: 1571425782)
563+
let query = """
564+
SELECT $1::json as "date"
565+
"""
566+
let conn = try PostgresConnection.test(on: eventLoop).wait()
567+
defer { try! conn.close().wait() }
568+
do {
569+
_ = try conn.query(query, [.init(date: date)]).wait()
570+
XCTFail("should have failed")
571+
} catch PostgresError.server(let error) {
572+
XCTAssertEqual(error.fields[.routine], "report_invalid_encoding")
573+
}
574+
575+
}
559576

560577
// MARK: Performance
561578

Tests/PostgresNIOTests/XCTestManifests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ extension NIOPostgresTests {
77
// to regenerate.
88
static let __allTests__NIOPostgresTests = [
99
("testAverageLengthNumeric", testAverageLengthNumeric),
10+
("testBindDate", testBindDate),
1011
("testBindInteger", testBindInteger),
1112
("testBoolSerialize", testBoolSerialize),
1213
("testBytesSerialize", testBytesSerialize),

0 commit comments

Comments
 (0)