@@ -242,7 +242,7 @@ instance FromField Null where
243instance FromField Bool where
243instance FromField Bool where
244 fromField f bs
244 fromField f bs
245− | typeOid f /= typoid (TI.bool) = returnError Incompatible f ""
245+ | typeOid f /= $(inlineTypoid TI.bool) = returnError Incompatible f ""
246 | bs == Nothing = returnError UnexpectedNull f ""
246 | bs == Nothing = returnError UnexpectedNull f ""
247 | bs == Just "t" = pure True
247 | bs == Just "t" = pure True
248 | bs == Just "f" = pure False
248 | bs == Just "f" = pure False
@@ -251,7 +251,7 @@ instance FromField Bool where
251-- | \"char\"
251-- | \"char\"
252instance FromField Char where
252instance FromField Char where
253 fromField f bs =
253 fromField f bs =
254− if typeOid f /= typoid (TI.char)
254+ if typeOid f /= $(inlineTypoid TI.char)
255 then returnError Incompatible f ""
255 then returnError Incompatible f ""
256 else case bs of
256 else case bs of
257 Nothing -> returnError UnexpectedNull f ""
257 Nothing -> returnError UnexpectedNull f ""
@@ -305,13 +305,13 @@ unBinary (Binary x) = x
306-- | bytea, name, text, \"char\", bpchar, varchar, unknown
306-- | bytea, name, text, \"char\", bpchar, varchar, unknown
307instance FromField SB.ByteString where
307instance FromField SB.ByteString where
308− fromField f dat = if typeOid f == typoid TI.bytea
308+ fromField f dat = if typeOid f == $(inlineTypoid TI.bytea)
309 then unBinary <$> fromField f dat
309 then unBinary <$> fromField f dat
310 else doFromField f okText' (pure . B.copy) dat
310 else doFromField f okText' (pure . B.copy) dat
313instance FromField PQ.Oid where
313instance FromField PQ.Oid where
314− fromField f dat = PQ.Oid <$> atto $(mkCompat TI.oid) decimal f dat
314+ fromField f dat = PQ.Oid <$> atto (== $(inlineTypoid TI.oid)) decimal f dat
316-- | bytea, name, text, \"char\", bpchar, varchar, unknown
316-- | bytea, name, text, \"char\", bpchar, varchar, unknown
317instance FromField LB.ByteString where
317instance FromField LB.ByteString where
@@ -348,44 +348,44 @@ instance FromField [Char] where
349-- | timestamptz
349-- | timestamptz
350instance FromField UTCTime where
350instance FromField UTCTime where
351− fromField = ff TI.timestamptz "UTCTime" parseUTCTime
351+ fromField = ff $(inlineTypoid TI.timestamptz) "UTCTime" parseUTCTime
353-- | timestamptz
353-- | timestamptz
354instance FromField ZonedTime where
354instance FromField ZonedTime where
355− fromField = ff TI.timestamptz "ZonedTime" parseZonedTime
355+ fromField = ff $(inlineTypoid TI.timestamptz) "ZonedTime" parseZonedTime
357-- | timestamp
357-- | timestamp
358instance FromField LocalTime where
358instance FromField LocalTime where
359− fromField = ff TI.timestamp "LocalTime" parseLocalTime
359+ fromField = ff $(inlineTypoid TI.timestamp) "LocalTime" parseLocalTime
362instance FromField Day where
362instance FromField Day where
363− fromField = ff TI.date "Day" parseDay
363+ fromField = ff $(inlineTypoid TI.date) "Day" parseDay
366instance FromField TimeOfDay where
366instance FromField TimeOfDay where
367− fromField = ff TI.time "TimeOfDay" parseTimeOfDay
367+ fromField = ff $(inlineTypoid TI.time) "TimeOfDay" parseTimeOfDay
369-- | timestamptz
369-- | timestamptz
370instance FromField UTCTimestamp where
370instance FromField UTCTimestamp where
371− fromField = ff TI.timestamptz "UTCTimestamp" parseUTCTimestamp
371+ fromField = ff $(inlineTypoid TI.timestamptz) "UTCTimestamp" parseUTCTimestamp
373-- | timestamptz
373-- | timestamptz
374instance FromField ZonedTimestamp where
374instance FromField ZonedTimestamp where
375− fromField = ff TI.timestamptz "ZonedTimestamp" parseZonedTimestamp
375+ fromField = ff $(inlineTypoid TI.timestamptz) "ZonedTimestamp" parseZonedTimestamp
377-- | timestamp
377-- | timestamp
378instance FromField LocalTimestamp where
378instance FromField LocalTimestamp where
379− fromField = ff TI.timestamp "LocalTimestamp" parseLocalTimestamp
379+ fromField = ff $(inlineTypoid TI.timestamp) "LocalTimestamp" parseLocalTimestamp
382instance FromField Date where
382instance FromField Date where
383− fromField = ff TI.date "Date" parseDate
383+ fromField = ff $(inlineTypoid TI.date) "Date" parseDate
385−ff :: TypeInfo -> String -> (B8.ByteString -> Either String a)
385+ff :: PQ.Oid -> String -> (B8.ByteString -> Either String a)
386 -> Field -> Maybe B8.ByteString -> Conversion a
386 -> Field -> Maybe B8.ByteString -> Conversion a
387−ff pgType hsType parse f mstr =
387+ff compatOid hsType parse f mstr =
388− if typeOid f /= typoid pgType
388+ if typeOid f /= compatOid
389 then err Incompatible ""
389 then err Incompatible ""
390 else case mstr of
390 else case mstr of
391 Nothing -> err UnexpectedNull ""
391 Nothing -> err UnexpectedNull ""
@@ -440,8 +440,8 @@ okText = $( mkCompats [ TI.name, TI.text, TI.char,
440 TI.bpchar, TI.varchar ] )
440 TI.bpchar, TI.varchar ] )
441okText' = $( mkCompats [ TI.name, TI.text, TI.char,
441okText' = $( mkCompats [ TI.name, TI.text, TI.char,
442 TI.bpchar, TI.varchar, TI.unknown ] )
442 TI.bpchar, TI.varchar, TI.unknown ] )
443−okBinary = $( mkCompat TI.bytea )
443+okBinary = (== $( inlineTypoid TI.bytea ))
444−ok16 = $( mkCompat TI.int2 )
444+ok16 = (== $( inlineTypoid TI.int2 ))
445ok32 = $( mkCompats [TI.int2,TI.int4] )
445ok32 = $( mkCompats [TI.int2,TI.int4] )
446ok64 = $( mkCompats [TI.int2,TI.int4,TI.int8] )
446ok64 = $( mkCompats [TI.int2,TI.int4,TI.int8] )
447#if WORD_SIZE_IN_BITS < 64
447#if WORD_SIZE_IN_BITS < 64