Si deseamos limitar el tiempo máximo que puede durar ejecutando una consulta o sentencia SQL en PostgreSQL solo debemos cambiar el parámetro statement_timeout.
Configurando el timemout
Este se cambia ejecutando en tu conexión el siguiente comando:
set statement_timeout = '60 s'; -- 60 segundos
En el anterior ejemplo vemos cómo configurar un tiempo máximo de 1 minuto (60 Segundos), si ejecutamos una sentencia SQL que tarde más de 1 minuto en terminar obtendremos el siguiente error:
ERROR – canceling statement due to statement timeout
El cual nos indica que fue cancelado por que tardo más del valor configurado previamente.
Otros ejemplos de configuración
set statement_timeout = '10000'; --- 10 segundos (valor en milisegundos)
set statement_timeout = '5000'; --- 5 segundos (valor en milisegundos)
set statement_timeout = '5 s'; --- 5 segundos
set statement_timeout = '15 s'; --- 15 segundos
set statement_timeout = '60 s'; --- 60 segundos
set statement_timeout = '120 s'; --- 2 minutos
set statement_timeout = '2 min'; --- 2 minutos
set statement_timeout = '5 min'; --- 5 minutos
set statement_timeout = '1 h'; --- 1 Hora
set statement_timeout = '2 h'; --- 2 Horas
¿Cómo podemos probar el cambio?
Digamos que tenemos configurado el valor en 15 segundos, entonces usamos la función pg_sleep(SEGUNDOS)
SELECT pg_sleep(16);
Si ejecutamos la sentencia nos retorna después de "X SEGUNDOS" el error antes mencionado.