diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cuirass/database.scm | 2 | ||||
-rw-r--r-- | src/schema.sql | 3 | ||||
-rw-r--r-- | src/sql/upgrade-6.sql | 47 |
3 files changed, 50 insertions, 2 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm index 1643916..14cbbda 100644 --- a/src/cuirass/database.scm +++ b/src/cuirass/database.scm @@ -540,7 +540,7 @@ VALUES (" ;; If we get a unique-constraint-failed error, that means we have ;; already inserted the same build. That happens when several jobs ;; produce the same derivation, and we can ignore it. - (on SQLITE_CONSTRAINT_PRIMARYKEY + (on SQLITE_CONSTRAINT_UNIQUE => (sqlite-exec db "ROLLBACK;") #f)))) diff --git a/src/schema.sql b/src/schema.sql index cd67530..1104551 100644 --- a/src/schema.sql +++ b/src/schema.sql @@ -51,7 +51,8 @@ CREATE TABLE Outputs ( ); CREATE TABLE Builds ( - derivation TEXT NOT NULL PRIMARY KEY, + id INTEGER NOT NULL PRIMARY KEY, + derivation TEXT NOT NULL UNIQUE, evaluation INTEGER NOT NULL, job_name TEXT NOT NULL, system TEXT NOT NULL, diff --git a/src/sql/upgrade-6.sql b/src/sql/upgrade-6.sql new file mode 100644 index 0000000..0b25aa5 --- /dev/null +++ b/src/sql/upgrade-6.sql @@ -0,0 +1,47 @@ +BEGIN TRANSACTION; + +ALTER TABLE Builds RENAME TO OldBuilds; + +CREATE TABLE Builds ( + id INTEGER NOT NULL PRIMARY KEY, + derivation TEXT NOT NULL UNIQUE, + evaluation INTEGER NOT NULL, + job_name TEXT NOT NULL, + system TEXT NOT NULL, + nix_name TEXT NOT NULL, + log TEXT NOT NULL, + status INTEGER NOT NULL, + timestamp INTEGER NOT NULL, + starttime INTEGER NOT NULL, + stoptime INTEGER NOT NULL, + FOREIGN KEY (evaluation) REFERENCES Evaluations (id) +); + +INSERT INTO Builds( + id, + derivation, + evaluation, + job_name, + system, + nix_name, + log, + status, + timestamp, + starttime, + stoptime +) SELECT rowid, + derivation, + evaluation, + job_name, + system, + nix_name, + log, + status, + timestamp, + starttime, + stoptime + FROM OldBuilds; + +DROP TABLE OldBuilds; + +COMMIT; |