From: mozilla%colinogilvie.co.uk <> Date: Wed, 20 Jul 2005 05:41:04 +0000 (+0000) Subject: Bug 282737: Software Error from time-tracking fields during Change Columns X-Git-Tag: bugzilla-2.18.4~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=10813b53831613e92728491827b0efab4e852539;p=thirdparty%2Fbugzilla.git Bug 282737: Software Error from time-tracking fields during Change Columns Patch by Joel, Me, r=wurblzap, a=myk --- diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index d00921c3a4..3f88191761 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -101,7 +101,12 @@ sub init { push @supptables, "components AS map_components"; push @wherepart, "bugs.component_id = map_components.id"; } - + + if (grep($_ =~ /AS (actual_time|percentage_complete)$/, @$fieldsref)) { + push(@supptables, "longdescs AS ldtime"); + push(@wherepart, "ldtime.bug_id = bugs.bug_id"); + } + my $minvotes; if (defined $params->param('votes')) { my $c = trim($params->param('votes')); @@ -171,11 +176,6 @@ sub init { push(@specialchart, ["keywords", $t, $params->param('keywords')]); } - if (lsearch($fieldsref, "(SUM(ldtime.work_time)*COUNT(DISTINCT ldtime.bug_when)/COUNT(bugs.bug_id)) AS actual_time") != -1) { - push(@supptables, "longdescs AS ldtime"); - push(@wherepart, "ldtime.bug_id = bugs.bug_id"); - } - foreach my $id ("1", "2") { if (!defined ($params->param("email$id"))) { next; diff --git a/buglist.cgi b/buglist.cgi index d42ba67af4..e9408f23bc 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -680,7 +680,15 @@ foreach my $fragment (split(/,/, $order)) { # Add order columns to selectnames # The fragment has already been validated $fragment =~ s/\s+(asc|desc)$//; - $fragment =~ tr/a-zA-Z\.0-9\-_//cd; + # This fixes an issue where columns being used in the ORDER BY statement + # can have the SQL that generates the value changed to become invalid - + # mainly affects time tracking. + if ($fragment =~ / AS (\w+)/) { + $fragment = $columns->{$1}->{'name'}; + } + else { + $fragment =~ tr/a-zA-Z\.0-9\-_//cd; + } push @selectnames, $fragment; } }