[PATCH] notice handler

Поиск
Список
Период
Сортировка
От Scot Loach
Тема [PATCH] notice handler
Дата
Msg-id 71837C040963F748B9B94E123A289678664FB0@mailserver.sandvine.com
обсуждение исходный текст
Ответы Re: [PATCH] notice handler  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: "Scot Loach"
Дата:
Сообщение: [PATCH] fix for wrong error code returned
Следующее
От: "Dave Page"
Дата:
Сообщение: Re: [PATCH] fix for wrong error code returned