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

From: "Murray S(dot) Kucherawy" <msk(at)cloudmark(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #5837: PQstatus() fails to report lost connection
Date: 2011-01-14 01:36:29
Message-ID: 201101140136.p0E1aTFb017852@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 5837
Logged by: Murray S. Kucherawy
Email address: msk(at)cloudmark(dot)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.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Craig Ringer 2011-01-14 06:23:23 Re: BUG #5829: No buffer Space Available(maximum connection reached?) from postgres edb driver
Previous Message frank 2011-01-14 00:14:21 Re: BUG #5816: index not used in function