diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2013-09-28 00:59:33 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2013-09-28 00:59:33 +0200 |
commit | 2d802ebc16003e27fe86295ccd6b7c47996c7314 (patch) | |
tree | 73225ec2b8fabac9f1ff99b824813e6588627e75 /Bugzilla | |
parent | 48bc6d3981dfedf1183a76f2ccc17d8889edaa56 (diff) | |
download | bugzilla-2d802ebc16003e27fe86295ccd6b7c47996c7314.tar.gz bugzilla-2d802ebc16003e27fe86295ccd6b7c47996c7314.tar.xz |
Bug 340160: Speed up LogActivityEntry()
r=dkl a=justdave
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/Bug.pm | 11 | ||||
-rw-r--r-- | Bugzilla/Field.pm | 13 |
2 files changed, 10 insertions, 14 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 4d2421a59..3000bd0ae 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -3953,7 +3953,11 @@ sub get_activity { # Update the bugs_activity table to reflect changes made in bugs. sub LogActivityEntry { my ($i, $col, $removed, $added, $whoid, $timestamp, $comment_id) = @_; - my $dbh = Bugzilla->dbh; + state $sth = + Bugzilla->dbh->prepare('INSERT INTO bugs_activity + (bug_id, who, bug_when, fieldid, removed, added, comment_id) + VALUES (?, ?, ?, ?, ?, ?, ?)'); + # in the case of CCs, deps, and keywords, there's a possibility that someone # might try to add or remove a lot of them at once, which might take more # space than the activity table allows. We'll solve this by splitting it @@ -3977,10 +3981,7 @@ sub LogActivityEntry { trick_taint($addstr); trick_taint($removestr); my $fieldid = get_field_id($col); - $dbh->do("INSERT INTO bugs_activity - (bug_id, who, bug_when, fieldid, removed, added, comment_id) - VALUES (?, ?, ?, ?, ?, ?, ?)", - undef, ($i, $whoid, $timestamp, $fieldid, $removestr, $addstr, $comment_id)); + $sth->execute($i, $whoid, $timestamp, $fieldid, $removestr, $addstr, $comment_id); } } diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm index c4ee77498..ebc043ab7 100644 --- a/Bugzilla/Field.pm +++ b/Bugzilla/Field.pm @@ -1324,7 +1324,7 @@ sub check_field { Description: Returns the ID of the specified field name and throws an error if this field does not exist. -Params: $name - a field name +Params: $fieldname - a field name Returns: the corresponding field ID or an error if the field name does not exist. @@ -1334,15 +1334,10 @@ Returns: the corresponding field ID or an error if the field name =cut sub get_field_id { - my ($name) = @_; - my $dbh = Bugzilla->dbh; - - trick_taint($name); - my $id = $dbh->selectrow_array('SELECT id FROM fielddefs - WHERE name = ?', undef, $name); + my $field = Bugzilla->fields({ by_name => 1 })->{$_[0]} + or ThrowCodeError('invalid_field_name', {field => $_[0]}); - ThrowCodeError('invalid_field_name', {field => $name}) unless $id; - return $id + return $field->id; } 1; |