Thread: Checking PQstatus (libpq) returns CONNECTION_OK when it is not.
Checking PQstatus (libpq) returns CONNECTION_OK when it is not.
From
pgsql-bugs@postgresql.org
Date:
Philip (philip.howell@cit.act.edu.au) reports a bug with a severity of 2 The lower the number the more severe it is. Short Description Checking PQstatus (libpq) returns CONNECTION_OK when it is not. Long Description Hi I'm having problems with the PQstatus function in the libpq library. It returns CONNECTION_OK when I know that it is not. I used the test program attached bellow and the following method to test it: 1. I compiled the program: gcc -Wall -o test test.c -lpq 2. With the postgreSQL server (161.50.16.173) up and running I executed the test program: ./test 3. I hit <return> a few times to get the following output >Connection status... OK > >Connection status... OK > >Connection status... OK > >Connection status... OK 4. I then sutdown the network service on the postgreSQL server, to break the connection 5. However when I hit <return> I still get >Connection status... OK When I would expect: >Connection status... BAD The call to PQstatus(conn) on line 16 of the attached code never returns CONNECTION_BAD. SYSTEM INFORMATION: =================== postgreSQL Server: Hardware: i386 OS Linux RedHat 6.2 Postgres was installed from RPMs version 7.0.3-2 Client Machine Hardware: i386 OS: Linux RedHat 6.2 RPMs installed: postgresql-devel-7.0.3-2 postgresql-7.0.3-2 Regards Phil Sample Code #include <stdlib.h> #include <stdio.h> #include "pgsql/libpq-fe.h" PGconn *make_conn(); int main (int argc, char *argv[]) { PGconn *conn; conn = make_conn(); while (fgetc(stdin) != 'q') { printf("Connection status... "); if (PQstatus(conn) != CONNECTION_OK) { printf("BAD\n"); PQreset(conn); } else { printf("OK\n"); } } return(0); } PGconn *make_conn() { PGconn *conn; conn = PQconnectdb("hostaddr = 161.50.16.173 dbname = squid user = squid password = squid"); if (PQstatus(conn) == CONNECTION_BAD) { fprintf(stderr,"Failed to connect to database\n"); fprintf(stderr,"%s\n",PQerrorMessage(conn)); PQfinish(conn); exit(1); } return(conn); } No file was uploaded with this report