pg_cron
pg_cron
Job scheduler for PostgreSQL
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 1070 | pg_cron | pg_cron | 1.6.7 | TIME | PostgreSQL | C |
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
--sLd-- | No | Yes | Yes | Yes | no | no |
| Relationships | |
|---|---|
| Need By | documentdb pg_incremental timeseries vectorize |
| See Also | timescaledb_toolkit timescaledb periods temporal_tables pg_task pg_later emaj table_version |
require cron.database_name
Packages
| Type | Repo | Version | PG Major Availability | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EL | PGDG | 1.6.7 | 18 17 16 15 14 13 | pg_cron_$v* | - |
| Debian | PGDG | 1.6.7 | 18 17 16 15 14 13 | postgresql-$v-cron | - |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|
el8.x86_64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
el8.aarch64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
el9.x86_64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
el9.aarch64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
el10.x86_64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
el10.aarch64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
d12.x86_64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
d12.aarch64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
d13.x86_64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
d13.aarch64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
u22.x86_64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
u22.aarch64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
u24.x86_64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
u24.aarch64 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 | PGDG 1.6.7 |
| Package | Version | OS | ORG | SIZE | File URL |
|---|---|---|---|---|---|
pg_cron_18 | 1.6.7 | el8.x86_64 | pgdg | 45.8 KiB | pg_cron_18-1.6.7-1PGDG.rhel8.x86_64.rpm |
pg_cron_18 | 1.6.7 | el8.aarch64 | pgdg | 44.2 KiB | pg_cron_18-1.6.7-1PGDG.rhel8.aarch64.rpm |
pg_cron_18 | 1.6.7 | el9.x86_64 | pgdg | 45.1 KiB | pg_cron_18-1.6.7-1PGDG.rhel9.x86_64.rpm |
pg_cron_18 | 1.6.7 | el9.aarch64 | pgdg | 43.6 KiB | pg_cron_18-1.6.7-1PGDG.rhel9.aarch64.rpm |
pg_cron_18 | 1.6.7 | el10.x86_64 | pgdg | 46.3 KiB | pg_cron_18-1.6.7-1PGDG.rhel10.x86_64.rpm |
pg_cron_18 | 1.6.7 | el10.aarch64 | pgdg | 44.6 KiB | pg_cron_18-1.6.7-1PGDG.rhel10.aarch64.rpm |
postgresql-18-cron | 1.6.7 | d12.x86_64 | pgdg | 89.7 KiB | postgresql-18-cron_1.6.7-2.pgdg12+1_amd64.deb |
postgresql-18-cron | 1.6.7 | d12.aarch64 | pgdg | 87.4 KiB | postgresql-18-cron_1.6.7-2.pgdg12+1_arm64.deb |
postgresql-18-cron | 1.6.7 | d13.x86_64 | pgdg | 89.6 KiB | postgresql-18-cron_1.6.7-2.pgdg13+1_amd64.deb |
postgresql-18-cron | 1.6.7 | d13.aarch64 | pgdg | 87.3 KiB | postgresql-18-cron_1.6.7-2.pgdg13+1_arm64.deb |
postgresql-18-cron | 1.6.7 | u22.x86_64 | pgdg | 88.7 KiB | postgresql-18-cron_1.6.7-2.pgdg22.04+1_amd64.deb |
postgresql-18-cron | 1.6.7 | u22.aarch64 | pgdg | 86.1 KiB | postgresql-18-cron_1.6.7-2.pgdg22.04+1_arm64.deb |
postgresql-18-cron | 1.6.7 | u24.x86_64 | pgdg | 87.7 KiB | postgresql-18-cron_1.6.7-2.pgdg24.04+1_amd64.deb |
postgresql-18-cron | 1.6.7 | u24.aarch64 | pgdg | 84.6 KiB | postgresql-18-cron_1.6.7-2.pgdg24.04+1_arm64.deb |
Source
Install
To add the required PGDG / PIGSTY upstream repository, use:
pig repo add pgsql -u # add PGDG + Pigsty repo and update cache (leave existing repos)Install this extension with:
pig ext install pg_cron; # install by extension name, for the current active PG version
pig ext install pg_cron; # install via package alias, for the active PG version
pig ext install pg_cron -v 18; # install for PG 18
pig ext install pg_cron -v 17; # install for PG 17
pig ext install pg_cron -v 16; # install for PG 16
pig ext install pg_cron -v 15; # install for PG 15
pig ext install pg_cron -v 14; # install for PG 14
pig ext install pg_cron -v 13; # install for PG 13Create this extension with:
CREATE EXTENSION pg_cron CASCADE SCHEMA pg_catalog;Usage
beware that cron.database has to be set before adding to shared_preload_libraries
-- Delete old data on Saturday at 3:30am (GMT)
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
schedule
----------
42
-- Vacuum every day at 10:00am (GMT)
SELECT cron.schedule('nightly-vacuum', '0 10 * * *', 'VACUUM');
schedule
----------
43
-- Change to vacuum at 3:00am (GMT)
SELECT cron.schedule('nightly-vacuum', '0 3 * * *', 'VACUUM');
schedule
----------
43
-- Stop scheduling jobs
SELECT cron.unschedule('nightly-vacuum' );
unschedule
------------
t
SELECT cron.unschedule(42);
unschedule
------------
t
-- Vacuum every Sunday at 4:00am (GMT) in a database other than the one pg_cron is installed in
SELECT cron.schedule_in_database('weekly-vacuum', '0 4 * * 0', 'VACUUM', 'some_other_database');
schedule
----------
44
-- Call a stored procedure every 5 seconds
SELECT cron.schedule('process-updates', '5 seconds', 'CALL process_updates()');
-- Process payroll at 12:00 of the last day of each month
SELECT cron.schedule('process-payroll', '0 12 $ * *', 'CALL process_payroll()');Crontab format:
┌───────────── min (0 - 59)
│ ┌────────────── hour (0 - 23)
│ │ ┌─────────────── day of month (1 - 31) or last day of the month ($)
│ │ │ ┌──────────────── month (1 - 12)
│ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
│ │ │ │ │ Saturday, or use names; 7 is also Sunday)
│ │ │ │ │
│ │ │ │ │
* * * * *Last updated on