From 65cfd8b5587109693762e9d2cd6e7e651eb79fdd Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Thu, 28 Dec 2006 08:26:11 +0000 Subject: Bug 365179: Performance problems with multiple fields chosen in the "where one or more of the following changed" box - Patch by Frédéric Buclin r/a=justdave MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/Search.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'Bugzilla') diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index c20abc418..9215dc70d 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -333,14 +333,14 @@ sub init { push(@l, "bugs.creation_ts <= $sql_chto") if($sql_chto); $bug_creation_clause = "(" . join(' AND ', @l) . ")"; } 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 # is [Bug creation] (in which case we don't need bugs_activity). 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)"); if($sql_chfrom) { $extra .= " AND actcheck.bug_when >= $sql_chfrom"; @@ -352,7 +352,8 @@ sub init { $extra .= " AND actcheck.added = $sql_chvalue"; } 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 -- cgit v1.2.3-24-g4f1b