From a9ed49d5b5661626280fca3f45c3d8ae3f9b69e4 Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" <scrappy@hub.org> Date: Wed, 29 Apr 1998 02:04:01 +0000 Subject: [PATCH] From: Oliver Elphick <olly@lfix.co.uk> If PQfn() receives NOTICEs from the backend, it fails because there is no provision to deal with them. This patch (supplied by Anders Hammarquist <iko@netg.se> 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 c82d8381061..4297abcfd99 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", -- GitLab