diff options
Diffstat (limited to 'src/interfaces/libpq/fe-exec.c')
-rw-r--r-- | src/interfaces/libpq/fe-exec.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index 77124efe779..4bc5e647153 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -2245,7 +2245,8 @@ PQputCopyEnd(PGconn *conn, const char *errormsg) { if (!conn) return -1; - if (conn->asyncStatus != PGASYNC_COPY_IN) + if (conn->asyncStatus != PGASYNC_COPY_IN && + conn->asyncStatus != PGASYNC_COPY_BOTH) { printfPQExpBuffer(&conn->errorMessage, libpq_gettext("no COPY in progress\n")); @@ -2305,7 +2306,10 @@ PQputCopyEnd(PGconn *conn, const char *errormsg) } /* Return to active duty */ - conn->asyncStatus = PGASYNC_BUSY; + if (conn->asyncStatus == PGASYNC_COPY_BOTH) + conn->asyncStatus = PGASYNC_COPY_OUT; + else + conn->asyncStatus = PGASYNC_BUSY; resetPQExpBuffer(&conn->errorMessage); /* Try to flush data */ |