BUG #5837: PQstatus() fails to report lost connection

Поиск
Список
Период
Сортировка
От Murray S. Kucherawy
Тема BUG #5837: PQstatus() fails to report lost connection
Дата
Msg-id 201101140136.p0E1aTFb017852@wwwmaster.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #5837: PQstatus() fails to report lost connection  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      5837
Logged by:          Murray S. Kucherawy
Email address:      msk@cloudmark.com
PostgreSQL version: 9.0.2
Operating system:   FreeBSD
Description:        PQstatus() fails to report lost connection
Details:

I'm accessing libpq via OpenDBX, but it appears to be doing the right thing.
 This is reproducible.

1) establish a connection to postgresql
2) initiate a query, collect results, etc.; all normal
3) while client is idle, restart the server
4) initiate the very same query as before
5) call PQgetResult(), returns non-NULL
6) call PQresultStatus(), returns PGRES_FATAL_ERROR
7) call PQstatus(), returns CONNECTION_OK

This causes the caller not to try PQreset() or equivalent, because the
connection is presumably fine.  However, of course, no further queries will
succeed.

A call to PQerrorMessage() returns the string "FATAL: terminating connection
due to administrator command", which would be expected.

I would hate to have to have the application pull that out each time and
look for this specific string to detect the dead connection.

What happens internally prior to (7) appears to be a bug.  I looked through
the "TODO" list and didn't see any mention of this.

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "frank"
Дата:
Сообщение: Re: BUG #5816: index not used in function
Следующее
От: Craig Ringer
Дата:
Сообщение: Re: BUG #5829: No buffer Space Available(maximum connection reached?) from postgres edb driver