Jessica Perry Hekman wrote:
> On Mon, 1 Apr 2002, Tom Lane wrote:
> 
> > On the other hand, we do not have anything in the backend now that
> > applies to just one statement and then automatically resets afterwards;
> > and I'm not eager to add a parameter with that behavior just for JDBC's
> > convenience.  It seems like it'd be a big wart.
> 
> Does that leave us with implementing query timeouts in JDBC (timer in the
> driver; then the driver sends a cancel request to the backend)?

No, I think we have to find a way to do this in the backend; just not
sure how yet.

I see the problem Tom is pointing out, that SET is ignored if the
transaction has already aborted:
        
        test=> begin;
        BEGIN
        test=> lkjasdf;
        ERROR:  parser: parse error at or near "lkjasdf"
        test=> set server_min_messages = 'log';
        WARNING:  current transaction is aborted, queries ignored until end of
        transaction block
        *ABORT STATE*
        test=> 

so if the transaction aborted, the reset of the statement_timeout would
not happen.  The only way the application could code this would be with
this:

        BEGIN WORK;
        query;
        SET statement_timeout = 4;
        query;
        SET statement_timeout = 0;
        query;
        COMMIT;
        SET statement_timeout = 0;

Basically, it does the reset twice, once assuming the transaction
doesn't abort, and another assuming it does abort.  Is this something
that the JDBC and ODBC drivers can do automatically?

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Reply via email to