Checking PQstatus (libpq) returns CONNECTION_OK when it is not.

From: pgsql-bugs(at)postgresql(dot)org
To: pgsql-bugs(at)postgresql(dot)org
Subject: Checking PQstatus (libpq) returns CONNECTION_OK when it is not.
Date: 2001-03-14 05:16:23
Message-ID: 200103140516.f2E5GNv89663@hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Philip (philip(dot)howell(at)cit(dot)act(dot)edu(dot)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

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2001-03-14 15:41:24 Re: modulo operator bug?
Previous Message philip.howell 2001-03-14 04:57:23 libpq PQstatus failed