1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
CREATE OR REPLACE PROCEDURE migrate_schedule_config()
LANGUAGE plpgsql
AS $$
DECLARE
row record;
frequency_json text;
BEGIN
FOR row IN (SELECT id, start, frequency, config FROM schedule)
LOOP
IF NOT CAST(POSITION('frequencyType' IN row.config) AS bool) THEN
frequency_json = CONCAT(
',"frequencyType":"\\ipl\\Scheduler\\Cron","frequency":"{',
'\"expression\":\"@', row.frequency,
'\",\"start\":\"', TO_CHAR(TO_TIMESTAMP(row.start / 1000) AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US UTC'),
'\"}"'
);
UPDATE schedule SET config = OVERLAY(row.config PLACING frequency_json FROM LENGTH(row.config) FOR 0) WHERE id = row.id;
END IF;
END LOOP;
END;
$$;
CALL migrate_schedule_config();
DROP PROCEDURE migrate_schedule_config;
ALTER TABLE schedule
DROP COLUMN start,
DROP COLUMN frequency;
CREATE TYPE boolenum AS ENUM ('n', 'y');
CREATE TABLE reporting_schema (
id serial,
version varchar(64) NOT NULL,
timestamp bigint NOT NULL,
success boolenum DEFAULT NULL,
reason text DEFAULT NULL,
CONSTRAINT pk_reporting_schema PRIMARY KEY (id),
CONSTRAINT idx_reporting_schema_version UNIQUE (version)
);
INSERT INTO reporting_schema (version, timestamp, success, reason)
VALUES ('1.0.0', unix_timestamp() * 1000, 'y', NULL);
|