diff options
Diffstat (limited to 'sqitch/sqlite/deploy/create_outputs.sql')
-rw-r--r-- | sqitch/sqlite/deploy/create_outputs.sql | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/sqitch/sqlite/deploy/create_outputs.sql b/sqitch/sqlite/deploy/create_outputs.sql new file mode 100644 index 0000000..03f0b42 --- /dev/null +++ b/sqitch/sqlite/deploy/create_outputs.sql @@ -0,0 +1,59 @@ +-- Deploy guix-build-coordinator:create_outputs to sqlite + +PRAGMA foreign_keys = OFF; + +BEGIN; + +CREATE TABLE outputs ( + id INTEGER PRIMARY KEY NOT NULL, + output TEXT NOT NULL +); + +INSERT INTO outputs (output) SELECT DISTINCT output FROM derivation_outputs; + +CREATE INDEX outputs_output ON outputs (output); + + + + +CREATE TABLE derivation_outputs_new ( + id INTEGER PRIMARY KEY ASC, + derivation_id INTEGER NOT NULL REFERENCES derivations (id), + name TEXT NOT NULL, + output_id INTEGER NOT NULL REFERENCES outputs (id) +); + +INSERT INTO derivation_outputs_new + SELECT derivation_outputs.id, derivation_id, name, outputs.id + FROM derivation_outputs + INNER JOIN outputs + ON derivation_outputs.output = outputs.output; + +DROP TABLE derivation_outputs; +ALTER TABLE derivation_outputs_new RENAME TO derivation_outputs; + +CREATE INDEX derivation_outputs_output_id_idx + ON derivation_outputs (output_id); +CREATE UNIQUE INDEX derivation_outputs_unique_idx + ON derivation_outputs (derivation_id, name); + + +CREATE TABLE unbuilt_outputs_new ( + output_id INTEGER PRIMARY KEY REFERENCES outputs (id) +); + +UPDATE unbuilt_outputs_new SET output_id = ( + SELECT id + FROM unbuilt_outputs + INNER JOIN outputs + ON unbuilt_outputs.output = outputs.output +); + +DROP TABLE unbuilt_outputs; +ALTER TABLE unbuilt_outputs_new RENAME TO unbuilt_outputs; + +PRAGMA foreign_key_check; + +COMMIT; + +PRAGMA foreign_keys = ON; |