Skip to content

Commit ec382c1

Browse files
committed
improve errors
1 parent 13ae955 commit ec382c1

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

Sources/PostgresNIO/Connection/PostgresClient+Query.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ private final class PostgresParameterizedQuery: PostgresRequest {
2121
var onRow: (PostgresRow) throws -> ()
2222
var rowLookupTable: PostgresRow.LookupTable?
2323
var resultFormatCodes: [PostgresFormatCode]
24+
var logger: Logger?
2425

2526
init(
2627
query: String,
@@ -34,6 +35,7 @@ private final class PostgresParameterizedQuery: PostgresRequest {
3435
}
3536

3637
func log(to logger: Logger) {
38+
self.logger = logger
3739
logger.debug("\(self.query) \(self.binds)")
3840
}
3941

@@ -63,6 +65,16 @@ private final class PostgresParameterizedQuery: PostgresRequest {
6365
case .parseComplete:
6466
return []
6567
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+
// }
6678
return []
6779
case .commandComplete:
6880
return []

Sources/PostgresNIO/Message/PostgresMessage+Error.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import NIO
22

33
extension PostgresMessage {
44
/// First message sent from the frontend during startup.
5-
public struct Error: PostgresMessageType {
5+
public struct Error: PostgresMessageType, CustomStringConvertible {
66
public static var identifier: PostgresMessage.Identifier {
77
return .error
88
}
@@ -102,7 +102,9 @@ extension PostgresMessage {
102102

103103
/// See `CustomStringConvertible`.
104104
public var description: String {
105-
return (fields[.severity] ?? "ERROR") + ": " + (fields[.message] ?? "unknown")
105+
let unique = self.fields[.routine] ?? self.fields[.sqlState] ?? "unknown"
106+
let message = self.fields[.message] ?? "Unknown"
107+
return "\(message) (\(unique))"
106108
}
107109
}
108110
}

Sources/PostgresNIO/Message/PostgresMessage+ParameterDescription.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import NIO
22

33
extension PostgresMessage {
44
/// Identifies the message as a parameter description.
5-
public struct ParameterDescription {
5+
public struct ParameterDescription: PostgresMessageType {
66
/// Parses an instance of this message type from a byte buffer.
77
public static func parse(from buffer: inout ByteBuffer) throws -> ParameterDescription {
88
guard let dataTypes = try buffer.read(array: PostgresDataType.self, { buffer in

Sources/PostgresNIO/Utilities/PostgresError.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@ public enum PostgresError: Error, LocalizedError, CustomStringConvertible {
1616
switch self {
1717
case .protocol(let message): description = "protocol error: \(message)"
1818
case .server(let error):
19-
let severity = error.fields[.severity] ?? "ERROR"
20-
let unique = error.fields[.routine] ?? error.fields[.sqlState] ?? "unknown"
21-
let message = error.fields[.message] ?? "Unknown"
22-
description = "server \(severity.lowercased()): \(message) (\(unique))"
19+
return "server: \(error.description)"
2320
case .connectionClosed:
2421
description = "connection closed"
2522
}

0 commit comments

Comments
 (0)