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