From 1c2d9cb63774f46f70f20ca8daa70f451886da1f Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 6 May 1998 23:53:48 +0000 Subject: It seems the regression tests don't cover copy in/out at all, so code that I had assumed was working had not been tested. Naturally, it was broken ... Tom Lane --- src/interfaces/libpq/fe-exec.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/interfaces/libpq/fe-exec.c') diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index aac0ea0e97b..ae770e197aa 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.50 1998/05/06 23:51:13 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.51 1998/05/06 23:53:38 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -748,7 +748,8 @@ PQexec(PGconn *conn, const char *query) return NULL; /* For backwards compatibility, return the last result if there are - * more than one. + * more than one. We have to stop if we see copy in/out, however. + * We will resume parsing when application calls PQendcopy. */ lastResult = NULL; while ((result = PQgetResult(conn)) != NULL) @@ -756,6 +757,9 @@ PQexec(PGconn *conn, const char *query) if (lastResult) PQclear(lastResult); lastResult = result; + if (result->resultStatus == PGRES_COPY_IN || + result->resultStatus == PGRES_COPY_OUT) + break; } return lastResult; } @@ -950,7 +954,7 @@ PQputline(PGconn *conn, const char *s) { if (conn && conn->sock >= 0) { - (void) pqPuts(s, conn); + (void) pqPutnchar(s, strlen(s), conn); } } @@ -988,7 +992,7 @@ PQendcopy(PGconn *conn) result = PQgetResult(conn); /* Expecting a successful result */ - if (result->resultStatus == PGRES_COMMAND_OK) + if (result && result->resultStatus == PGRES_COMMAND_OK) { PQclear(result); return 0; -- cgit v1.2.3