pgsql: Reset statement_timeout between queries of a multi-query string. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Reset statement_timeout between queries of a multi-query string.
Date
Msg-id E1iO1iN-0005Gb-IO@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Reset statement_timeout between queries of a multi-query string.

Historically, we started the timer (if StatementTimeout > 0) at the
beginning of a simple-Query message and usually let it run until the
end, so that the timeout limit applied to the entire query string,
and intra-string changes of the statement_timeout GUC had no effect.
But, confusingly, a COMMIT within the string would reset the state
and allow a fresh timeout cycle to start with the current setting.

Commit f8e5f156b changed the behavior of statement_timeout for extended
query protocol, and as an apparently-unintended side effect, a change in
the statement_timeout GUC during a multi-statement simple-Query message
might have an effect immediately --- but only if it was going from
"disabled" to "enabled".

This is all pretty confusing, not to mention completely undocumented.
Let's change things so that the timeout is always reset between queries
of a multi-query string, whether they're transaction control commands
or not.  Thus the active timeout setting is applied to each query in
the string, separately.  This costs a few more cycles if statement_timeout
is active, but it provides much more intuitive behavior, especially if one
changes statement_timeout in one of the queries of the string.

Also, add something to the documentation to explain all this.

Per bug #16035 from Raj Mohite.  Although this is a bug fix, I'm hesitant
to back-patch it; conceivably somebody has worked out the old behavior
and is depending on it.  (But note that this change should make the
behavior less restrictive in most cases, since the timeout will now
be applied to shorter segments of code.)

Discussion: https://postgr.es/m/16035-456e6e69ebfd4374@postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/2b2bacdca0100f50ba4f79cda53514b6e5114e8f

Modified Files
--------------
doc/src/sgml/config.sgml    | 23 ++++++++++++++++++-----
src/backend/tcop/postgres.c | 12 +++++++++++-
2 files changed, 29 insertions(+), 6 deletions(-)


pgsql-committers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: pgsql: Make the order of the header file includes consistent in non-bac
Next
From: Tom Lane
Date:
Subject: pgsql: Get rid of useless/dangerous redefinition of bool in ECPG.