@@ -108,6 +108,7 @@ import Database.PostgreSQL.Simple.Compat
108import Database.PostgreSQL.Simple.Ok
108import Database.PostgreSQL.Simple.Ok
109import Database.PostgreSQL.Simple.Types (Binary(..), Null(..))
109import Database.PostgreSQL.Simple.Types (Binary(..), Null(..))
110import Database.PostgreSQL.Simple.TypeInfo as TypeInfo
110import Database.PostgreSQL.Simple.TypeInfo as TypeInfo
111+import qualified Database.PostgreSQL.Simple.TypeInfo.Static as TypeInfo
111import Database.PostgreSQL.Simple.Time
112import Database.PostgreSQL.Simple.Time
112import Database.PostgreSQL.Simple.Arrays as Arrays
113import Database.PostgreSQL.Simple.Arrays as Arrays
113import qualified Database.PostgreSQL.LibPQ as PQ
114import qualified Database.PostgreSQL.LibPQ as PQ
@@ -234,7 +235,7 @@ instance FromField Null where
235instance FromField Bool where
236instance FromField Bool where
236 fromField f bs
237 fromField f bs
237− | typeOid f /= builtin2oid Bool = returnError Incompatible f ""
238+ | typeOid f /= typoid (TypeInfo.bool) = returnError Incompatible f ""
238 | bs == Nothing = returnError UnexpectedNull f ""
239 | bs == Nothing = returnError UnexpectedNull f ""
239 | bs == Just "t" = pure True
240 | bs == Just "t" = pure True
240 | bs == Just "f" = pure False
241 | bs == Just "f" = pure False
@@ -271,7 +272,7 @@ unBinary :: Binary t -> t
271unBinary (Binary x) = x
272unBinary (Binary x) = x
273instance FromField SB.ByteString where
274instance FromField SB.ByteString where
274− fromField f dat = if typeOid f == builtin2oid ByteA
275+ fromField f dat = if typeOid f == typoid TypeInfo.bytea
275 then unBinary <$> fromField f dat
276 then unBinary <$> fromField f dat
276 else doFromField f okText' (pure . B.copy) dat
277 else doFromField f okText' (pure . B.copy) dat
@@ -306,36 +307,36 @@ instance FromField [Char] where
306 fromField f dat = ST.unpack <$> fromField f dat
307 fromField f dat = ST.unpack <$> fromField f dat
308instance FromField UTCTime where
309instance FromField UTCTime where
309− fromField = ff TimestampTZ "UTCTime" parseUTCTime
310+ fromField = ff TypeInfo.timestamptz "UTCTime" parseUTCTime
311instance FromField ZonedTime where
312instance FromField ZonedTime where
312− fromField = ff TimestampTZ "ZonedTime" parseZonedTime
313+ fromField = ff TypeInfo.timestamptz "ZonedTime" parseZonedTime
314instance FromField LocalTime where
315instance FromField LocalTime where
315− fromField = ff Timestamp "LocalTime" parseLocalTime
316+ fromField = ff TypeInfo.timestamp "LocalTime" parseLocalTime
317instance FromField Day where
318instance FromField Day where
318− fromField = ff Date "Day" parseDay
319+ fromField = ff TypeInfo.date "Day" parseDay
320instance FromField TimeOfDay where
321instance FromField TimeOfDay where
321− fromField = ff Time "TimeOfDay" parseTimeOfDay
322+ fromField = ff TypeInfo.time "TimeOfDay" parseTimeOfDay
323instance FromField UTCTimestamp where
324instance FromField UTCTimestamp where
324− fromField = ff TimestampTZ "UTCTimestamp" parseUTCTimestamp
325+ fromField = ff TypeInfo.timestamptz "UTCTimestamp" parseUTCTimestamp
326instance FromField ZonedTimestamp where
327instance FromField ZonedTimestamp where
327− fromField = ff TimestampTZ "ZonedTimestamp" parseZonedTimestamp
328+ fromField = ff TypeInfo.timestamptz "ZonedTimestamp" parseZonedTimestamp
329instance FromField LocalTimestamp where
330instance FromField LocalTimestamp where
330− fromField = ff Timestamp "LocalTimestamp" parseLocalTimestamp
331+ fromField = ff TypeInfo.timestamp "LocalTimestamp" parseLocalTimestamp
332instance FromField Date where
333instance FromField Date where
333− fromField = ff Date "Date" parseDate
334+ fromField = ff TypeInfo.date "Date" parseDate
335−ff :: BuiltinType -> String -> (B8.ByteString -> Either String a)
336+ff :: TypeInfo -> String -> (B8.ByteString -> Either String a)
336 -> Field -> Maybe B8.ByteString -> Conversion a
337 -> Field -> Maybe B8.ByteString -> Conversion a
337ff pgType hsType parse f mstr =
338ff pgType hsType parse f mstr =
338− if typeOid f /= builtin2oid pgType
339+ if typeOid f /= typoid pgType
339 then err Incompatible ""
340 then err Incompatible ""
340 else case mstr of
341 else case mstr of
341 Nothing -> err UnexpectedNull ""
342 Nothing -> err UnexpectedNull ""
@@ -366,10 +367,10 @@ instance (FromField a, Typeable a) => FromField (Vector a) where
366 Just dat -> do
367 Just dat -> do
367 case parseOnly (fromArray info f) dat of
368 case parseOnly (fromArray info f) dat of
368 Left err -> returnError ConversionFailed f err
369 Left err -> returnError ConversionFailed f err
369− Right conv -> V.fromList <$> conv
370+ Right conv -> V.fromList <$> conv
370 _ -> returnError Incompatible f ""
371 _ -> returnError Incompatible f ""
372−fromArray :: (FromField a)
373+fromArray :: (FromField a)
373 => TypeInfo -> Field -> Parser (Conversion [a])
374 => TypeInfo -> Field -> Parser (Conversion [a])
374fromArray typeInfo f = sequence . (parseIt <$>) <$> array delim
375fromArray typeInfo f = sequence . (parseIt <$>) <$> array delim