From 2fa9760d510defc50e99b31d3aa91e498cbf7618 Mon Sep 17 00:00:00 2001 From: Matt Parsons Date: Wed, 21 Jun 2017 11:09:37 -0600 Subject: [PATCH] release key --- src/Database/Esqueleto/Internal/Sql.hs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Database/Esqueleto/Internal/Sql.hs b/src/Database/Esqueleto/Internal/Sql.hs index fe0c66a..ec4578e 100644 --- a/src/Database/Esqueleto/Internal/Sql.hs +++ b/src/Database/Esqueleto/Internal/Sql.hs @@ -53,10 +53,10 @@ module Database.Esqueleto.Internal.Sql import Control.Arrow ((***), first) import Control.Exception (throw, throwIO) -import Control.Monad (ap, MonadPlus(..), join, void) +import Control.Monad (ap, MonadPlus(..), void) import Control.Monad.IO.Class (MonadIO(..)) import Control.Monad.Trans.Class (lift) -import Control.Monad.Trans.Resource (MonadResource) +import Control.Monad.Trans.Resource (MonadResource, release) import Data.Acquire (with, allocateAcquire, Acquire) import Data.Int (Int64) import Data.List (intersperse) @@ -782,9 +782,11 @@ selectSource :: ( SqlSelect a r , MonadResource m ) => SqlQuery a -> C.Source (SqlPersistT m) r -selectSource query = join . lift $ do - res <- rawSelectSource SELECT query - snd <$> allocateAcquire res +selectSource query = do + res <- lift $ rawSelectSource SELECT query + (key, src) <- lift $ allocateAcquire res + src + lift $ release key -- | Execute an @esqueleto@ @SELECT@ query inside @persistent@'s -- 'SqlPersistT' monad and return a list of rows.