Commit 9b274039 authored by Byron Jones's avatar Byron Jones

Bug 749540: Avoid database deadlocks when deleting recent searches

r=dkl, a=LpSolit
parent bcbdb846
......@@ -54,12 +54,13 @@ sub create {
my $user_id = $search->user_id;
# Enforce there only being SAVE_NUM_SEARCHES per user.
my $min_id = $dbh->selectrow_array(
'SELECT id FROM profile_search WHERE user_id = ? ORDER BY id DESC '
. $dbh->sql_limit(1, SAVE_NUM_SEARCHES), undef, $user_id);
if ($min_id) {
$dbh->do('DELETE FROM profile_search WHERE user_id = ? AND id <= ?',
undef, ($user_id, $min_id));
my @ids = @{ $dbh->selectcol_arrayref(
"SELECT id FROM profile_search WHERE user_id = ? ORDER BY id",
undef, $user_id) };
if (scalar(@ids) > SAVE_NUM_SEARCHES) {
splice(@ids, - SAVE_NUM_SEARCHES);
$dbh->do(
"DELETE FROM profile_search WHERE id IN (" . join(',', @ids) . ")");
}
$dbh->bz_commit_transaction();
return $search;
......
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