From a9ed49d5b5661626280fca3f45c3d8ae3f9b69e4 Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Wed, 29 Apr 1998 02:04:01 +0000 Subject: [PATCH] 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: --- src/interfaces/libpq/fe-exec.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) 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",