{-# LINE 1 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
module Database.HDBC.PostgreSQL.PTypeConv where
import Database.HDBC.ColTypes
import Data.Word
colDescForPGAttr :: Word32 -> Int -> String -> Bool -> SqlColDesc
{-# LINE 11 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
colDescForPGAttr atttypeid attlen formattedtype attnotnull =
let
coltype = oidToColType atttypeid
size = if attlen == -1 then maybeExtractFirstParenthesizedNumber formattedtype
else Just attlen
decDigs = if coltype == SqlNumericT then maybeExtractSecondParenthesizedNumber formattedtype
else Nothing
in
SqlColDesc { colType = coltype,
colSize = size,
colOctetLength = Nothing,
colDecDigits = decDigs,
colNullable = Just attnotnull }
where
maybeExtractFirstParenthesizedNumber s = case extractParenthesizedInts s of n:_ -> Just n; _ -> Nothing
maybeExtractSecondParenthesizedNumber s = case extractParenthesizedInts s of _:n2:_ -> Just n2; _ -> Nothing
extractParenthesizedInts :: String -> [Int]
extractParenthesizedInts s =
case takeWhile (/=')') $ dropWhile (/='(') s of
'(':textBetweenParens ->
case map fst $ reads $ "[" ++ textBetweenParens ++ "]" of
l:_ -> l
[] -> []
_ -> []
oidToColDef :: Word32 -> SqlColDesc
{-# LINE 43 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
oidToColDef oid =
SqlColDesc {colType = (oidToColType oid),
colSize = Nothing,
colOctetLength = Nothing,
colDecDigits = Nothing,
colNullable = Nothing}
oidToColType :: Word32 -> SqlTypeId
{-# LINE 51 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
oidToColType oid =
case oid of
18 -> SqlCharT
{-# LINE 54 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
409 -> SqlCharT
{-# LINE 55 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
410 -> SqlCharT
{-# LINE 56 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
411 -> SqlCharT
{-# LINE 57 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
19 -> SqlVarCharT
{-# LINE 58 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1042 -> SqlCharT
{-# LINE 59 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1043 -> SqlVarCharT
{-# LINE 60 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
25 -> SqlVarCharT
{-# LINE 61 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
142 -> SqlVarCharT
{-# LINE 62 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
17 -> SqlVarBinaryT
{-# LINE 63 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
21 -> SqlSmallIntT
{-# LINE 64 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
26 -> SqlIntegerT
{-# LINE 65 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
28 -> SqlIntegerT
{-# LINE 66 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
23 -> SqlBigIntT
{-# LINE 67 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
20 -> SqlBigIntT
{-# LINE 68 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1700 -> SqlNumericT
{-# LINE 69 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
700 -> SqlRealT
{-# LINE 70 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
701 -> SqlFloatT
{-# LINE 71 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1082 -> SqlDateT
{-# LINE 72 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
702 -> SqlTimestampWithZoneT
{-# LINE 73 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1184 -> SqlTimestampWithZoneT
{-# LINE 75 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1114 -> SqlTimestampT
{-# LINE 76 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1296 -> SqlTimestampT
{-# LINE 77 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1083 -> SqlTimeT
{-# LINE 79 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1266 -> SqlTimeWithZoneT
{-# LINE 80 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
704 -> SqlIntervalT SqlIntervalMonthT
{-# LINE 82 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
703 -> SqlIntervalT SqlIntervalMonthT
{-# LINE 83 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
1186 -> SqlIntervalT SqlIntervalMonthT
16 -> SqlBitT
{-# LINE 85 "Database/HDBC/PostgreSQL/PTypeConv.hsc" #-}
x -> SqlUnknownT (show x)