Bug 340160: Speed up LogActivityEntry()
r=dkl a=justdave git-svn-id: svn://10.0.0.236/trunk@265042 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
d77972f21d
commit
bad34e0a05
@ -1 +1 @@
|
|||||||
8763
|
8764
|
||||||
@ -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 {
|
|||||||
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 {
|
|||||||
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
|
|||||||
=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);
|
return $field->id;
|
||||||
my $id = $dbh->selectrow_array('SELECT id FROM fielddefs
|
|
||||||
WHERE name = ?', undef, $name);
|
|
||||||
|
|
||||||
ThrowCodeError('invalid_field_name', {field => $name}) unless $id;
|
|
||||||
return $id
|
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user