PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 08/11/2021 16:57:07

nonoland
Membre

PgAgent : "Run now" depuis un client SQL

Bonjour,
.
Je voudrais savoir s'il est possible de forcer l'exécution d'un job, par une requête SQL.
J'aurais besoin d'avoir le même comportement que le "Run now" qui est disponible par clic droit sur un job dans pgAgent.
.
Aujourd'hui, j'extrais le code plpgsql du champ jstcode de la table pga_jobstep, et je lance l'exécution de ce code dans mon programme. L'inconvénient est que je ne profite pas du mécanisme de log (via la table pgajobsteplog) et j'en ai vraiment besoin.
.
Je ne parviens pas à trouver cette info sur le net et ai bien peur qu'il n'y ai pas de solution...
Quelqu'un aurait-il un tuyau ?... une petite fonction cachée "select run_now_mon_job('jobname');" ??? ... ça me ferait plaisir smile
.
Merci par avance pour vos retours.

Dernière modification par nonoland (08/11/2021 18:01:47)

Hors ligne

#2 09/11/2021 04:45:11

rjuju
Administrateur

Re : PgAgent : "Run now" depuis un client SQL

Bonjour,


J'imagine que c'est possible, mais vous allez malheureusement devoir chercher comment cela se passe s'il n'y a pas de documentation officielle pour une API SQL pour faire ça.  À priori cela ne devrait pas être trop compillqué, il suffit d'activer les traces de toutes les requêtes (log_min_duration_statatement = 0) soit sur votre instance, sur la base où pgadmin est installée ou sur l'utilisateur effectuant l'action, et de voir ce qu'il se passe lorsque vous cliquez sur "run now".

Hors ligne

#3 10/11/2021 10:58:00

nonoland
Membre

Re : PgAgent : "Run now" depuis un client SQL

YES !
Merci pour ce tuyau Rjuju... c'était une excellente idée d'investigation !!!
.
Alors, pour info, la réponse à ma question est de forcer la valeur de la colonne "jobnextrun" dans la table pga_job, de cette manière:
.
UPDATE pgagent.pga_job
SET jobnextrun=now()::timestamptz
WHERE jobid=35::integer
.
35 est bien sûr l'id de mon job
.
Bonne journée à tous!

Dernière modification par nonoland (10/11/2021 10:58:16)

Hors ligne

Pied de page des forums