mysql 0.1.1.8 → 0.1.2
raw patch · 9 files changed
+132/−85 lines, 9 filesdep +hspecdep +mysqldep ~basedep ~bytestringsetup-changednew-uploaderPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: hspec, mysql
Dependency ranges changed: base, bytestring
API changes (from Hackage documentation)
- Database.MySQL.Base: connectDatabase :: ConnectInfo -> String
- Database.MySQL.Base: connectHost :: ConnectInfo -> String
- Database.MySQL.Base: connectOptions :: ConnectInfo -> [Option]
- Database.MySQL.Base: connectPassword :: ConnectInfo -> String
- Database.MySQL.Base: connectPath :: ConnectInfo -> FilePath
- Database.MySQL.Base: connectPort :: ConnectInfo -> Word16
- Database.MySQL.Base: connectSSL :: ConnectInfo -> Maybe SSLInfo
- Database.MySQL.Base: connectUser :: ConnectInfo -> String
- Database.MySQL.Base: instance Eq ConnectInfo
- Database.MySQL.Base: instance Eq MySQLError
- Database.MySQL.Base: instance Eq SSLInfo
- Database.MySQL.Base: instance Exception MySQLError
- Database.MySQL.Base: instance Read ConnectInfo
- Database.MySQL.Base: instance Read SSLInfo
- Database.MySQL.Base: instance Show ConnectInfo
- Database.MySQL.Base: instance Show MySQLError
- Database.MySQL.Base: instance Show SSLInfo
- Database.MySQL.Base: instance Typeable ConnectInfo
- Database.MySQL.Base: instance Typeable Connection
- Database.MySQL.Base: instance Typeable MySQLError
- Database.MySQL.Base: instance Typeable Result
- Database.MySQL.Base: instance Typeable Row
- Database.MySQL.Base: instance Typeable SSLInfo
- Database.MySQL.Base: sslCA :: SSLInfo -> FilePath
- Database.MySQL.Base: sslCAPath :: SSLInfo -> FilePath
- Database.MySQL.Base: sslCert :: SSLInfo -> FilePath
- Database.MySQL.Base: sslCiphers :: SSLInfo -> String
- Database.MySQL.Base: sslKey :: SSLInfo -> FilePath
- Database.MySQL.Base.Types: fieldCatalog :: Field -> ByteString
- Database.MySQL.Base.Types: fieldCharSet :: Field -> Word
- Database.MySQL.Base.Types: fieldDB :: Field -> ByteString
- Database.MySQL.Base.Types: fieldDecimals :: Field -> Word
- Database.MySQL.Base.Types: fieldDefault :: Field -> Maybe ByteString
- Database.MySQL.Base.Types: fieldFlags :: Field -> FieldFlags
- Database.MySQL.Base.Types: fieldLength :: Field -> Word
- Database.MySQL.Base.Types: fieldMaxLength :: Field -> Word
- Database.MySQL.Base.Types: fieldName :: Field -> ByteString
- Database.MySQL.Base.Types: fieldOrigName :: Field -> ByteString
- Database.MySQL.Base.Types: fieldOrigTable :: Field -> ByteString
- Database.MySQL.Base.Types: fieldTable :: Field -> ByteString
- Database.MySQL.Base.Types: fieldType :: Field -> Type
- Database.MySQL.Base.Types: instance Enum Protocol
- Database.MySQL.Base.Types: instance Enum Type
- Database.MySQL.Base.Types: instance Eq Field
- Database.MySQL.Base.Types: instance Eq FieldFlags
- Database.MySQL.Base.Types: instance Eq Option
- Database.MySQL.Base.Types: instance Eq Protocol
- Database.MySQL.Base.Types: instance Eq Type
- Database.MySQL.Base.Types: instance Monoid FieldFlags
- Database.MySQL.Base.Types: instance Read Option
- Database.MySQL.Base.Types: instance Read Protocol
- Database.MySQL.Base.Types: instance Show Field
- Database.MySQL.Base.Types: instance Show FieldFlags
- Database.MySQL.Base.Types: instance Show Option
- Database.MySQL.Base.Types: instance Show Protocol
- Database.MySQL.Base.Types: instance Show Type
- Database.MySQL.Base.Types: instance Storable Field
- Database.MySQL.Base.Types: instance Typeable Field
- Database.MySQL.Base.Types: instance Typeable FieldFlags
- Database.MySQL.Base.Types: instance Typeable Option
- Database.MySQL.Base.Types: instance Typeable Protocol
- Database.MySQL.Base.Types: instance Typeable Type
+ Database.MySQL.Base: [connectDatabase] :: ConnectInfo -> String
+ Database.MySQL.Base: [connectHost] :: ConnectInfo -> String
+ Database.MySQL.Base: [connectOptions] :: ConnectInfo -> [Option]
+ Database.MySQL.Base: [connectPassword] :: ConnectInfo -> String
+ Database.MySQL.Base: [connectPath] :: ConnectInfo -> FilePath
+ Database.MySQL.Base: [connectPort] :: ConnectInfo -> Word16
+ Database.MySQL.Base: [connectSSL] :: ConnectInfo -> Maybe SSLInfo
+ Database.MySQL.Base: [connectUser] :: ConnectInfo -> String
+ Database.MySQL.Base: [sslCAPath] :: SSLInfo -> FilePath
+ Database.MySQL.Base: [sslCA] :: SSLInfo -> FilePath
+ Database.MySQL.Base: [sslCert] :: SSLInfo -> FilePath
+ Database.MySQL.Base: [sslCiphers] :: SSLInfo -> String
+ Database.MySQL.Base: [sslKey] :: SSLInfo -> FilePath
+ Database.MySQL.Base: instance GHC.Classes.Eq Database.MySQL.Base.ConnectInfo
+ Database.MySQL.Base: instance GHC.Classes.Eq Database.MySQL.Base.MySQLError
+ Database.MySQL.Base: instance GHC.Classes.Eq Database.MySQL.Base.SSLInfo
+ Database.MySQL.Base: instance GHC.Exception.Exception Database.MySQL.Base.MySQLError
+ Database.MySQL.Base: instance GHC.Read.Read Database.MySQL.Base.ConnectInfo
+ Database.MySQL.Base: instance GHC.Read.Read Database.MySQL.Base.SSLInfo
+ Database.MySQL.Base: instance GHC.Show.Show Database.MySQL.Base.ConnectInfo
+ Database.MySQL.Base: instance GHC.Show.Show Database.MySQL.Base.MySQLError
+ Database.MySQL.Base: instance GHC.Show.Show Database.MySQL.Base.SSLInfo
+ Database.MySQL.Base.Types: [fieldCatalog] :: Field -> ByteString
+ Database.MySQL.Base.Types: [fieldCharSet] :: Field -> Word
+ Database.MySQL.Base.Types: [fieldDB] :: Field -> ByteString
+ Database.MySQL.Base.Types: [fieldDecimals] :: Field -> Word
+ Database.MySQL.Base.Types: [fieldDefault] :: Field -> Maybe ByteString
+ Database.MySQL.Base.Types: [fieldFlags] :: Field -> FieldFlags
+ Database.MySQL.Base.Types: [fieldLength] :: Field -> Word
+ Database.MySQL.Base.Types: [fieldMaxLength] :: Field -> Word
+ Database.MySQL.Base.Types: [fieldName] :: Field -> ByteString
+ Database.MySQL.Base.Types: [fieldOrigName] :: Field -> ByteString
+ Database.MySQL.Base.Types: [fieldOrigTable] :: Field -> ByteString
+ Database.MySQL.Base.Types: [fieldTable] :: Field -> ByteString
+ Database.MySQL.Base.Types: [fieldType] :: Field -> Type
+ Database.MySQL.Base.Types: instance Foreign.Storable.Storable Database.MySQL.Base.Types.Field
+ Database.MySQL.Base.Types: instance GHC.Base.Monoid Database.MySQL.Base.Types.FieldFlags
+ Database.MySQL.Base.Types: instance GHC.Classes.Eq Database.MySQL.Base.Types.Field
+ Database.MySQL.Base.Types: instance GHC.Classes.Eq Database.MySQL.Base.Types.FieldFlags
+ Database.MySQL.Base.Types: instance GHC.Classes.Eq Database.MySQL.Base.Types.Option
+ Database.MySQL.Base.Types: instance GHC.Classes.Eq Database.MySQL.Base.Types.Protocol
+ Database.MySQL.Base.Types: instance GHC.Classes.Eq Database.MySQL.Base.Types.Type
+ Database.MySQL.Base.Types: instance GHC.Enum.Enum Database.MySQL.Base.Types.Protocol
+ Database.MySQL.Base.Types: instance GHC.Enum.Enum Database.MySQL.Base.Types.Type
+ Database.MySQL.Base.Types: instance GHC.Read.Read Database.MySQL.Base.Types.Option
+ Database.MySQL.Base.Types: instance GHC.Read.Read Database.MySQL.Base.Types.Protocol
+ Database.MySQL.Base.Types: instance GHC.Show.Show Database.MySQL.Base.Types.Field
+ Database.MySQL.Base.Types: instance GHC.Show.Show Database.MySQL.Base.Types.FieldFlags
+ Database.MySQL.Base.Types: instance GHC.Show.Show Database.MySQL.Base.Types.Option
+ Database.MySQL.Base.Types: instance GHC.Show.Show Database.MySQL.Base.Types.Protocol
+ Database.MySQL.Base.Types: instance GHC.Show.Show Database.MySQL.Base.Types.Type
Files
- ChangeLog.md +4/−0
- Database/MySQL/Base.hs +1/−1
- Database/MySQL/Base/C.hsc +3/−2
- Database/MySQL/Base/Types.hsc +1/−1
- README.markdown +6/−11
- Setup.hs +67/−0
- Setup.lhs +0/−59
- mysql.cabal +22/−11
- test/main.hs +28/−0
+ ChangeLog.md view
@@ -0,0 +1,4 @@+## 0.1.2++* Fix setup for cabal 1.24+* 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/Base.hs view
@@ -4,7 +4,7 @@ -- Module: Database.MySQL.Base -- Copyright: (c) 2011 MailRank, Inc. -- License: BSD3--- Maintainer: Bryan O'Sullivan <bos@serpentine.com>+-- Maintainer: Paul Rouse <pyr@doynton.org> -- Stability: experimental -- Portability: portable --
Database/MySQL/Base/C.hsc view
@@ -4,7 +4,7 @@ -- Module: Database.MySQL.Base.C -- Copyright: (c) 2011 MailRank, Inc. -- License: BSD3--- Maintainer: Bryan O'Sullivan <bos@serpentine.com>+-- Maintainer: Paul Rouse <pyr@doynton.org> -- Stability: experimental -- Portability: portable --@@ -68,6 +68,7 @@ #include "mysql_signals.h" #include "mysql.h" +import Data.ByteString (useAsCString) import Data.ByteString.Unsafe (unsafeUseAsCString) import Database.MySQL.Base.Types import Foreign.C.String (CString, withCString)@@ -93,7 +94,7 @@ NamedPipe -> go (#const MYSQL_OPT_NAMED_PIPE) nullPtr InitCommand cmd ->- unsafeUseAsCString cmd $ go (#const MYSQL_INIT_COMMAND)+ useAsCString cmd $ go (#const MYSQL_INIT_COMMAND) ReadDefaultFile path -> withCString path $ go (#const MYSQL_READ_DEFAULT_FILE) ReadDefaultGroup group ->
Database/MySQL/Base/Types.hsc view
@@ -4,7 +4,7 @@ -- Module: Database.MySQL.Base.C -- Copyright: (c) 2011 MailRank, Inc. -- License: BSD3--- Maintainer: Bryan O'Sullivan <bos@serpentine.com>+-- Maintainer: Paul Rouse <pyr@doynton.org> -- Stability: experimental -- Portability: portable --
README.markdown view
@@ -30,19 +30,14 @@ and other improvements. Please report bugs via the-[github issue tracker](http://github.com/bos/mysql/issues).--Master [git repository](http://github.com/bos/mysql):--* `git clone git://github.com/bos/mysql.git`--There's also a [Mercurial mirror](http://bitbucket.org/bos/mysql):+[github issue tracker](http://github.com/paul-rouse/mysql/issues). -* `hg clone http://bitbucket.org/bos/mysql`+Master [git repository](http://github.com/paul-rouse/mysql): -(You can create and contribute changes using either git or Mercurial.)+* `git clone git://github.com/paul-rouse/mysql.git` # Authors -This library is written and maintained by Bryan O'Sullivan,-<bos@serpentine.com>.+This library was written by Bryan O'Sullivan, <bos@serpentine.com>,+to whom all of the credit is due.+It is now being maintained by Paul Rouse, <pyr@doynton.org>.
+ Setup.hs view
@@ -0,0 +1,67 @@++{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE CPP #-}+{- OPTIONS_GHC -Wall #-}++#ifndef MIN_VERSION_Cabal+#define MIN_VERSION_Cabal(x,y,z) 0 +#endif++import Control.Monad (liftM2, mplus)+import Data.List (isPrefixOf)+import Distribution.PackageDescription+import Distribution.Simple+import Distribution.Simple.LocalBuildInfo+import Distribution.Simple.Program+import Distribution.Verbosity++-- A Cabal 1.16 vs 1.18 compatibility hack, as in 1.18+-- findProgramLocation has a new (unused in this case) parameter.+-- ConstOrId adds this parameter when types say it is mandatory.+class ConstOrId a b where+ constOrId :: a -> b++instance ConstOrId a a where+ constOrId = id++instance ConstOrId a (b -> a) where+ constOrId = const+++main = defaultMainWithHooks simpleUserHooks {+ hookedPrograms = [mysqlConfigProgram],++ confHook = \pkg flags -> do+ lbi <- confHook simpleUserHooks pkg flags+ bi <- mysqlBuildInfo lbi+ return lbi {+ localPkgDescr = updatePackageDescription (Just bi, []) (localPkgDescr lbi)+ }+}++mysqlConfigProgram = (simpleProgram "mysql_config") {+ programFindLocation = \verbosity -> constOrId $ liftM2 mplus+#if MIN_VERSION_Cabal(1,24,0)+ (findProgramOnSearchPath verbosity [ProgramSearchPathDefault] "mysql_config")+ (findProgramOnSearchPath verbosity [ProgramSearchPathDefault] "mysql_config5")+#else+ (findProgramLocation verbosity "mysql_config")+ (findProgramLocation verbosity "mysql_config5")+#endif+ }++mysqlBuildInfo :: LocalBuildInfo -> IO BuildInfo+mysqlBuildInfo lbi = do+ let mysqlConfig = fmap words . rawSystemProgramStdoutConf normal+ mysqlConfigProgram (withPrograms lbi)++ include <- mysqlConfig ["--include"]+ libs <- mysqlConfig ["--libs"]++ return emptyBuildInfo {+ extraLibDirs = map (drop 2) . filter ("-L" `isPrefixOf`) $ libs+ , extraLibs = map (drop 2) . filter ("-l" `isPrefixOf`) .+ filter (/= "-lmygcc") $ libs+ , includeDirs = map (drop 2) include+ }
− Setup.lhs
@@ -1,59 +0,0 @@-#!/usr/bin/env runhaskell--\begin{code}-{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}-{- OPTIONS_GHC -Wall #-}--import Control.Monad (liftM2, mplus)-import Data.List (isPrefixOf)-import Distribution.PackageDescription-import Distribution.Simple-import Distribution.Simple.LocalBuildInfo-import Distribution.Simple.Program-import Distribution.Verbosity---- A Cabal 1.16 vs 1.18 compatibility hack, as in 1.18--- findProgramLocation has a new (unused in this case) parameter.--- ConstOrId adds this parameter when types say it is mandatory.-class ConstOrId a b where- constOrId :: a -> b--instance ConstOrId a a where- constOrId = id--instance ConstOrId a (b -> a) where- constOrId = const---main = defaultMainWithHooks simpleUserHooks {- hookedPrograms = [mysqlConfigProgram],-- confHook = \pkg flags -> do- lbi <- confHook simpleUserHooks pkg flags- bi <- mysqlBuildInfo lbi- return lbi {- localPkgDescr = updatePackageDescription (Just bi, []) (localPkgDescr lbi)- }-}--mysqlConfigProgram = (simpleProgram "mysql_config") {- programFindLocation = \verbosity -> constOrId $ liftM2 mplus- (findProgramLocation verbosity "mysql_config")- (findProgramLocation verbosity "mysql_config5")- }--mysqlBuildInfo :: LocalBuildInfo -> IO BuildInfo-mysqlBuildInfo lbi = do- let mysqlConfig = fmap words . rawSystemProgramStdoutConf normal- mysqlConfigProgram (withPrograms lbi)-- include <- mysqlConfig ["--include"]- libs <- mysqlConfig ["--libs"]-- return emptyBuildInfo {- extraLibDirs = map (drop 2) . filter ("-L" `isPrefixOf`) $ libs- , extraLibs = map (drop 2) . filter ("-l" `isPrefixOf`) .- filter (/= "-lmygcc") $ libs- , includeDirs = map (drop 2) include- }-\end{code}
mysql.cabal view
@@ -1,9 +1,9 @@ name: mysql-version: 0.1.1.8-homepage: https://github.com/bos/mysql-bug-reports: https://github.com/bos/mysql/issues+version: 0.1.2+homepage: https://github.com/paul-rouse/mysql+bug-reports: https://github.com/paul-rouse/mysql/issues synopsis: A low-level MySQL client library.-description: +description: A low-level client library for the MySQL database, implemented as bindings to the C @mysqlclient@ API. .@@ -17,16 +17,21 @@ license: BSD3 license-file: LICENSE author: Bryan O'Sullivan <bos@serpentine.com>-maintainer: Bryan O'Sullivan <bos@serpentine.com>+maintainer: Paul Rouse <pyr@doynton.org> copyright: Copyright 2011 MailRank, Inc. Copyright 2013 Bryan O'Sullivan <bos@serpentine.com> category: Database build-type: Custom-cabal-version: >= 1.6+cabal-version: >= 1.8 extra-source-files: include/mysql_signals.h+ ChangeLog.md README.markdown ++custom-setup+ setup-depends: base, Cabal+ flag developer description: operate in developer mode default: False@@ -55,10 +60,16 @@ ghc-options: -Werror cpp-options: -DASSERTS -source-repository head- type: git- location: http://github.com/bos/mysql+test-suite test+ type: exitcode-stdio-1.0+ main-is: main.hs+ hs-source-dirs: test+ ghc-options: -Wall+ build-depends: base >= 4 && < 5+ , bytestring+ , hspec+ , mysql source-repository head- type: mercurial- location: http://bitbucket.org/bos/mysql+ type: git+ location: http://github.com/paul-rouse/mysql
+ test/main.hs view
@@ -0,0 +1,28 @@+{-# LANGUAGE OverloadedStrings #-}++import Control.Exception (bracket)+import Database.MySQL.Base (ConnectInfo (..), defaultConnectInfo,+ connect, close,+ query, useResult, fetchRow)+import Test.Hspec++-- This is how to connect to our test database+testConn :: ConnectInfo+testConn = defaultConnectInfo {+ connectHost = "127.0.0.1",+ connectUser = "test",+ connectDatabase = "test"+ }++-- Only the most cursory test is done at the moment, simply showing that+-- things hang together sufficiently well that we can talk to the database+-- server.+--+main :: IO ()+main = bracket (connect testConn) close $ \conn -> hspec $ do+ describe "Database" $ do+ it "seems to be connected" $ do+ query conn "select 1 + 1"+ result <- useResult conn+ row <- fetchRow result+ row `shouldBe` [Just "2"]