From: Marc G. Fournier Date: Wed, 29 Apr 1998 02:04:01 +0000 (+0000) Subject: From: Oliver Elphick X-Git-Tag: REL6_4_2~1032 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a9ed49d5b5661626280fca3f45c3d8ae3f9b69e4;p=postgresql From: Oliver Elphick If PQfn() receives NOTICEs from the backend, it fails because there is no provision to deal with them. This patch (supplied by Anders Hammarquist to me as Debian maintainer of postgresql) cures the problem: --- diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index c82d838106..4297abcfd9 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.48 1998/03/15 08:11:11 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.49 1998/04/29 02:04:01 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -1545,13 +1545,27 @@ PQfn(PGconn *conn, } pqFlush(pfout, pfdebug); - id = pqGetc(pfin, pfdebug); - if (id != 'V') + while ((id = pqGetc(pfin, pfdebug)) != 'V') { if (id == 'E') { pqGets(conn->errorMessage, ERROR_MSG_LENGTH, pfin, pfdebug); } + else if (id == 'N') + { + /* print notice and go back to processing return + values */ + if (pqGets(conn->errorMessage, ERROR_MSG_LENGTH, + pfin, pfdebug) == 1) + { + sprintf(conn->errorMessage, + "Notice return detected from backend, but " + "message cannot be read"); + } + else + fprintf(stderr, "%s\n", conn->errorMessage); + continue; + } else sprintf(conn->errorMessage, "PQfn: expected a 'V' from the backend. Got '%c' instead",