Commit 2d802ebc authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 340160: Speed up LogActivityEntry()

r=dkl a=justdave
parent 48bc6d39
...@@ -3953,7 +3953,11 @@ sub get_activity { ...@@ -3953,7 +3953,11 @@ sub get_activity {
# Update the bugs_activity table to reflect changes made in bugs. # Update the bugs_activity table to reflect changes made in bugs.
sub LogActivityEntry { sub LogActivityEntry {
my ($i, $col, $removed, $added, $whoid, $timestamp, $comment_id) = @_; 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 # 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 # 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 # space than the activity table allows. We'll solve this by splitting it
...@@ -3977,10 +3981,7 @@ sub LogActivityEntry { ...@@ -3977,10 +3981,7 @@ sub LogActivityEntry {
trick_taint($addstr); trick_taint($addstr);
trick_taint($removestr); trick_taint($removestr);
my $fieldid = get_field_id($col); my $fieldid = get_field_id($col);
$dbh->do("INSERT INTO bugs_activity $sth->execute($i, $whoid, $timestamp, $fieldid, $removestr, $addstr, $comment_id);
(bug_id, who, bug_when, fieldid, removed, added, comment_id)
VALUES (?, ?, ?, ?, ?, ?, ?)",
undef, ($i, $whoid, $timestamp, $fieldid, $removestr, $addstr, $comment_id));
} }
} }
......
...@@ -1324,7 +1324,7 @@ sub check_field { ...@@ -1324,7 +1324,7 @@ sub check_field {
Description: Returns the ID of the specified field name and throws Description: Returns the ID of the specified field name and throws
an error if this field does not exist. 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 Returns: the corresponding field ID or an error if the field name
does not exist. does not exist.
...@@ -1334,15 +1334,10 @@ Returns: the corresponding field ID or an error if the field name ...@@ -1334,15 +1334,10 @@ Returns: the corresponding field ID or an error if the field name
=cut =cut
sub get_field_id { sub get_field_id {
my ($name) = @_; my $field = Bugzilla->fields({ by_name => 1 })->{$_[0]}
my $dbh = Bugzilla->dbh; or ThrowCodeError('invalid_field_name', {field => $_[0]});
trick_taint($name);
my $id = $dbh->selectrow_array('SELECT id FROM fielddefs
WHERE name = ?', undef, $name);
ThrowCodeError('invalid_field_name', {field => $name}) unless $id; return $field->id;
return $id
} }
1; 1;
......
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