From: mkanat%bugzilla.org <> Date: Thu, 6 Aug 2009 14:59:37 +0000 (+0000) Subject: Bug 508729: Cache Bugzilla::Status::BUG_STATE_OPEN X-Git-Tag: bugzilla-3.5.1~130 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c427a6f710a60ffbca41b3cca62de949f1407059;p=thirdparty%2Fbugzilla.git Bug 508729: Cache Bugzilla::Status::BUG_STATE_OPEN Patch by Max Kanat-Alexander r=LpSolit, a=LpSolit --- diff --git a/Bugzilla/Status.pm b/Bugzilla/Status.pm index 289e172605..4720dc1293 100644 --- a/Bugzilla/Status.pm +++ b/Bugzilla/Status.pm @@ -66,6 +66,7 @@ sub VALIDATORS { sub create { my $class = shift; my $self = $class->SUPER::create(@_); + delete Bugzilla->request_cache->{status_bug_state_open}; add_missing_bug_status_transitions(); return $self; } @@ -80,6 +81,7 @@ sub remove_from_db { WHERE old_status = ? OR new_status = ?', undef, $id, $id); $dbh->bz_commit_transaction(); + delete Bugzilla->request_cache->{status_bug_state_open}; } ############################### @@ -120,9 +122,12 @@ sub _check_value { ############################### sub BUG_STATE_OPEN { - # XXX - We should cache this list. my $dbh = Bugzilla->dbh; - return @{$dbh->selectcol_arrayref('SELECT value FROM bug_status WHERE is_open = 1')}; + my $cache = Bugzilla->request_cache; + $cache->{status_bug_state_open} ||= + $dbh->selectcol_arrayref('SELECT value FROM bug_status + WHERE is_open = 1'); + return @{ $cache->{status_bug_state_open} }; } # Tells you whether or not the argument is a valid "open" state.