SET transaction_timeout inside a transaction

Quentin de Metz <quentin@de.me.tz>

From: "Quentin de Metz" <quentin@de.me.tz>
To: pgsql-novice@postgresql.org
Cc: amborodin@acm.org, aekorotkov@gmail.com, japinli@hotmail.com, zhjwpku@gmail.com
Date: 2025-09-19T20:12:59Z
Lists: pgsql-novice
Hello,

It appears that changing the transaction_timeout when inside a transaction does not work as expected.

Running the following script on master:

SET transaction_timeout = '1s';
BEGIN;
SET transaction_timeout = '3s';
SELECT pg_sleep(2);

Fails with the following:

FATAL:  terminating connection due to transaction timeout
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.

A workaround is to "SET transaction_timeout = 0" before each override. But this resets the timer, which may not be aligned with this parameter's intention.

Thank you,
Best regards,

Quentin de Metz