mysql-haskell 0.8.2.0 → 0.8.3.0
raw patch · 9 files changed
+27/−28 lines, 9 filesdep ~tastyPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: tasty
API changes (from Hackage documentation)
- Database.MySQL.Connection: connectWithBufferSize :: HostName -> PortNumber -> Int -> IO TCPConnection
- Database.MySQL.Connection: type TCPConnection = Connection (Socket, SockAddr)
- Database.MySQL.Connection: write :: Binary a => Connection x -> a -> IO ()
Files
- ChangeLog.md +7/−1
- Database/MySQL/Base.hs +1/−1
- Database/MySQL/BinLog.hs +1/−2
- Database/MySQL/BinLogProtocol/BinLogValue.hs +1/−1
- Database/MySQL/Connection.hs +4/−13
- Database/MySQL/Protocol/Auth.hs +0/−1
- Database/MySQL/Protocol/Packet.hs +0/−1
- Database/MySQL/TLS.hs +12/−7
- mysql-haskell.cabal +1/−1
ChangeLog.md view
@@ -1,6 +1,12 @@ # Revision history for mysql-haskell -## 0.8.2.0 -- 2016-11-09+## 0.8.3.0 -- 2017-10-09++* Remove unnecessary exports from `Database.MySQL.Base`.+* Reuse TCP connection when using TLS.+* Clean up some compiler warnings.++## 0.8.2.0 -- 2017-10-09 Courtesy of naushadh, `mysql-haskell` will be on stackage again.
Database/MySQL/Base.hs view
@@ -86,7 +86,7 @@ import Database.MySQL.Protocol.Packet import Database.MySQL.Query-import System.IO.Streams (InputStream, OutputStream)+import System.IO.Streams (InputStream) import qualified System.IO.Streams as Stream import qualified Data.Vector as V
Database/MySQL/BinLog.hs view
@@ -44,8 +44,7 @@ import Database.MySQL.BinLogProtocol.BinLogValue import Database.MySQL.Connection import GHC.Generics (Generic)-import System.IO.Streams (InputStream,- OutputStream)+import System.IO.Streams (InputStream) import qualified System.IO.Streams as Stream type SlaveID = Word32
Database/MySQL/BinLogProtocol/BinLogValue.hs view
@@ -16,7 +16,7 @@ import Control.Applicative import Data.Binary.Get import Data.Binary.IEEE754-import Data.Binary.Put+import Data.Binary.Put () import Data.Bits import Data.ByteString (ByteString) import qualified Data.ByteString as B
Database/MySQL/Connection.hs view
@@ -33,10 +33,8 @@ import Database.MySQL.Protocol.Command import Database.MySQL.Protocol.Packet import Network.Socket (HostName, PortNumber)-import qualified Network.Socket as N-import System.IO.Streams (InputStream, OutputStream)+import System.IO.Streams (InputStream) import qualified System.IO.Streams as Stream-import qualified System.IO.Streams.Binary as Binary import qualified System.IO.Streams.TCP as TCP import qualified Data.Connection as TCP @@ -126,6 +124,9 @@ return (greet, conn) else TCP.close c >> decodeFromPacket q >>= throwIO . ERRException + connectWithBufferSize h p bs = TCP.connectSocket h p >>= TCP.socketToConnection bs+ write c a = TCP.send c $ Binary.runPut . Binary.put $ a+ mkAuth :: ByteString -> ByteString -> ByteString -> Word8 -> Greeting -> Auth mkAuth db user pass charset greet = let salt = greetingSalt1 greet `B.append` greetingSalt2 greet@@ -254,13 +255,3 @@ data UnexpectedPacket = UnexpectedPacket Packet deriving (Typeable, Show) instance Exception UnexpectedPacket ------------------------------------------------------------------------------------ TCP shims--type TCPConnection = TCP.Connection (N.Socket, N.SockAddr)--connectWithBufferSize :: N.HostName -> N.PortNumber -> Int -> IO TCPConnection-connectWithBufferSize h p bs = TCP.connectSocket h p >>= TCP.socketToConnection bs--write :: Binary.Binary a => TCP.Connection x -> a -> IO ()-write c a = TCP.send c $ Binary.runPut . Binary.put $ a
Database/MySQL/Protocol/Auth.hs view
@@ -25,7 +25,6 @@ import qualified Data.ByteString as B import Data.ByteString.Char8 as BC import Data.Bits-import Data.Word import Database.MySQL.Protocol.Packet --------------------------------------------------------------------------------
Database/MySQL/Protocol/Packet.hs view
@@ -24,7 +24,6 @@ import qualified Data.ByteString as B import Data.ByteString.Char8 as BC import qualified Data.ByteString.Lazy as L-import qualified Data.ByteString.Lazy.Internal as L import Data.Int.Int24 import Data.Int import Data.Word
Database/MySQL/TLS.hs view
@@ -18,16 +18,15 @@ ) where import Control.Exception (bracketOnError, throwIO)-import Control.Monad+import qualified Data.Binary as Binary+import qualified Data.Binary.Put as Binary+import qualified Data.Connection as Conn import Data.IORef (newIORef) import Data.TLSSetting import Database.MySQL.Connection hiding (connect, connectDetail) import Database.MySQL.Protocol.Auth import Database.MySQL.Protocol.Packet-import qualified Network.Socket as N import qualified Network.TLS as TLS-import qualified System.IO.Streams as Stream-import qualified System.IO.Streams.Binary as Binary import qualified System.IO.Streams.TCP as TCP import qualified Data.Connection as TCP import qualified System.IO.Streams.TLS as TLS@@ -42,7 +41,7 @@ connectDetail :: ConnectInfo -> (TLS.ClientParams, String) -> IO (Greeting, MySQLConn) connectDetail (ConnectInfo host port db user pass charset) (cparams, subName) = bracketOnError (connectWithBufferSize host port bUFSIZE)- (TCP.close) $ \ (c) -> do+ (TCP.close) $ \ c -> do let is = TCP.source c is' <- decodeInputStream is p <- readPacket is'@@ -53,9 +52,12 @@ TLS.clientUseServerNameIndication = False , TLS.clientServerIdentification = (subName, "") }- let connect' = TLS.connect cparams' Nothing host port+ let (sock, sockAddr) = Conn.connExtraInfo c write c (encodeToPacket 1 $ sslRequest charset)- bracketOnError connect' TCP.close $ \ tc -> do+ bracketOnError (TLS.contextNew sock cparams')+ ( \ ctx -> TLS.bye ctx >> TCP.close c ) $ \ ctx -> do+ TLS.handshake ctx+ tc <- TLS.tLsToConnection (ctx, sockAddr) let tlsIs = TCP.source tc tlsIs' <- decodeInputStream tlsIs let auth = mkAuth db user pass charset greet@@ -68,3 +70,6 @@ return (greet, conn) else TCP.close c >> decodeFromPacket q >>= throwIO . ERRException else error "Database.MySQL.TLS: server doesn't support TLS connection"+ where+ connectWithBufferSize h p bs = TCP.connectSocket h p >>= TCP.socketToConnection bs+ write c a = TCP.send c $ Binary.runPut . Binary.put $ a
mysql-haskell.cabal view
@@ -1,5 +1,5 @@ name: mysql-haskell-version: 0.8.2.0+version: 0.8.3.0 synopsis: pure haskell MySQL driver description: pure haskell MySQL driver license: BSD3