@@ -133,10 +133,10 @@ import Data.ByteString (ByteString)
133import Data.Int (Int64)
133import Data.Int (Int64)
134import qualified Data.IntMap as IntMap
134import qualified Data.IntMap as IntMap
135import Data.List (intersperse)
135import Data.List (intersperse)
136−import Data.Monoid (mappend, mconcat)
136+import Data.Monoid (mconcat)
137import Data.Typeable (Typeable)
137import Data.Typeable (Typeable)
138import Database.PostgreSQL.Simple.BuiltinTypes ( oid2typname )
138import Database.PostgreSQL.Simple.BuiltinTypes ( oid2typname )
139−import Database.PostgreSQL.Simple.Compat ( mask )
139+import Database.PostgreSQL.Simple.Compat ( mask, (<>) )
140import Database.PostgreSQL.Simple.FromField (ResultError(..))
140import Database.PostgreSQL.Simple.FromField (ResultError(..))
141import Database.PostgreSQL.Simple.FromRow (FromRow(..))
141import Database.PostgreSQL.Simple.FromRow (FromRow(..))
142import Database.PostgreSQL.Simple.Ok
142import Database.PostgreSQL.Simple.Ok
@@ -325,7 +325,7 @@ buildQuery conn q template xs = zipParams (split template) <$> mapM sub xs
325 sub (Many ys) = mconcat <$> mapM sub ys
325 sub (Many ys) = mconcat <$> mapM sub ys
326 split s = fromByteString h : if B.null t then [] else split (B.tail t)
326 split s = fromByteString h : if B.null t then [] else split (B.tail t)
327 where (h,t) = B.break (=='?') s
327 where (h,t) = B.break (=='?') s
328− zipParams (t:ts) (p:ps) = t `mappend` p `mappend` zipParams ts ps
328+ zipParams (t:ts) (p:ps) = t <> p <> zipParams ts ps
329 zipParams [t] [] = t
329 zipParams [t] [] = t
330 zipParams _ _ = fmtError (show (B.count '?' template) ++
330 zipParams _ _ = fmtError (show (B.count '?' template) ++
331 " '?' characters, but " ++
331 " '?' characters, but " ++
@@ -499,8 +499,7 @@ doFold FoldOptions{..} conn _template q a f = do
501 -- FIXME: what about name clashes with already-declared cursors?
501 -- FIXME: what about name clashes with already-declared cursors?
502− _ <- execute_ conn ("DECLARE fold NO SCROLL CURSOR FOR "
502+ _ <- execute_ conn ("DECLARE fold NO SCROLL CURSOR FOR " <> q)
504 loop a `finally` execute_ conn "CLOSE fold"
503 loop a `finally` execute_ conn "CLOSE fold"
506-- FIXME: choose the Automatic chunkSize more intelligently
505-- FIXME: choose the Automatic chunkSize more intelligently