On Wed, Jan 20, 2021 at 4:36 PM Javier Lugo Porras <jlu...@hotmail.com> wrote: > > Hola a todos, > esta funcion que les copio me trabaja muy bien con postgresql 9-5, migre > a la 10.15, y no esta funcionando a traves de un proceso .cmd en > windows, sin embargo lo ejecuto usando pgadmin Y trabaja muy bien. El > user que lo llama es SUPERUSUARIO, me manda un error en la Linea 1...No > es cuestion de ROLES, ya que si realiza otras sentencias (INSERT) sin > problemas. >
Y cual es el mensaje de error? además, no es que desconfíe de ti pero puedes mostrar el resultado de la consulta: SELECT rolname, rolsuper FROM pg_authid WHERE rolname = 'nombre del usuario'; otras cosas que puedes revisar, estas seguro que estas conectado a la base de datos correcta? > El proceso elimina los usuarios conectados a la bd CONECTADOS, despues > de 1hora y superiores a 15minutos, (para liberar las conexiones > muertas). Migre a la version 10 y no me esta trabajando, Este proceso > lo tengo a ejecutarse cada 15 minutos y me mantiene el sitio > FRESH!...PERO ahora tengo que estar REVISANDO!... la función sigue funcionando, el problema tiene que forzosamente estar de tu lado porque no es falla de la base. por cierto, el problema real es el que describes (que se quedan conexiones abiertas tanto tiempo) y no que pg_terminate_backend() por algún motivo "no esté funcionando". has analizado porque se quedan tanto tiempo esas conexiones? mi teoría, sin ninguna evidencia a la mano, es que las consultas que no se están muriendo está aún ejecutando alguna consulta (state = 'active') y la consulta está en un punto que no acepta señales > > SELECT pg_terminate_backend(pid) > FROM pg_stat_activity > WHERE pid <> pg_backend_pid() > AND (datname = 'CLIENTE') AND (usename = 'U1' or usename = 'U2') > AND (extract(hour from (current_timestamp - state_change)) >= 1 > OR extract(minute from (current_timestamp - state_change)) >= 15); > Esta consulta no considera el estado de las consultas, le da igual si están en ejecución ('active'), esperando actividad ('idle') o esperando actividad en una transacción ('idle in transaction'). es a proposito? quizá te sirvan los parámetros (https://www.postgresql.org/docs/10/runtime-config-client.html): - statement_timeout - idle_in_transaction_session_timeout -- Jaime Casanova SystemGuards Consultores de PostgreSQL