8000 Full error and notice descriptions · postgres-haskell/postgres-wire@b9b0098 · GitHub
[go: up one dir, main page]

Skip to content

Commit b9b0098

Browse files
Full error and notice descriptions
1 parent 9bb7d8e commit b9b0098

File tree

2 files changed

+49
-16
lines changed

2 files changed

+49
-16
lines changed

src/Database/PostgreSQL/Protocol/Connection.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ data Connection = Connection
4545
, connReceiverThread :: ThreadId
4646
, connOutChan :: OutChan ServerMessage
4747
, connStatementStorage :: StatementStorage
48+
, connParameters :: ConnectionParameters
4849
}
4950

5051
address :: SocketAddress Unix

src/Database/PostgreSQL/Protocol/Types.hs

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ data ServerMessage
110110
| EmptyQueryResponse
111111
| ErrorResponse ErrorDesc
112112
| NoData
113-
-- We dont store content of notice at all
114-
| NoticeResponse
113+
| NoticeResponse NoticeDesc
115114
| NotificationResponse
116115
ServerProccessId
117116
ChannelName
@@ -130,7 +129,7 @@ data FieldDescription = FieldDescription {
130129
fieldName :: B.ByteString
131130
-- the object ID of the table
132131
, fieldTableOid :: Oid
133-
-- the attribute number of the column;
132+
-- the attribute number of the column
134133
, fieldColumnNumber :: Int16
135134
-- Oid type
136135
, fieldTypeOid :: Oid
@@ -151,18 +150,53 @@ data ErrorSeverity
151150
| UnknownErrorSeverity
152151
deriving (Show, Eq)
153152

153+
data NoticeSeverity
154+
= SeverityWarning
155+
| SeverityNotice
156+
| SeverityDebug
157+
| SeverityInfo
158+
| SeverityLog
159+
| UnknownNoticeSeverity
160+
deriving (Show, Eq)
161+
154162
data ErrorDesc = ErrorDesc
155-
{ errorSeverity :: ErrorSeverity
156-
, errorCode :: B.ByteString
157-
, errorMessage :: B.ByteString
158-
, errorDetail :: Maybe B.ByteString
159-
, errorHint :: Maybe B.ByteString
160-
, errorQuery :: Maybe B.ByteString
161-
, errorSchema :: Maybe B.ByteString
162-
, errorTable :: Maybe B.ByteString
163-
, errorColumn :: Maybe B.ByteString
164-
, errorDataType :: Maybe B.ByteString
165-
, errorConstraint :: Maybe B.ByteString
163+
{ errorSeverity :: ErrorSeverity
164+
, errorCode :: B.ByteString
165+
, errorMessage :: B.ByteString
166+
, errorDetail :: Maybe B.ByteString
167+
, errorHint :: Maybe B.ByteString
168+
, errorPosition :: Maybe Int
169+
, errorInternalPosition :: Maybe Int
170+
, errorInternalQuery :: Maybe B.ByteString
171+
, errorContext :: Maybe B.ByteString
172+
, errorSchema :: Maybe B.ByteString
173+
, errorTable :: Maybe B.ByteString
174+
, errorColumn :: Maybe B.ByteString
175+
, errorDataType :: Maybe B.ByteString
176+
, errorConstraint :: Maybe B.ByteString
177+
, errorSourceFilename :: Maybe B.ByteString
178+
, errorSourceLine :: Maybe B.Int
179+
, errorRoutine :: Maybe B.ByteString
180+
} deriving (Show)
181+
182+
data NoticeDesc = NoticeDesc
183+
{ noticeSeverity :: NoticeSeverity
184+
, noticeCode :: B.ByteString
185+
, noticeMessage :: B.ByteString
186+
, noticeDetail :: Maybe B.ByteString
187+
, noticeHint :: Maybe B.ByteString
188+
, noticePosition :: Maybe Int
189+
, noticeInternalPosition :: Maybe Int
190+
, noticeInternalQuery :: Maybe B.ByteString
191+
, noticeContext :: Maybe B.ByteString
192+
, noticeSchema :: Maybe B.ByteString
193+
, noticeTable :: Maybe B.ByteString
194+
, noticeColumn :: Maybe B.ByteString
195+
, noticeDataType :: Maybe B.ByteString
196+
, noticeConstraint :: Maybe B.ByteString
197+
, noticeSourceFilename :: Maybe B.ByteString
198+
, noticeSourceLine :: Maybe B.Int
199+
, noticeRoutine :: Maybe B.ByteString
166200
} deriving (Show)
167201

168202
-- TODO
@@ -176,6 +210,4 @@ data ErrorDesc = ErrorDesc
176210
-- * NOTICE bind command can have different formats for parameters and results
177211
-- but we assume that there will be one format for all.
178212
-- * We dont store parameters of connection that may change after startup
179-
-- * We dont store all possible message fields in error|notice responses
180-
-- * We dont parse content of notice response
181213

0 commit comments

Comments
 (0)
0