]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Patch for bug 190432; saving a named query uses REPLACE INTO (not ANSI); patch by...
authordkl%redhat.com <>
Thu, 8 Jul 2004 09:19:42 +0000 (09:19 +0000)
committerdkl%redhat.com <>
Thu, 8 Jul 2004 09:19:42 +0000 (09:19 +0000)
buglist.cgi
checksetup.pl
query.cgi

index 2607628d02b6fbdd4d2a56ef761c112aab403f5c..caf0943128eb242dbc14bcc857868752e85eb5d4 100755 (executable)
@@ -341,9 +341,22 @@ elsif (($::FORM{'cmdtype'} eq "doit") && $::FORM{'remtype'}) {
         my $userid = DBNameToIdAndCheck($::COOKIE{"Bugzilla_login"});
         my $qname = SqlQuote($::defaultqueryname);
         my $qbuffer = SqlQuote($::buffer);
-        SendSQL("REPLACE INTO namedqueries (userid, name, query)
-                 VALUES ($userid, $qname, $qbuffer)");
-                 
+
+        SendSQL("LOCK TABLES namedqueries WRITE");
+
+        SendSQL("SELECT userid FROM namedqueries WHERE userid = $userid " .
+        "AND name = $qname");
+        my $result = FetchOneColumn();
+        if ($result) {
+            SendSQL("UPDATE namedqueries SET query = $qbuffer " .
+                    "WHERE userid = $userid AND name = $qname");
+        } else {
+            SendSQL("INSERT INTO namedqueries (userid, name, query, linkinfooter) VALUES " .
+                    "($userid, $qname, $qbuffer, 0)");
+        }
+
+        SendSQL("UNLOCK TABLES");
+
         $vars->{'message'} = "buglist_new_default_query";
     }
     elsif ($::FORM{'remtype'} eq "asnamed") {
@@ -369,6 +382,8 @@ elsif (($::FORM{'cmdtype'} eq "doit") && $::FORM{'remtype'}) {
             $vars->{'message'} = "buglist_updated_named_query";
         }
 
+        SendSQL("LOCK TABLES namedqueries WRITE");
+
         SendSQL("SELECT query FROM namedqueries WHERE userid = $userid AND name = $qname");
         if (FetchOneColumn()) {
             SendSQL("UPDATE  namedqueries
@@ -376,10 +391,12 @@ elsif (($::FORM{'cmdtype'} eq "doit") && $::FORM{'remtype'}) {
                       WHERE  userid = $userid AND name = $qname");
         }
         else {
-            SendSQL("REPLACE INTO namedqueries (userid, name, query, linkinfooter)
+            SendSQL("INSERT INTO namedqueries (userid, name, query, linkinfooter)
                      VALUES ($userid, $qname, $qbuffer, $tofooter)");
         }
 
+        SendSQL("UNLOCK TABLES");
+
         # Make sure to invalidate any cached query data, so that the footer is
         # correctly displayed
         Bugzilla->user->flush_queries_cache();
index 3c4793407daf6e8b229e3d355f0ed27f95f000cf..c9ced42ecf0863595750be44a77857f5e5e82b4f 100755 (executable)
@@ -2094,12 +2094,14 @@ sub AddFDef ($$$) {
     my ($fieldid) = ($sth->fetchrow_array());
     if (!$fieldid) {
         $fieldid = 'NULL';
-    }
-
-    $dbh->do("REPLACE INTO fielddefs " .
+        $dbh->do("INSERT INTO fielddefs " .
              "(fieldid, name, description, mailhead, sortkey) VALUES " .
              "($fieldid, $name, $description, $mailhead, $headernum)");
-    $headernum++;
+        $headernum++;
+    } else {
+        $dbh->do("UPDATE fielddefs SET name = $name, description = $description, " .
+                 "mailhead = $mailhead WHERE fieldid = $fieldid");
+    }
 }
 
 
index c97c07eed0bbda36262a626491fefc85b8de78c6..cf601b7166a4cfb1baf316854deccdc5a9223bc1 100755 (executable)
--- a/query.cgi
+++ b/query.cgi
@@ -84,14 +84,16 @@ if ($user) {
             my ($name, $cookiename, $value) = (@$ref);
             if ($value) {
                 my $qname = SqlQuote($name);
+                SendSQL("LOCK TABLES namedqueries WRITE");
                 SendSQL("SELECT query FROM namedqueries " .
                         "WHERE userid = $userid AND name = $qname");
                 my $query = FetchOneColumn();
                 if (!$query) {
-                    SendSQL("REPLACE INTO namedqueries " .
+                    SendSQL("INSERT INTO namedqueries " .
                             "(userid, name, query) VALUES " .
                             "($userid, $qname, " . SqlQuote($value) . ")");
                 }
+                SendSQL("UNLOCK TABLES");
             }
             $cgi->send_cookie(-name => $cookiename,
                               -expires => "Fri, 01-Jan-2038 00:00:00 GMT");