From 7ae263a23aef5295373314f4798b442b372fe9d6 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 7 Oct 2009 13:40:58 +0000 Subject: [PATCH] * Make the queries more readable. --- src/lib/Hydra/Schema/Builds.pm | 51 ++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/src/lib/Hydra/Schema/Builds.pm b/src/lib/Hydra/Schema/Builds.pm index b1835208..07282d1b 100644 --- a/src/lib/Hydra/Schema/Builds.pm +++ b/src/lib/Hydra/Schema/Builds.pm @@ -212,15 +212,50 @@ sub makeSource { sub makeQueries { my ($name, $constraint) = @_; + my $joinWithStatusChange = - "natural join BuildResultInfo r " . - "left join Builds b on b.id = " . - "(select max(id) from builds c natural join buildresultinfo r2 " . - " where x.project = c.project and x.jobset = c.jobset and x.job = c.job and x.system = c.system and " . - " x.id > c.id and r.buildstatus != r2.buildstatus)"; - # Urgh, can't use "*" in the "select" here because of the status change join. - makeSource('JobStatus' . $name, "select x.id, x.finished, x.timestamp, x.project, x.jobset, x.job, x.nixname, x.description, x.drvpath, x.outpath, x.system, x.longdescription, x.license, x.homepage, x.maintainers, x.isCurrent, b.id as statusChangeId, b.timestamp as statusChangeTime from (select project, jobset, job, system, max(id) as id from Builds where finished = 1 $constraint group by project, jobset, job, system) as latest natural join Builds x $joinWithStatusChange"); - makeSource('LatestSucceeded' . $name, "select * from (select project, jobset, job, system, max(id) as id from Builds natural join BuildResultInfo where finished = 1 and buildStatus = 0 $constraint group by project, jobset, job, system) as latest natural join Builds x"); + < c.id and r.buildstatus != r2.buildstatus) +QUERY + + makeSource( + "JobStatus$name", + # Urgh, can't use "*" in the "select" here because of the status change join. + <