Commit 65cfd8b5 authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 365179: Performance problems with multiple fields chosen in the "where one…

Bug 365179: Performance problems with multiple fields chosen in the "where one or more of the following changed" box - Patch by Fré©ric Buclin <LpSolit@gmail.com> r/a=justdave
parent 5bc2bc89
...@@ -333,14 +333,14 @@ sub init { ...@@ -333,14 +333,14 @@ sub init {
push(@l, "bugs.creation_ts <= $sql_chto") if($sql_chto); push(@l, "bugs.creation_ts <= $sql_chto") if($sql_chto);
$bug_creation_clause = "(" . join(' AND ', @l) . ")"; $bug_creation_clause = "(" . join(' AND ', @l) . ")";
} else { } else {
push(@actlist, "actcheck.fieldid = " . get_field_id($f)); push(@actlist, get_field_id($f));
} }
} }
# @actlist won't have any elements if the only field being searched # @actlist won't have any elements if the only field being searched
# is [Bug creation] (in which case we don't need bugs_activity). # is [Bug creation] (in which case we don't need bugs_activity).
if(@actlist) { if(@actlist) {
my $extra = " AND actcheck.bug_id = bugs.bug_id"; my $extra = " actcheck.bug_id = bugs.bug_id";
push(@list, "(actcheck.bug_when IS NOT NULL)"); push(@list, "(actcheck.bug_when IS NOT NULL)");
if($sql_chfrom) { if($sql_chfrom) {
$extra .= " AND actcheck.bug_when >= $sql_chfrom"; $extra .= " AND actcheck.bug_when >= $sql_chfrom";
...@@ -352,7 +352,8 @@ sub init { ...@@ -352,7 +352,8 @@ sub init {
$extra .= " AND actcheck.added = $sql_chvalue"; $extra .= " AND actcheck.added = $sql_chvalue";
} }
push(@supptables, "LEFT JOIN bugs_activity AS actcheck " . push(@supptables, "LEFT JOIN bugs_activity AS actcheck " .
"ON (" . join(" OR ", @actlist) . "$extra )"); "ON $extra AND actcheck.fieldid IN (" .
join(",", @actlist) . ")");
} }
# Now that we're done using @list to determine if there are any # Now that we're done using @list to determine if there are any
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment