Re: [PATCH] notice handler
От | Dave Page |
---|---|
Тема | Re: [PATCH] notice handler |
Дата | |
Msg-id | E7F85A1B5FF8D44C8A1AF6885BC9A0E4CC2CF8@ratbert.vale-housing.co.uk обсуждение исходный текст |
Ответ на | [PATCH] notice handler ("Scot Loach" <sloach@sandvine.com>) |
Список | pgsql-odbc |
Thanks Scot, patch applied. Regards, Dave > -----Original Message----- > From: pgsql-odbc-owner@postgresql.org > [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Scot Loach > Sent: 17 September 2005 18:52 > To: pgsql-odbc@postgresql.org > Subject: [ODBC] [PATCH] notice handler > > 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 */ > > > ---------------------------(end of > broadcast)--------------------------- > TIP 1: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org > so that your > message can get through to the mailing list cleanly >
В списке pgsql-odbc по дате отправления: