blob: bf12909c7614c06ba1ea56cf04dfa9eb5f1e72c2 [file] [log] [blame]
-- Vacuum every day at 10:00am (GMT)
create task vacuum_db SCHEDULE '0 10 * * *' AS 'vacuum';
-- Stop scheduling a task
drop task vacuum_db;
-- Invalid input: missing parts
create task missing_parts schedule '* * * *' as 'select 1';
-- Invalid input: trailing characters
create task trail_char schedule '5 secondc' as 'select 1';
create task trail_char schedule '50 seconds c' as 'select 1';
-- Invalid input: seconds out of range
create task invalid_seconds schedule '-1 seconds' as 'select 1';
create task invalid_seconds schedule '0 seconds' as 'select 1';
create task invalid_seconds schedule '60 seconds' as 'select 1';
create task invalid_seconds schedule '1000000000000 seconds' as 'select 1';
-- Vacuum every day at 10:00am (GMT)
create task vacuum_db SCHEDULE '0 10 * * *' AS 'vacuum';
select schedule, command, active, jobname from pg_task order by jobid;
-- Make that 11:00am (GMT)
alter task vacuum_db schedule '0 11 * * *';
select schedule, command, active, jobname from pg_task order by jobid;
-- Make that VACUUM FULL
alter task vacuum_db as 'vacuum full';
select schedule, command, active, jobname from pg_task order by jobid;
-- Update to a non existing database
alter task vacuum_db database hopedoesnotexist;
-- Create a database that does not allow connection
create database task_dbno;
revoke CONNECT on DATABASE task_dbno from PUBLIC;
-- create a test user
create user task_cron with password 'pwd';
-- Create a task for another user
create task another_user_task schedule '* 10 * * *' database task_dbno user task_cron as 'vacuum';
-- Schedule a task for this user on the database that does not accept connections
alter task vacuum_db database task_dbno user task_cron;
-- Schedule a task that user doest not exist
alter task vacuum_db user hopedoesnotexist;
-- valid interval tasks
create task valid_task_1 schedule '1 second' as 'select 1';
create task valid_task_2 schedule ' 30 sEcOnDs ' as 'select 1';
create task valid_task_3 schedule '59 seconds' as 'select 1';
create task valid_task_4 schedule '17 seconds ' as 'select 1';
-- task in function
DO $$
BEGIN
create task fn_task schedule '5 * * * * ' as 'select 1';
END $$;
select jobname from pg_task where jobname = 'fn_task';
DO $$
BEGIN
alter task fn_task schedule '6 * * * *';
END $$;
select schedule from pg_task where jobname = 'fn_task';
DO $$
DECLARE
jn text;
BEGIN
SELECT jobname from pg_task where jobname = 'fn_task' into jn;
EXECUTE FORMAT('DROP TASK %I', jn);
END $$;
select jobname from pg_task where jobname = 'fn_task';
-- clean up
drop database task_dbno;
drop user task_cron;
drop task vacuum_db;
drop task valid_task_1;
drop task valid_task_2;
drop task valid_task_3;
drop task valid_task_4;