packages feed

HDBC 2.0.1 → 2.1.0

raw patch · 2 files changed

+41/−17 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

Database/HDBC/SqlValue.hs view
@@ -22,6 +22,7 @@ import Data.Ratio import Control.Monad.Error import Data.Convertible+import Data.Fixed  quickError :: (Typeable a, Convertible SqlValue a) => SqlValue -> ConvertResult a quickError sv = convError "incompatible types" sv@@ -258,18 +259,22 @@     safeConvert (SqlLocalDate x) =          return . formatTime defaultTimeLocale (iso8601DateFormat Nothing) $ x     safeConvert (SqlLocalTimeOfDay x) = -        return . formatTime defaultTimeLocale "%T" $ x+        return . formatTime defaultTimeLocale "%T%Q" $ x     safeConvert (SqlZonedLocalTimeOfDay tod tz) = -        return $ formatTime defaultTimeLocale "%T " tod +++        return $ formatTime defaultTimeLocale "%T%Q " tod ++                  formatTime defaultTimeLocale "%z" tz     safeConvert (SqlLocalTime x) = -        return . formatTime defaultTimeLocale (iso8601DateFormat (Just "%T")) $ x+        return . formatTime defaultTimeLocale (iso8601DateFormat (Just "%T%Q")) $ x     safeConvert (SqlZonedTime x) = -        return . formatTime defaultTimeLocale (iso8601DateFormat (Just "%T %z")) $ x+        return . formatTime defaultTimeLocale (iso8601DateFormat (Just "%T%Q %z")) $ x     safeConvert (SqlUTCTime x) = -        return . formatTime defaultTimeLocale (iso8601DateFormat (Just "%T")) $ x-    safeConvert (SqlDiffTime x) = return $ show ((truncate x)::Integer)-    safeConvert (SqlPOSIXTime x) = return $ show ((truncate x)::Integer)+        return . formatTime defaultTimeLocale (iso8601DateFormat (Just "%T%Q")) $ x+    safeConvert (SqlDiffTime x) = return $ showFixed True fixedval+            where fixedval :: Pico+                  fixedval = fromRational . toRational $ x+    safeConvert (SqlPOSIXTime x) = return $ showFixed True fixedval+            where fixedval :: Pico+                  fixedval = fromRational . toRational $ x     safeConvert (SqlEpochTime x) = return . show $ x     safeConvert (SqlTimeDiff x) = return . show $ x     safeConvert y@(SqlNull) = quickError y@@ -629,7 +634,7 @@ instance Convertible TimeOfDay SqlValue where     safeConvert = return . SqlLocalTimeOfDay instance Convertible SqlValue TimeOfDay where-    safeConvert (SqlString x) = parseTime' "%T" x+    safeConvert (SqlString x) = parseTime' "%T%Q" x     safeConvert (SqlByteString x) = safeConvert (SqlString (BUTF8.toString x))     safeConvert (SqlInt32 x) = return . timeToTimeOfDay . fromIntegral $ x     safeConvert (SqlInt64 x) = return . timeToTimeOfDay . fromIntegral $ x@@ -657,8 +662,8 @@     safeConvert (tod, tz) = return (SqlZonedLocalTimeOfDay tod tz) instance Convertible SqlValue (TimeOfDay, TimeZone) where     safeConvert (SqlString x) = -        do tod <- parseTime' "%T %z" x-           tz <- case parseTime defaultTimeLocale "%T %z" x of+        do tod <- parseTime' "%T%Q %z" x+           tz <- case parseTime defaultTimeLocale "%T%Q %z" x of                       Nothing -> convError "Couldn't extract timezone in" (SqlString x)                       Just y -> Right y            return (tod, tz)@@ -688,7 +693,7 @@ instance Convertible LocalTime SqlValue where     safeConvert = return . SqlLocalTime instance Convertible SqlValue LocalTime where-    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T")) x+    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T%Q")) x     safeConvert (SqlByteString x) = safeConvert (SqlString (BUTF8.toString x))     safeConvert y@(SqlInt32 _) = quickError y     safeConvert y@(SqlInt64 _) = quickError y@@ -714,7 +719,7 @@ instance Convertible ZonedTime SqlValue where     safeConvert = return . SqlZonedTime instance Convertible SqlValue ZonedTime where-    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T %z")) x+    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T%Q %z")) x     safeConvert (SqlByteString x) = safeConvert (SqlString (BUTF8.toString x))     safeConvert (SqlInt32 x) = safeConvert (SqlInteger (fromIntegral x))     safeConvert (SqlInt64 x) = safeConvert (SqlInteger (fromIntegral x))@@ -740,7 +745,7 @@ instance Convertible UTCTime SqlValue where     safeConvert = return . SqlUTCTime instance Convertible SqlValue UTCTime where-    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T")) x+    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T%Q")) x     safeConvert (SqlByteString x) = safeConvert (SqlString (BUTF8.toString x))     safeConvert y@(SqlInt32 _) = safeConvert y >>= return . posixSecondsToUTCTime     safeConvert y@(SqlInt64 _) = safeConvert y >>= return . posixSecondsToUTCTime@@ -763,11 +768,28 @@     safeConvert y@(SqlTimeDiff _) = convError "incompatible types (did you mean SqlPOSIXTime?)" y     safeConvert y@SqlNull = quickError y +stringToPico :: String -> ConvertResult Pico+stringToPico s =+    let (base, fracwithdot) = span (/= '.') s+        shortfrac = drop 1 fracwithdot -- strip of dot; don't use tail because it may be empty+        frac = take 12 (rpad 12 '0' shortfrac)+        rpad :: Int -> a -> [a] -> [a]+                -- next line lifted from Data.Time+        rpad n c xs = xs ++ replicate (n - length xs) c+        mkPico :: Integer -> Integer -> Pico+                -- next line also lifted from Data.Time+        mkPico i f = fromInteger i + fromRational (f % 1000000000000)+    in do parsedBase <- read' base+          parsedFrac <- read' frac+          return (mkPico parsedBase parsedFrac)+ instance Convertible NominalDiffTime SqlValue where     safeConvert = return . SqlDiffTime instance Convertible SqlValue NominalDiffTime where-    safeConvert (SqlString x) = read' x >>= return . fromInteger-    safeConvert (SqlByteString x) = read' (BUTF8.toString x) >>= return . fromInteger+    safeConvert (SqlString x) = stringToPico x >>= +                                return . realToFrac+    safeConvert (SqlByteString x) = (stringToPico (BUTF8.toString x)) >>=+                                    return . realToFrac     safeConvert (SqlInt32 x) = return . fromIntegral $ x     safeConvert (SqlInt64 x) = return . fromIntegral $ x     safeConvert (SqlWord32 x) = return . fromIntegral $ x@@ -821,7 +843,9 @@ instance Convertible ST.TimeDiff SqlValue where     safeConvert x = safeConvert x >>= return . SqlDiffTime instance Convertible SqlValue ST.TimeDiff where-    safeConvert (SqlString x) = ((read' x)::ConvertResult Integer) >>= safeConvert+    safeConvert y@(SqlString _) = +        do r <- safeConvert y+           safeConvert (SqlDiffTime r)     safeConvert (SqlByteString x) = safeConvert . SqlString . BUTF8.toString $ x     safeConvert (SqlInt32 x) = secs2td (fromIntegral x)     safeConvert (SqlInt64 x) = secs2td (fromIntegral x)
HDBC.cabal view
@@ -1,5 +1,5 @@ Name: HDBC-Version: 2.0.1+Version: 2.1.0 License: LGPL Maintainer: John Goerzen <jgoerzen@complete.org> Author: John Goerzen