pg_task
pg_task : execute any sql command at any specific time at background
Overview
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
| --sL--- | No | Yes | Yes | No | no | no |
| Relationships | |
|---|---|
| See Also | pg_cron pg_durable pg_background pgagent pg_dispatch pg_dbms_job pg_later pgmq ulak pg_retry |
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.1.29 |
18 17 16 15 14 | pg_task |
- |
| RPM | PIGSTY | 2.1.29 |
18 17 16 15 14 | pg_task_$v |
- |
| DEB | PIGSTY | 2.1.29 |
18 17 16 15 14 | postgresql-$v-pg-task |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| el8.aarch64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| el9.x86_64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| el9.aarch64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| el10.x86_64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| el10.aarch64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| d12.x86_64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| d12.aarch64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| d13.x86_64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| d13.aarch64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| u22.x86_64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| u22.aarch64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| u24.x86_64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| u24.aarch64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| u26.x86_64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
| u26.aarch64 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 | PIGSTY 2.1.29 |
Source
github.com/RekGRpth/pg_task
pg_task-2.1.29.tar.gz
Install
Make sure PGDG and PIGSTY repo available:
Install this extension with pig:
Config this extension to shared_preload_libraries:
This extension does not need CREATE EXTENSION DDL command
Usage
Sources: pg_task upstream README, PGXN pg_task.
pg_task is a background-worker scheduler for running SQL asynchronously at a planned time. Upstream documents PostgreSQL, Greenplum, and Greengage support.
Enable the worker at server start, then create the extension in the database that will own the task table:
Schedule Tasks
Schedule work by inserting rows into the configured task table, which defaults to public.task in database postgres unless changed with GUCs.
Task Table
The task table is meant to be user-visible. Upstream notes that users may add columns or partition it.
Key columns:
| Name | Type | Default | Description |
|---|---|---|---|
| id | bigserial | autoincrement | Primary key |
| parent | bigint | pg_task.id | Parent task id |
| plan | timestamptz | statement_timestamp() | Planned start time |
| start | timestamptz | Actual start time | |
| stop | timestamptz | Actual stop time | |
| active | interval | 1 hour | Period after plan time when task is active |
| live | interval | 0 sec | Max lifetime of background worker |
| repeat | interval | 0 sec | Auto repeat interval |
| timeout | interval | 0 sec | Allowed time for task run |
| count | int | 0 | Max task count before worker exit |
| max | int | 0 | Max concurrent tasks in group; negative values mean pause between tasks in milliseconds |
| pid | int | Process id executing task | |
| state | enum | PLAN | PLAN, TAKE, WORK, DONE, STOP |
| delete | bool | true | Auto delete when output and error are null |
| drift | bool | false | Compute next repeat by stop time |
| header | bool | true | Show column headers in output |
| group | text | ‘group’ | Task grouping name |
| input | text | SQL command(s) to execute | |
| output | text | Received result(s) | |
| error | text | Caught error | |
| remote | text | Remote database connection string |
Configuration
Key settings:
| Name | Type | Default | Description |
|---|---|---|---|
| pg_task.delete | bool | true | Auto delete completed tasks |
| pg_task.drift | bool | false | Compute repeat by stop time |
| pg_task.header | bool | true | Show column headers in task output |
| pg_task.string | bool | true | Quote only strings in output |
| pg_task.count | int | 0 | Default maximum number of tasks per worker before exit |
| pg_task.fetch | int | 100 | Number of task rows fetched at once |
| pg_task.limit | int | 1000 | Limit task rows at once |
| pg_task.max | int | 0 | Default max concurrent tasks in group |
| pg_task.run | int | 2147483647 | Maximum concurrently executing tasks in work |
| pg_task.sleep | int | 1000 | Check tasks every N milliseconds |
| pg_task.active | interval | 1 hour | Period after plan time when a task remains active for execution |
| pg_task.live | interval | 0 sec | Maximum lifetime of a worker process |
| pg_task.repeat | interval | 0 sec | Default repeat interval |
| pg_task.timeout | interval | 0 sec | Default task timeout |
| pg_task.data | text | postgres | Database name for tasks table |
| pg_task.user | text | postgres | User name for tasks table |
| pg_task.schema | text | public | Schema name for tasks table |
| pg_task.table | text | task | Table name for tasks table |
| pg_task.json | json | [{"data":"postgres"}] |
Multi-database configuration |
| pg_task.id | bigint | 0 | Current task id, read-only session setting |
Multi-Database Configuration
To run tasks on multiple databases, configure via JSON:
If the specified database, user, schema or table does not exist, pg_task will create them.
The local metadata marks this package as headless, so it needs shared_preload_libraries rather than a user-facing SQL-only install path. Validate background scheduling behavior on the target PostgreSQL version before relying on it for critical jobs.