packages feed

mysql-simple 0.3.0.0 → 0.4.0.0

raw patch · 8 files changed

+43/−6 lines, 8 filesdep ~timePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: time

API changes (from Hackage documentation)

+ Database.MySQL.Simple: VaArgs :: a -> VaArgs a
+ Database.MySQL.Simple: newtype VaArgs a
+ Database.MySQL.Simple.Param: instance Database.MySQL.Simple.Param.Param a => Database.MySQL.Simple.Param.Param (Database.MySQL.Simple.Types.VaArgs [a])
+ Database.MySQL.Simple.Types: VaArgs :: a -> VaArgs a
+ Database.MySQL.Simple.Types: instance GHC.Base.Functor Database.MySQL.Simple.Types.VaArgs
+ Database.MySQL.Simple.Types: instance GHC.Classes.Eq a => GHC.Classes.Eq (Database.MySQL.Simple.Types.VaArgs a)
+ Database.MySQL.Simple.Types: instance GHC.Classes.Ord a => GHC.Classes.Ord (Database.MySQL.Simple.Types.VaArgs a)
+ Database.MySQL.Simple.Types: instance GHC.Read.Read a => GHC.Read.Read (Database.MySQL.Simple.Types.VaArgs a)
+ Database.MySQL.Simple.Types: instance GHC.Show.Show a => GHC.Show.Show (Database.MySQL.Simple.Types.VaArgs a)
+ Database.MySQL.Simple.Types: newtype VaArgs a
- Database.MySQL.Simple.Result: ConversionFailed :: String -> String -> String -> ResultError
+ Database.MySQL.Simple.Result: ConversionFailed :: String -> String -> String -> String -> ResultError
- Database.MySQL.Simple.Result: UnexpectedNull :: String -> String -> String -> ResultError
+ Database.MySQL.Simple.Result: UnexpectedNull :: String -> String -> String -> String -> ResultError

Files

ChangeLog.md view
@@ -1,3 +1,8 @@+## 0.4.0.0++* Add type VaArgs for non-parenthesized variable-length list of parameters.+* Include fieldName in other constructors of ResultError.+ ## 0.3.0.0  * New maintainer and GitHub location - with many thanks to Bryan O'Sullivan for all of the past work on this module, and for facilitating the transfer of maintenance responsibility.
Database/MySQL/Simple.hs view
@@ -48,6 +48,7 @@     , Connection     , Query     , In(..)+    , VaArgs(..)     , Binary(..)     , Only(..)     -- ** Exceptions@@ -97,7 +98,7 @@ import Database.MySQL.Simple.QueryParams (QueryParams(..)) import Database.MySQL.Simple.QueryResults (QueryResults(..)) import Database.MySQL.Simple.Result (ResultError(..))-import Database.MySQL.Simple.Types (Binary(..), In(..), Only(..), Query(..))+import Database.MySQL.Simple.Types (Binary(..), In(..), VaArgs(..), Only(..), Query(..)) import Text.Regex.PCRE.Light (compile, caseless, match) import qualified Data.ByteString.Char8 as B import qualified Database.MySQL.Base as Base@@ -617,7 +618,7 @@ --   For instance, you can always extract a MySQL @TINYINT@ column to --   a Haskell 'Int'.  The Haskell 'Float' type can accurately --   represent MySQL integer types of size up to @INT24@, so it is---   considered compatble with those types.+--   considered compatible with those types. -- -- * A numeric compatibility check is based only on the type of a --   column, /not/ on its values. For instance, a MySQL @LONG_LONG@
Database/MySQL/Simple/Param.hs view
@@ -34,7 +34,7 @@ import Data.Time.LocalTime (TimeOfDay) import Data.Typeable (Typeable) import Data.Word (Word, Word8, Word16, Word32, Word64)-import Database.MySQL.Simple.Types (Binary(..), In(..), Null)+import Database.MySQL.Simple.Types (Binary(..), In(..), VaArgs(..), Null) import qualified Blaze.ByteString.Builder.Char.Utf8 as Utf8 import qualified Data.ByteString as SB import qualified Data.ByteString.Lazy as LB@@ -88,6 +88,11 @@         Plain (fromChar '(') :         (intersperse (Plain (fromChar ',')) . map render $ xs) ++         [Plain (fromChar ')')]++instance (Param a) => Param (VaArgs [a]) where+    render (VaArgs []) = Plain $ fromByteString "null"+    render (VaArgs xs) = Many $+        intersperse (Plain (fromChar ',')) . map render $ xs  instance Param (Binary SB.ByteString) where     render (Binary bs) = Plain $ fromByteString "x'" `mappend`
Database/MySQL/Simple/QueryResults.hs view
@@ -23,7 +23,7 @@ import Control.Exception (throw) import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as B-import Database.MySQL.Base.Types (Field(fieldType))+import Database.MySQL.Base.Types (Field(fieldType, fieldName)) import Database.MySQL.Simple.Result (ResultError(..), Result(..)) import Database.MySQL.Simple.Types (Only(..)) @@ -357,6 +357,7 @@     (show (length fs) ++ " values: " ++ show (zip (map fieldType fs)                                                   (map (fmap ellipsis) vs)))     (show n ++ " slots in target type")+    (show (map (B.unpack . fieldName) fs))     "mismatch between number of columns to convert and number in target type"  ellipsis :: ByteString -> ByteString
Database/MySQL/Simple/Result.hs view
@@ -66,11 +66,13 @@                  -- ^ The SQL and Haskell types are not compatible.                  | UnexpectedNull { errSQLType :: String                                   , errHaskellType :: String+                                  , errFieldName :: String                                   , errMessage :: String }                  -- ^ A SQL @NULL@ was encountered when the Haskell                  -- type did not permit it.                  | ConversionFailed { errSQLType :: String                                     , errHaskellType :: String+                                    , errFieldName :: String                                     , errMessage :: String }                  -- ^ The SQL value could not be parsed, or could not                  -- be represented as a valid Haskell value, or an@@ -219,7 +221,8 @@     | mkCompat (fieldType f) `compat` types = cvt bs     | otherwise = incompatible f (typeOf (cvt undefined)) "types incompatible" doConvert f _ cvt _ = throw $ UnexpectedNull (show (fieldType f))-                              (show (typeOf (cvt undefined))) ""+                              (show (typeOf (cvt undefined)))+                              (B8.unpack (fieldName f)) ""  incompatible :: Field -> TypeRep -> String -> a incompatible f r = throw . Incompatible (show (fieldType f))@@ -228,6 +231,7 @@  conversionFailed :: Field -> String -> String -> a conversionFailed f s = throw . ConversionFailed (show (fieldType f)) s+                                 (B8.unpack (fieldName f))  atto :: (Typeable a) => Compat -> Parser a -> Field -> Maybe ByteString -> a atto types p0 f = doConvert f types $ go undefined p0
Database/MySQL/Simple/Types.hs view
@@ -15,6 +15,7 @@       Null(..)     , Only(..)     , In(..)+    , VaArgs(..)     , Binary(..)     , Query(..)     ) where@@ -99,6 +100,18 @@ -- > query c "select * from whatever where id in ?" (Only (In [3,4,5])) newtype In a = In a     deriving (Eq, Ord, Read, Show, Typeable, Functor)++-- | Wrap a list of values for use in a function with variable arguments.+-- Replaces a single \"@?@\" character with a non-parenthesized list of+-- rendered values.+--+-- Example:+--+-- > query conn+-- >   "SELECT * FROM example_table ORDER BY field(f,?)"+-- >   (Only (VaArgs [3,2,1]))+newtype VaArgs a = VaArgs a+  deriving (Eq, Ord, Read, Show, Typeable, Functor)  -- | Wrap a mostly-binary string to be escaped in hexadecimal. newtype Binary a = Binary a
mysql-simple.cabal view
@@ -1,5 +1,5 @@ name:           mysql-simple-version:        0.3.0.0+version:        0.4.0.0 homepage:       https://github.com/paul-rouse/mysql-simple bug-reports:    https://github.com/paul-rouse/mysql-simple/issues synopsis:       A mid-level MySQL client library.@@ -25,6 +25,7 @@ extra-source-files:     ChangeLog.md     README.markdown+    stack.yaml  flag developer   description: operate in developer mode
+ stack.yaml view
@@ -0,0 +1,7 @@+flags:+  mysql-simple:+    developer: false+packages:+- '.'+extra-deps: []+resolver: lts-6.23