-- Get the time to find the next run after. It will just be the later of
-- now() + 1m and the start date for the time being, however, we might want to
-- do more complex things using this value in the future.
IF date_trunc(''MINUTE'', jscstart) > date_trunc(''MINUTE'', (now() + ''1 Minute''::interval)) THEN
runafter := date_trunc(''MINUTE'', jscstart);
ELSE
runafter := date_trunc(''MINUTE'', (now() + ''1 Minute''::interval));
END IF;
pgagent.pga_job
一旦计划的作业完成,pgAgent 就会更新作业的行。然后,pgAgent 将至少在 1 分钟后运行该作业。计划“每分钟”运行的作业的线程在每分钟开始时每分钟查找运行一次的新作业。因此,如果您的作业在 13:01:26 完成,那么下次运行计划的时间将是 13:02:00,但是由于作业在 34 秒前完成,因此不会运行该作业。调度程序下一次运行时,在 13:03:00,它看到作业在超过一分钟前运行,并运行该作业。pgAgent 源代码
pgagent.pga_next_schedule
说明了这一点: