Rather than doing one query for each entry in @hostvarcols, do one
query for all the relevant runvars. This is quite a bit faster and
will enable us to use the cache.
This is correct because @hostvarcols was the union of all the host
runvars, so this produces the same answers as the individual queries.
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
}
my $hostq= db_prepare(<<END);
- SELECT val FROM runvars WHERE flight=? AND job=? AND name=?
+ SELECT name, val
+ FROM runvars
+ WHERE flight=?
+ AND job=?
+ AND (name = 'host' OR name LIKE '%\\_host')
END
while (my $f= $flightsq->fetchrow_hashref()) {
my $ri= report_run_getinfo($f);
$ri->{Hosts} = { };
- foreach my $hostvar (@hostvarcols) {
- $hostq->execute($f->{flight}, $f->{job}, $hostvar);
- my ($host) = $hostq->fetchrow_array();
+ $hostq->execute($f->{flight}, $f->{job});
+ while (my ($hostvar,$host) = $hostq->fetchrow_array()) {
$ri->{Hosts}{$hostvar} = $host;
}