Re: droped out precise time calculations in src/interfaces/libpq/fe-connect.c - Mailing list pgsql-hackers

From Tom Lane
Subject Re: droped out precise time calculations in src/interfaces/libpq/fe-connect.c
Date
Msg-id 18374.1034620967@sss.pgh.pa.us
Whole thread Raw
In response to Re: droped out precise time calculations in src/interfaces/libpq/fe-connect.c  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: droped out precise time calculations in src/interfaces/libpq/fe-connect.c  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
Bruce Momjian <pgman@candle.pha.pa.us> writes:
>               /*
>                *     select() may modify timeout argument on some platforms so
> !              *    use copy.
> !              *    XXX Do we really want to do that?  If select() returns
> !              *    the number of seconds remaining, we are resetting
> !              *    the timeout to its original value.  This will yeild
> !              *    incorrect timings when select() is interrupted.
> !              *    bjm 2002-10-14
>                */
>               tmp_timeout = *timeout;
>               ptmp_timeout = &tmp_timeout;


Actually, now that I look at this, the API for PQwaitTimed is wrong
after all.  The right way to implement this is for the caller to pass in
finish_time (or some indication that no timeout is wanted).  Evaluation
of the time left to wait should happen inside this retry loop.  That
way, you get the right behavior (plus or minus one second, anyway)
independently of whether the platform's select() reduces its timeout
argument or not.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Final(?) consensus on PQcmdStatus and rules
Next
From: Justin Clift
Date:
Subject: Re: Anyone want to assist with the translation of the Advocacy