Register an action for scheduling by the automation framework. For more information about scheduling, including example actions, see the actions section.

NameTypeDescription
procREGPROCName of the function or procedure to register as job
schedule_intervalINTERVALInterval between executions of this job. Defaults to 24 hours
NameTypeDescription
configJSONBJob-specific configuration, passed to the function when it runs
initial_startTIMESTAMPTZTime the job is first run. In the case of fixed schedules, this also serves as the origin on which job executions are aligned. If omitted, the current time is used as origin in the case of fixed schedules.
scheduledBOOLEANSet to FALSE to exclude this job from scheduling. Defaults to TRUE.
check_configREGPROCA function that takes a single argument, the JSONB config structure. The function is expected to raise an error if the configuration is not valid, and return nothing otherwise. Can be used to validate the configuration when adding a job. Only functions, not procedures, are allowed as values for check_config.
fixed_scheduleBOOLEANSet to FALSE if you want the next start of a job to be determined as its last finish time plus the schedule interval. Set to TRUE if you want the next start of a job to begin schedule_interval after the last start. Defaults to TRUE
timezoneTEXTA valid time zone. If fixed_schedule is TRUE, subsequent executions of the job are aligned on its initial start. However, daylight savings time (DST) changes may shift this alignment. Set to a valid time zone if you want to mitigate this issue. Defaults to NULL.
ColumnTypeDescription
job_idINTEGERTimescaleDB background job ID

Register the user_defined_action procedure to run every hour:

CREATE OR REPLACE PROCEDURE user_defined_action(job_id int, config jsonb) LANGUAGE PLPGSQL AS
$$
BEGIN
RAISE NOTICE 'Executing action % with config %', job_id, config;
END
$$;
SELECT add_job('user_defined_action','1h');
SELECT add_job('user_defined_action','1h', fixed_schedule => false);

Register the user_defined_action procedure to run at midnight every Sunday. The initial_start provided must satisfy these requirements, so it must be a Sunday midnight:

-- December 4, 2022 is a Sunday
SELECT add_job('user_defined_action','1 week', initial_start => '2022-12-04 00:00:00+00'::timestamptz);
-- if subject to DST
SELECT add_job('user_defined_action','1 week', initial_start => '2022-12-04 00:00:00+00'::timestamptz, timezone => 'Europe/Berlin');

Keywords

Found an issue on this page?Report an issue or Edit this page in GitHub.