git.iko.soy/typeable/postgresql-simple
on master help sign in
Use Timestamp aliases for error reporting

Broken by commit 0636c4aaaacca20fba1728315f2ab53031602a98

commite178c6f85633790455e779ec824cf6da603c7364 authorLeon P Smith <leon@melding-monads.com> dateMon 25 Feb 2013, 22:50 (14 years ago) parent4194297
1 file changed+22−15
src/Database/PostgreSQL/Simple/FromField.hs+22−15
src/Database/PostgreSQL/Simple/FromField.hs+22−15
@@ -301,43 +301,50 @@ instance FromField [Char] where
301301 fromField f dat = ST.unpack <$> fromField f dat
302302
303303instance FromField UTCTime where
304− fromField = ff TimestampTZ parseUTCTime
304+ fromField = ff TimestampTZ "UTCTime" parseUTCTime
305305
306306instance FromField ZonedTime where
307− fromField = ff TimestampTZ parseZonedTime
307+ fromField = ff TimestampTZ "ZonedTime" parseZonedTime
308308
309309instance FromField LocalTime where
310− fromField = ff Timestamp parseLocalTime
310+ fromField = ff Timestamp "LocalTime" parseLocalTime
311311
312312instance FromField Day where
313− fromField = ff Date parseDay
313+ fromField = ff Date "Day" parseDay
314314
315315instance FromField TimeOfDay where
316− fromField = ff Time parseTimeOfDay
316+ fromField = ff Time "TimeOfDay" parseTimeOfDay
317317
318318instance FromField UTCTimestamp where
319− fromField = ff TimestampTZ parseUTCTimestamp
319+ fromField = ff TimestampTZ "UTCTimestamp" parseUTCTimestamp
320320
321321instance FromField ZonedTimestamp where
322− fromField = ff TimestampTZ parseZonedTimestamp
322+ fromField = ff TimestampTZ "ZonedTimestamp" parseZonedTimestamp
323323
324324instance FromField LocalTimestamp where
325− fromField = ff Timestamp parseLocalTimestamp
325+ fromField = ff Timestamp "LocalTimestamp" parseLocalTimestamp
326326
327327instance FromField Date where
328− fromField = ff Date parseDate
328+ fromField = ff Date "Date" parseDate
329329
330−ff :: Typeable a
331− => BuiltinType -> (B8.ByteString -> Either String a)
330+ff :: BuiltinType -> String -> (B8.ByteString -> Either String a)
332331 -> Field -> Maybe B8.ByteString -> Conversion a
333−ff pgType parse f mstr =
332+ff pgType hsType parse f mstr =
334333 if typeOid f /= builtin2oid pgType
335− then returnError Incompatible f ""
334+ then err Incompatible ""
336335 else case mstr of
337− Nothing -> returnError UnexpectedNull f ""
336+ Nothing -> err UnexpectedNull ""
338337 Just str -> case parse str of
339− Left msg -> returnError ConversionFailed f msg
338+ Left msg -> err ConversionFailed msg
340339 Right val -> return val
340+ where
341+ err errC msg = do
342+ typnam <- typename f
343+ left $ errC (B8.unpack typnam)
344+ (tableOid f)
345+ (maybe "" B8.unpack (name f))
346+ hsType
347+ msg
341348{-# INLINE ff #-}
342349
343350instance (FromField a, FromField b) => FromField (Either a b) where