our %hosts;
sub mainquery () {
- our $valcond = join " OR ", map { "val = ?" } keys %hosts;
- our @params = keys %hosts;
-
our $runvarq //= db_prepare(<<END);
- SELECT flight, job, name, val, status
+ SELECT flight, job, name, status
FROM runvars
JOIN jobs USING (flight, job)
- WHERE $namecond
- AND ($valcond)
+ WHERE (name = 'host' OR name LIKE '%\_host')
+ AND val = ?
AND $flightcond
AND $restrictflight_cond
AND flight > ?
ORDER BY flight DESC
- LIMIT ($limit * 3 + 100) * ?
+ LIMIT $limit * 2
END
+ foreach my $host (sort keys %hosts) {
+ print DEBUG "MAINQUERY $host...\n";
+ $runvarq->execute($host, $minflight);
- push @params, $minflight;
- push @params, scalar keys %hosts;
-
- print DEBUG "MAINQUERY...\n";
- $runvarq->execute(@params);
-
- print DEBUG "FIRST PASS\n";
- while (my $jr= $runvarq->fetchrow_hashref()) {
- print DEBUG " $jr->{flight}.$jr->{job} ";
- push @{ $hosts{$jr->{val}} }, $jr;
+ $hosts{$host} = $runvarq->fetchall_arrayref({});
+ print DEBUG "MAINQUERY $host got ".(scalar @{ $hosts{$host} })."\n";
}
- print DEBUG "\n";
}
sub reporthost ($) {