64 lines
1.5 KiB
MySQL
64 lines
1.5 KiB
MySQL
|
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
|
||
|
);
|