clear-queue-non-current: Work around PostgreSQL query optimizer stupidity

This commit is contained in:
Eelco Dolstra 2014-01-14 18:14:10 +01:00
parent 62809f484f
commit 6572869596

View file

@ -35,8 +35,7 @@ sub machines : Chained('admin') PathPart('machines') Args(0) {
sub clear_queue_non_current : Chained('admin') PathPart('clear-queue-non-current') Args(0) {
my ($self, $c) = @_;
my $builds = $c->model('DB::Builds')->search(
{ finished => 0, busy => 0
, id => { -not_in => \ "select build from JobsetEvalMembers where eval in (select max(id) from JobsetEvals where hasNewBuilds = 1 group by project, jobset)" }
{ id => { -in => \ "select id from Builds where id in ((select id from Builds where finished = 0 and busy = 0) except (select build from JobsetEvalMembers where eval in (select max(id) from JobsetEvals where hasNewBuilds = 1 group by project, jobset)))" }
});
my $n = cancelBuilds($c->model('DB')->schema, $builds);
$c->flash->{successMsg} = "$n builds have been cancelled.";