Tom Lane wrote:
>Andrew Dunstan <andrew@dunslane.net> writes:
>  
>
>>I now notice that "pg_ctl -w start" fails if the postgres db is missing. 
>>I am not sure that changing pg_ctl to use this rather than template1 was 
>>a good thing, and it can't be overridden. I suggest we revert that 
>>particular change - it seems to me to confer little to no benefit, 
>>unlike the case with createdb etc.
>>    
>>
>
>pg_ctl -w is already incredibly fragile because it needs a working
>password-free login name.  Rather than worrying about whether the
>database name exists, what we ought to do is invent the long-awaited
>"ping" extension to the postmaster protocol --- something that would
>just ask "are you up and ready to accept connections" without having
>to specify a valid user *or* database name.
>
>You can sort of do this today if you are willing to examine the error
>message that comes back from the postmaster, but I think it'd be cleaner
>to have an official protocol extension.
>  
>
Actually, it looks like pg_ctl already does this:
       if ((conn = PQsetdbLogin(NULL, portstr, NULL, NULL,                                "postgres", NULL, NULL)) !=
NULL&&           (PQstatus(conn) == CONNECTION_OK ||            (strcmp(PQerrorMessage(conn),
PQnoPasswordSupplied)== 0)))       {           PQfinish(conn);           success = true;           break;       }
 
cheers
andrew