2012/5/18 Tom Lane <tgl@xxxxxxxxxxxxx>: > Vincenzo Romano <vincenzo.romano@xxxxxxxxxxx> writes: >> I'd need to check from a C language program whether the server is >> running or not. >> I was planning to use either "PGPing PQping(const char *conninfo)" or >> "ConnStatusType PQstatus(const PGconn *conn)". >> I have my program running and checking from time to time whether the >> connection is kicking and alive. >> In order to test the things I've done the following: while the program >> is waiting for input I simply restart the postgresql server. >> The issue is thayt both functions return PQPING_OK and CONNECTION_OK >> respectively. >> When I forward the request, I get an error: "FATAL: terminating >> connection due to administrator command". >> How can I reliably check the server status? > > You are not actually interested in checking the server status; you > evidently want to know about the health of an existing connection. > PQping will not help that because it is meant to see if the server > would accept a new connection. PQstatus is not tremendously helpful > either since it doesn't issue any new server traffic; it's just for > seeing if the operations so far were OK. I think issuing a new > dummy query (an empty string would do) is your best bet. But why > bother? Just send your next command, whatever it is. If you don't > have another useful command to issue, you're just wasting bandwidth > and server cycles. Well, a reason to check the connection health is to understand whether it neeeds a reconnection or not. PQping is actually useless: if the database restarted, PQping says it's OK, but the connection is gone. You said enough about PQstatus. So issuing a "blank" command seems to be a good idea. Possibly the only one. Well, a "ping" function trying to use the current "PGconn*" to ping the server would make a lot of sense, though. Thanks a lot, Tom, for your hint. -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general