@@ -186,6 +186,7 @@ putCopyEnd conn = withConnection conn $ \pqconn -> do
186putCopyError :: Connection -> B.ByteString -> IO ()
186putCopyError :: Connection -> B.ByteString -> IO ()
187putCopyError conn err = withConnection conn $ \pqconn -> do
187putCopyError conn err = withConnection conn $ \pqconn -> do
188 doCopyIn funcName (\c -> PQ.putCopyEnd c (Just err)) pqconn
188 doCopyIn funcName (\c -> PQ.putCopyEnd c (Just err)) pqconn
189+ consumeResults pqconn
190 funcName = "Database.PostgreSQL.Simple.Copy.putCopyError"
191 funcName = "Database.PostgreSQL.Simple.Copy.putCopyError"
@@ -220,6 +221,7 @@ getCopyCommandTag :: B.ByteString -> PQ.Connection -> IO Int64
220getCopyCommandTag funcName pqconn = do
221getCopyCommandTag funcName pqconn = do
221 result <- maybe (fail errCmdStatus) return =<< PQ.getResult pqconn
222 result <- maybe (fail errCmdStatus) return =<< PQ.getResult pqconn
222 cmdStat <- maybe (fail errCmdStatus) return =<< PQ.cmdStatus result
223 cmdStat <- maybe (fail errCmdStatus) return =<< PQ.cmdStatus result
224+ consumeResults pqconn
223 let rowCount = P.string "COPY " *> (P.decimal <* P.endOfInput)
225 let rowCount = P.string "COPY " *> (P.decimal <* P.endOfInput)
224 case P.parseOnly rowCount cmdStat of
226 case P.parseOnly rowCount cmdStat of
225 Left _ -> fail errCmdStatusFmt
227 Left _ -> fail errCmdStatusFmt
@@ -227,3 +229,11 @@ getCopyCommandTag funcName pqconn = do
228 errCmdStatus = B.unpack funcName ++ ": failed to fetch command status"
230 errCmdStatus = B.unpack funcName ++ ": failed to fetch command status"
229 errCmdStatusFmt = B.unpack funcName ++ ": failed to parse command status"
231 errCmdStatusFmt = B.unpack funcName ++ ": failed to parse command status"
234+consumeResults :: PQ.Connection -> IO ()
235+consumeResults pqconn = do
236+ mres <- PQ.getResult pqconn
238+ Nothing -> return ()
239+ Just _ -> consumeResults pqconn