ALTER TABLE que_jobs RESET (fillfactor);

ALTER TABLE que_jobs DROP CONSTRAINT que_jobs_pkey; DROP INDEX que_poll_idx; DROP INDEX que_jobs_data_gin_idx;

DROP TRIGGER que_job_notify ON que_jobs; DROP FUNCTION que_job_notify(); DROP TRIGGER que_state_notify ON que_jobs; DROP FUNCTION que_state_notify(); DROP FUNCTION que_determine_job_state(que_jobs); DROP TABLE que_lockers;

DROP TABLE que_values; DROP INDEX que_jobs_args_gin_idx;

ALTER TABLE que_jobs RENAME COLUMN id TO job_id; ALTER SEQUENCE que_jobs_id_seq RENAME TO que_jobs_job_id_seq;

ALTER TABLE que_jobs RENAME COLUMN last_error_message TO last_error;

DELETE FROM que_jobs WHERE (finished_at IS NOT NULL OR expired_at IS NOT NULL);

ALTER TABLE que_jobs

DROP CONSTRAINT error_length,
DROP CONSTRAINT queue_length,
DROP CONSTRAINT job_class_length,
DROP CONSTRAINT valid_args,
DROP COLUMN finished_at,
DROP COLUMN expired_at,
ALTER args TYPE JSON using args::json;

UPDATE que_jobs SET

queue = CASE queue WHEN 'default' THEN '' ELSE queue END,
last_error = last_error || coalesce(E'\n' || last_error_backtrace, '');

ALTER TABLE que_jobs

DROP COLUMN data,
DROP COLUMN last_error_backtrace,
ALTER COLUMN args SET NOT NULL,
ALTER COLUMN args SET DEFAULT '[]',
ALTER COLUMN queue SET DEFAULT '';

ALTER TABLE que_jobs

ADD PRIMARY KEY (queue, priority, run_at, job_id);

DROP FUNCTION que_validate_tags(jsonb);