need a method to ping a running database - Mailing list pgsql-general

I need a shell scriptable method to determine if a postgresql database
is running and accepting connections.

I've written a script to start out postgresql database and I was using:
"pg_ctl status"

to determine if the database had been started.  There are a couple of
problems with this method.  It seems that if you start postgresql and
then issue a "kill -9" on the postmaster processes a .pid file is left
behind (understandable), but then if you run "pg_ctl status" it will
immediately report that the database is running and give you the pid
number and whatever else.  This is a bit misleading to say the least.

To solve this problem I changed my db_ping() function to be more like
"ps ax |grep -q postmaster && pg_ctl status".  This works better, but
there is still a problem.

The .pid file is being written immediately, not when the database is
actually up and accepting connections.  This causes my java app to try
and open the database and setup a connection pool before it should.

I need a shell scriptable method to determine if the database is started
and ready to accept connections.



pgsql-general by date:

Previous
From: Joe Conway
Date:
Subject: Re: Trouble returning setof
Next
From: "Maksim Likharev"
Date:
Subject: TABLE FUNCTION, ERROR: WRONG RECORD TYPE IN RETURN NEXT