[PATCH] notice handler - Mailing list pgsql-odbc

From Scot Loach
Subject [PATCH] notice handler
Date
Msg-id 71837C040963F748B9B94E123A289678664FB0@mailserver.sandvine.com
Whole thread Raw
Responses Re: [PATCH] notice handler  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-odbc
This patch fill fix the notice handler so that the odbc driver doesn't output notices from the backend to stderr.

--- connection.c.old    2005-09-17 13:50:26.000000000 -0400
+++ connection.c        2005-09-17 13:40:11.000000000 -0400
@@ -2349,6 +2349,29 @@
 }

 #else
+
+static void
+CC_handle_notice(void *arg, const char *msg)
+{
+       QResultClass    *qres;
+
+       qres = (QResultClass*)(arg);
+
+       if (qres == NULL)
+       {
+           // No query in progress, so just drop the notice
+           return;
+       }
+
+       if (QR_command_successful(qres))
+       {
+               QR_set_status(qres, PGRES_NONFATAL_ERROR);
+               QR_set_notice(qres, msg);       /* will dup this string */
+               mylog("~~~ NOTICE: '%s'\n", msg);
+               qlog("NOTICE from backend during send_query: '%s'\n", msg);
+       }
+}
+
 /*
  *     Connection class implementation using libpq.
  *     Memory Allocation for PGconn is handled by libpq.
@@ -3161,6 +3184,9 @@
        }
        /* free the conninfo structure */
        free(conninfo);
+
+       /* setup the notice handler */
+       PQsetNoticeProcessor(self->pgconn, CC_handle_notice, NULL);
        mylog("connection to the database succeeded.\n");
        return 1;
 }
@@ -3173,8 +3199,6 @@
        PGresult        *pgres;
        char            errbuffer[ERROR_MSG_LENGTH + 1];
        int             pos=0;
-
-       pgres = PQexec(self->pgconn,query);

        qres=QR_Constructor();
        if(!qres)
@@ -3183,6 +3207,11 @@
                QR_Destructor(qres);
                return NULL;
        }
+
+       PQsetNoticeProcessor(self->pgconn, CC_handle_notice, qres);
+       pgres = PQexec(self->pgconn,query);
+       PQsetNoticeProcessor(self->pgconn, CC_handle_notice, NULL);
+
        qres->status = PQresultStatus(pgres);

        /* Check the connection status */
@@ -3388,7 +3417,6 @@

 }

-
 #endif /* USE_LIBPQ */


pgsql-odbc by date:

Previous
From: "Scot Loach"
Date:
Subject: [PATCH] fix for wrong error code returned
Next
From: "Dave Page"
Date:
Subject: Re: [PATCH] fix for wrong error code returned