On Mon, Sep 12, 2011 at 12:21 PM, bradg <bg4all@me.com> wrote:
> Thanks Merlin.
>
> I added the piece to check PQconsumeInput(). Unfortunately it has not solved
> my problem. It returns 1 indicating "no error" and PQisBusy() still returns
> 1 indefinitely.
>
> Here's the updated code:
>
>
> bool is_result_ready( PGconn * connection )
> {
> int my_socket;
> struct timeval timer;
> fd_set read_mask;
>
> if( PQisBusy( connection ) == FALSE )
> return( TRUE );
>
> my_socket = PQsocket( connection );
>
> timer.tv_sec = (time_t)1;
> timer.tv_usec = 0;
>
> FD_ZERO( &read_mask );
> FD_SET( my_socket, &read_mask );
>
> if( select( my_socket + 1, &read_mask, NULL, NULL, &timer ) == 0 )
> {
> return( FALSE );
> }
> else if( FD_ISSET( my_socket, &read_mask ))
> {
> if (PQconsumeInput( connection ))
> {
> if( PQisBusy( connection ))
> return( FALSE );
> else
> return( TRUE );
> }
> else
> {
> printf("ERROR with PQconsumeInput(): %s\n",
> PQerrorMessage(connection));
> return ( FALSE );
> }
> }
> else
> {
> return( FALSE );
> }
> }
hm -- it's working for me. test program (plus some extra logging) attached:
output:
select returned zero
i=0
not busy!
i=1
merlin