@@ -186,6 +186,7 @@ putCopyEnd conn = withConnection conn $ \pqconn -> do
186186putCopyError :: Connection -> B.ByteString -> IO ()
187187putCopyError conn err = withConnection conn $ \pqconn -> do
188188 doCopyIn funcName (\c -> PQ.putCopyEnd c (Just err)) pqconn
189+ consumeResults pqconn
189190 where
190191 funcName = "Database.PostgreSQL.Simple.Copy.putCopyError"
191192
@@ -220,6 +221,7 @@ getCopyCommandTag :: B.ByteString -> PQ.Connection -> IO Int64
220221getCopyCommandTag funcName pqconn = do
221222 result <- maybe (fail errCmdStatus) return =<< PQ.getResult pqconn
222223 cmdStat <- maybe (fail errCmdStatus) return =<< PQ.cmdStatus result
224+ consumeResults pqconn
223225 let rowCount = P.string "COPY " *> (P.decimal <* P.endOfInput)
224226 case P.parseOnly rowCount cmdStat of
225227 Left _ -> fail errCmdStatusFmt
@@ -227,3 +229,11 @@ getCopyCommandTag funcName pqconn = do
227229 where
228230 errCmdStatus = B.unpack funcName ++ ": failed to fetch command status"
229231 errCmdStatusFmt = B.unpack funcName ++ ": failed to parse command status"
232+
233+
234+consumeResults :: PQ.Connection -> IO ()
235+consumeResults pqconn = do
236+ mres <- PQ.getResult pqconn
237+ case mres of
238+ Nothing -> return ()
239+ Just _ -> consumeResults pqconn