aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/libpq/fe-exec.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1998-05-06 23:53:48 +0000
committerBruce Momjian <bruce@momjian.us>1998-05-06 23:53:48 +0000
commit1c2d9cb63774f46f70f20ca8daa70f451886da1f (patch)
treecd2d311458fb6399644a1b1aa64b09cd3c908549 /src/interfaces/libpq/fe-exec.c
parentedbd51395c425795b3ccacbc9d26044beb1a1277 (diff)
downloadpostgresql-1c2d9cb63774f46f70f20ca8daa70f451886da1f.tar.gz
postgresql-1c2d9cb63774f46f70f20ca8daa70f451886da1f.zip
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
Diffstat (limited to 'src/interfaces/libpq/fe-exec.c')
-rw-r--r--src/interfaces/libpq/fe-exec.c12
1 files changed, 8 insertions, 4 deletions
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;