]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 713144: The SQL query to remove older searches from the profile_search table...
authorFrédéric Buclin <LpSolit@gmail.com>
Wed, 28 Dec 2011 11:09:29 +0000 (12:09 +0100)
committerFrédéric Buclin <LpSolit@gmail.com>
Wed, 28 Dec 2011 11:09:29 +0000 (12:09 +0100)
r=dkl a=LpSolit

Bugzilla/Search/Recent.pm

index 89d9cf6ff94792833159a5e5e34fc7740d3b87fc..ccd4a0f090e2735cd89a27a6e81466a45f9cb8d3 100644 (file)
@@ -57,14 +57,16 @@ sub create {
     my $class = shift;
     my $dbh = Bugzilla->dbh;
     $dbh->bz_start_transaction();
-    my $search = $class->SUPER::create(@_);   
+    my $search = $class->SUPER::create(@_);
+    my $user_id = $search->user_id;
 
     # Enforce there only being SAVE_NUM_SEARCHES per user.
-    my ($num_searches, $min_id) = $dbh->selectrow_array(
-        'SELECT COUNT(*), MIN(id) FROM profile_search WHERE user_id = ?',
-        undef, $search->user_id);
-    if ($num_searches > SAVE_NUM_SEARCHES) {
-        $dbh->do('DELETE FROM profile_search WHERE id = ?', undef, $min_id);
+    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));
     }
     $dbh->bz_commit_transaction();
     return $search;