@@ -12,8 +12,9 @@ public enum PoolError: Error {
1212 case cancelled
1313 /// The connection to the database was unexpectedly closed.
1414 case connectionFailed
15- /// The pool was already shut down.
16- case poolDestroyed
15+ /// The pool was already shut down. Includes the original `PSQLError`
16+ /// if the pool was shutdown due to a permanent server error.
17+ case poolDestroyed( PSQLError ? )
1718 /// Some PostgreSQL error.
1819 case postgresError( PSQLError )
1920 /// The query was cancelled by the server.
@@ -27,14 +28,31 @@ public enum PoolError: Error {
2728
2829extension PoolError : CustomStringConvertible {
2930
31+ /// A short error description.
3032 public var description : String {
3133 switch self {
32- case . cancelled: return " <PoolError: cancelled> "
33- case . connectionFailed: return " <PoolError: connectionFailed> "
34- case . poolDestroyed: return " <PoolError: poolDestroyed> "
35- case . postgresError( let psqlError) : return " <PoolError: postgresError= \( psqlError. description) > "
36- case . queryCancelled: return " <PoolError: queryCancelled> "
37- case . unknown: return " <PoolError: unknown> "
34+ case . cancelled:
35+ return " <PoolError: cancelled> "
36+
37+ case . connectionFailed:
38+ return " <PoolError: connectionFailed> "
39+
40+ case . poolDestroyed( let psqlError) :
41+ if let psqlError {
42+ return " <PoolError: poolDestroyed= \( psqlError. description) > "
43+ }
44+ else {
45+ return " <PoolError: poolDestroyed> "
46+ }
47+
48+ case . postgresError( let psqlError) :
49+ return " <PoolError: postgresError= \( psqlError. description) > "
50+
51+ case . queryCancelled:
52+ return " <PoolError: queryCancelled> "
53+
54+ case . unknown:
55+ return " <PoolError: unknown> "
3856 }
3957 }
4058
@@ -44,14 +62,31 @@ extension PoolError: CustomStringConvertible {
4462
4563extension PoolError : CustomDebugStringConvertible {
4664
65+ /// A detailed error description suitable for debugging queries and other problems with the server.
4766 public var debugDescription : String {
4867 switch self {
49- case . cancelled: return " <PoolError: cancelled> "
50- case . connectionFailed: return " <PoolError: connectionFailed> "
51- case . poolDestroyed: return " <PoolError: poolDestroyed> "
52- case . postgresError( let psqlError) : return " <PoolError: postgresError= \( psqlError. debugDescription) > "
53- case . queryCancelled( query: let query, runtime: let runtime) : return " <PoolError: query ' \( query) ' cancelled after \( runtime. rounded ( toPlaces: 3 ) ) s> "
54- case . unknown: return " <PoolError: unknown> "
68+ case . cancelled:
69+ return " <PoolError: cancelled> "
70+
71+ case . connectionFailed:
72+ return " <PoolError: connectionFailed> "
73+
74+ case . poolDestroyed( let psqlError) :
75+ if let psqlError {
76+ return " <PoolError: poolDestroyed= \( psqlError. debugDescription) > "
77+ }
78+ else {
79+ return " <PoolError: poolDestroyed> "
80+ }
81+
82+ case . postgresError( let psqlError) :
83+ return " <PoolError: postgresError= \( psqlError. debugDescription) > "
84+
85+ case . queryCancelled( query: let query, runtime: let runtime) :
86+ return " <PoolError: query ' \( query) ' cancelled after \( runtime. rounded ( toPlaces: 3 ) ) s> "
87+
88+ case . unknown:
89+ return " <PoolError: unknown> "
5590 }
5691 }
5792
0 commit comments