* Remove the triggers to simulate foreign key constraints on SQLite,
[?]
Mar 5, 2010, 10:33 AM
7Z7HOZQ3JN5OW2WEU4NWE2XTUWAOHMWDQDJIKKO5KK2ZQTDNJGAACDependencies
- [2]
E2TOU3L6* More indices. - [3]
2I2ZX6JB* Make the "latest succeeded" query (used by the "latest" channel) - [4]
6QRHXIM3* Speed up the jobset index page. Especially the query to get the - [5]
RAKTHYAI* In the job status and error pages, show when the status of a job - [6]
MI4IMCD3 - [7]
RH37XKJ2 - [8]
A6FXZPKE* Another essential index. - [9]
KN3VYE5P* Cleaned up the foreign key constraints. - [10]
S6OISBQ3* Mark the "current" builds in a jobset, i.e. those corresponding to - [*]
N22GPKYT* Put info about logs / build products in the DB. - [*]
RBNQKATL* Adding persistant releases. A release is a named set of builds. - [*]
T2232OBS* Add some DB indices to make the /releases page much faster.
Change contents
- edit in src/sql/hydra.sql at line 422
- edit in src/sql/hydra.sql at line 430[13.5025][14.2211]
- edit in src/sql/hydra.sql at line 457[3.58]→[3.8636:10936](∅→∅),[2.649]→[3.8636:10936](∅→∅),[3.3114]→[3.8636:10936](∅→∅),[3.6014]→[3.8636:10936](∅→∅)
#ifdef SQLITE-- Emulate some "on delete/update cascade" foreign key constraints,-- which SQLite doesn't support yet.create trigger cascadeBuildDeletionbefore delete on Buildsfor each row begindelete from BuildSchedulingInfo where id = old.id;delete from BuildResultInfo where id = old.id;delete from BuildInputs where build = old.id;delete from BuildProducts where build = old.id;delete from BuildSteps where build = old.id;end;create trigger cascadeProjectUpdateupdate of name on Projectsfor each row beginupdate Jobsets set project = new.name where project = old.name;update JobsetInputs set project = new.name where project = old.name;update JobsetInputAlts set project = new.name where project = old.name;update Builds set project = new.name where project = old.name;update Views set project = new.name where project = old.name;update ViewJobs set project = new.name where project = old.name;end;create trigger cascadeJobsetUpdateupdate of name on Jobsetsfor each row beginupdate JobsetInputs set jobset = new.name where project = old.project and jobset = old.name;update JobsetInputAlts set jobset = new.name where project = old.project and jobset = old.name;update Builds set jobset = new.name where project = old.project and jobset = old.name;end;create trigger cascadeJobsetInputUpdateupdate of name on JobsetInputsfor each row beginupdate JobsetInputAlts set input = new.name where project = old.project and jobset = old.jobset and input = old.name;end;create trigger cascadeJobsetInputDeletebefore delete on JobsetInputsfor each row begindelete from JobsetInputAlts where project = old.project and jobset = old.jobset and input = old.name;end;create trigger cascadeUserDeletebefore delete on Usersfor each row begindelete from UserRoles where userName = old.userName;end;create trigger cascadeViewDeletebefore delete on Viewsfor each row begindelete from ViewJobs where project = old.project and view_ = old.name;end;create trigger cascadeViewUpdateupdate of name on Viewsfor each row beginupdate ViewJobs set view_ = new.name where project = old.project and view_ = old.name;end;#endif