pastebin/migrations/2019-09-21-152245_remove-shared-wrappers/down.sql
2019-09-21 18:17:09 +02:00

64 lines
1.5 KiB
SQL

CREATE TABLE wrappers (
wrapper_id serial PRIMARY KEY,
language_id int NOT NULL REFERENCES languages,
label text NOT NULL,
code text NOT NULL,
ordering int NOT NULL,
is_formatter boolean NOT NULL DEFAULT FALSE,
is_asm boolean NOT NULL DEFAULT false,
identifier text NOT NULL,
UNIQUE (language_id, ordering)
);
ALTER TABLE
wrappers RENAME TO shared_wrappers;
WITH moved_wrappers AS (
INSERT INTO
shared_wrappers (
language_id,
label,
code,
ordering,
is_formatter,
is_asm,
identifier
)
SELECT
language_id,
implementation_wrappers.label,
code,
ordering,
is_formatter,
is_asm,
implementation_wrappers.identifier
FROM
implementation_wrappers
JOIN implementations USING (implementation_id)
JOIN languages USING (language_id)
WHERE
languages.identifier IN ('perl6', 'python3', 'rust', 'sh', 'sqlite')
RETURNING language_id
),
deleted_implementation_wrappers AS (
DELETE FROM
implementation_wrappers
WHERE
implementation_wrapper_id IN (
SELECT
implementation_wrapper_id
FROM
moved_wrappers
JOIN implementations USING (language_id)
JOIN implementation_wrappers USING (implementation_id)
)
RETURNING implementation_id
)
DELETE FROM
implementations
WHERE
implementation_id IN (
SELECT
implementation_id
FROM
deleted_implementation_wrappers
);