Re: PQstatus does not seem to work - Mailing list pgsql-general

From Juan Backson
Subject Re: PQstatus does not seem to work
Date
Msg-id 27c25bc40908102102x6b921e93of34b396bfca82cdc@mail.gmail.com
Whole thread Raw
In response to Re: PQstatus does not seem to work  (Tim Hart <tjhart@mac.com>)
List pgsql-general
Hi Tim,
 
Thank you for your suggestion.
 
In my application, it is a multi-thread and each thread will need to query 5 select statements. 
 
 
Right now, I am having my own pool of 500 PgConn inside the code.  For each connection that I obtain from the connection pool, I am using direct socket into querying the database, without ODBC.  That way, I can get the data much faster. 
 
Does PGpool II has c api that I can use inside my code? 
 
Also, can I use direct socket connection to query the db with PgpoolI?   The way I am executing query is by using :
 
res = PGexec(conn, "BEGIN");
res = PQexec(pgconn, "DECLARE CURSOR select * ....");
res = PGexec(conn, "END");
 
 
Could someone help me out?  What is the best way for 1) using connectin pooling in my situation and 2) it is the right way to do  BEGIN; DECLARE CURSOR... ; END; for each select query?
 
 
Thanks for all your help.
 
JB

On Tue, Aug 11, 2009 at 2:02 AM, Tim Hart <tjhart@mac.com> wrote:

On 8/10/09 12:08 PM, "Sam Mason" <sam@samason.me.uk> wrote:

> On Tue, Aug 11, 2009 at 12:41:47AM +0800, Juan Backson wrote:
>> I used PQstatus(conn) function to check connection status, but I found that
>> it still returns CONNECTION_OK even after postgres is restarted.  Does
>> anyone know if there is another command that I can use to check connection
>> status?
>
> Yes, PQstatus just gives back the last status.  It doesn't go off and
> check anything.
>
>> What other solution is available to check whether a connection is still
>> alive?
>
> As a connection can go down at any time, this doesn't seem useful.  Just
> send off your request as normal and if it fails because the connection
> was closed then you can open a new one and try again.

Depending on your situation, connection pooling might be a reasonable
option. Instead of managing the connections yourself, you leave that to
another process entirely.

http://www.revsys.com/writings/postgresql-performance.html

Look at the section on "Stateless Applications"

I spend a lot of time writing stateless apps that server many 'users'
concurrently. For me, the pooling idea is much simpler because I only
interact with the 'pool', and the pool manages opening and closing
connections on my behalf.

Of course, this is not a good option if you're writing a stateful app. Your
original email didn't say either way, so this is a take on the other side of
the problem.



pgsql-general by date:

Previous
From: "Ow Mun Heng"
Date:
Subject: Re: xlog flus not satisfied
Next
From: Juan Backson
Date:
Subject: Need help with libpq and PQexec