From: Robert Haas Date: Fri, 26 Apr 2013 12:57:47 +0000 (-0400) Subject: libpq: Fix a few bits that didn't get the memo about COPY BOTH. X-Git-Tag: REL9_3_BETA1~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5eb7c4d364c8733d20d7fc8a453a145ee6da10cf;p=postgresql libpq: Fix a few bits that didn't get the memo about COPY BOTH. There's probably no real bug here at present, so not backpatching. But it seems good to make these bits consistent with the rest of libpq, so as to avoid future surprises. Patch by me. Review by Tom Lane. --- diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c index 1e26e19919..7fa090adf3 100644 --- a/src/interfaces/libpq/fe-protocol3.c +++ b/src/interfaces/libpq/fe-protocol3.c @@ -1566,7 +1566,8 @@ pqGetline3(PGconn *conn, char *s, int maxlen) int status; if (conn->sock < 0 || - conn->asyncStatus != PGASYNC_COPY_OUT || + (conn->asyncStatus != PGASYNC_COPY_OUT && + conn->asyncStatus != PGASYNC_COPY_BOTH) || conn->copy_is_binary) { printfPQExpBuffer(&conn->errorMessage, @@ -1617,7 +1618,8 @@ pqGetlineAsync3(PGconn *conn, char *buffer, int bufsize) int msgLength; int avail; - if (conn->asyncStatus != PGASYNC_COPY_OUT) + if (conn->asyncStatus != PGASYNC_COPY_OUT + && conn->asyncStatus != PGASYNC_COPY_BOTH) return -1; /* we are not doing a copy... */ /* @@ -1671,7 +1673,8 @@ pqEndcopy3(PGconn *conn) PGresult *result; if (conn->asyncStatus != PGASYNC_COPY_IN && - conn->asyncStatus != PGASYNC_COPY_OUT) + conn->asyncStatus != PGASYNC_COPY_OUT && + conn->asyncStatus != PGASYNC_COPY_BOTH) { printfPQExpBuffer(&conn->errorMessage, libpq_gettext("no COPY in progress\n")); @@ -1679,7 +1682,8 @@ pqEndcopy3(PGconn *conn) } /* Send the CopyDone message if needed */ - if (conn->asyncStatus == PGASYNC_COPY_IN) + if (conn->asyncStatus == PGASYNC_COPY_IN || + conn->asyncStatus == PGASYNC_COPY_BOTH) { if (pqPutMsgStart('c', false, conn) < 0 || pqPutMsgEnd(conn) < 0)