@@ -112,7 +112,6 @@ import Control.Concurrent.MVar
112112import Control.Exception
113113 ( Exception, bracket, onException, throw, throwIO, finally )
114114import Control.Monad (foldM)
115−import Control.Monad.Fix (fix)
116115import Data.ByteString (ByteString)
117116import Data.Char(ord)
118117import Data.Int (Int64)
@@ -203,6 +202,7 @@ formatMany conn q@(Query template) qs = do
203202 \([^?]*)$"
204203 [caseless]
205204
205+escapeStringConn :: Connection -> ByteString -> IO (Maybe ByteString)
206206escapeStringConn conn s = withConnection conn $ \c -> do
207207 PQ.escapeStringConn c s
208208
@@ -250,7 +250,7 @@ executeMany conn q qs = do
250250 finishExecute conn q result
251251
252252finishExecute :: Connection -> Query -> PQ.Result -> IO Int64
253−finishExecute conn q result = do
253+finishExecute _conn q result = do
254254 status <- PQ.resultStatus result
255255 case status of
256256 PQ.CommandOk -> do
@@ -352,6 +352,7 @@ data FoldOptions
352352 transactionMode :: !TransactionMode
353353 }
354354
355+defaultFoldOptions :: FoldOptions
355356defaultFoldOptions = FoldOptions {
356357 fetchQuantity = Automatic,
357358 transactionMode = TransactionMode ReadCommitted ReadOnly
@@ -569,11 +570,12 @@ withTransactionLevel lvl
569570
570571-- | Execute an action inside a SQL transaction with a given transaction mode.
571572withTransactionMode :: TransactionMode -> Connection -> IO a -> IO a
572−withTransactionMode mode conn act = do
573− beginMode mode conn
574− r <- act `onException` rollback conn
575− commit conn
576− return r
573+withTransactionMode mode conn act =
574+ mask $ \restore -> do
575+ beginMode mode conn
576+ r <- restore act `onException` rollback conn
577+ commit conn
578+ return r
577579
578580-- | Rollback a transaction.
579581rollback :: Connection -> IO ()
@@ -594,7 +596,8 @@ beginLevel lvl = beginMode defaultTransactionMode { isolationLevel = lvl }
594596-- | Begin a transaction with a given transaction mode
595597beginMode :: TransactionMode -> Connection -> IO ()
596598beginMode mode conn = do
597− execute_ conn $! case mode of
599+ _ <- execute_ conn $!
600+ case mode of
598601 TransactionMode DefaultIsolationLevel ReadWrite ->
599602 "BEGIN"
600603 TransactionMode DefaultIsolationLevel ReadOnly ->