diff options
author | dkl%redhat.com <> | 2004-07-08 11:19:42 +0200 |
---|---|---|
committer | dkl%redhat.com <> | 2004-07-08 11:19:42 +0200 |
commit | a46c91543e36ebf4644e022453b47d381220df2e (patch) | |
tree | 7b1ecc46a6878f9123f18909dc2a1d86104e83d2 | |
parent | e09a3eae0f1068e40ae8e09f4ba7e090fd4b54e4 (diff) | |
download | bugzilla-a46c91543e36ebf4644e022453b47d381220df2e.tar.gz bugzilla-a46c91543e36ebf4644e022453b47d381220df2e.tar.xz |
Patch for bug 190432; saving a named query uses REPLACE INTO (not ANSI); patch by David Lawrence <dkl@redhat.com>; r=vladd; a=justdave
-rwxr-xr-x | buglist.cgi | 25 | ||||
-rwxr-xr-x | checksetup.pl | 10 | ||||
-rwxr-xr-x | query.cgi | 4 |
3 files changed, 30 insertions, 9 deletions
diff --git a/buglist.cgi b/buglist.cgi index 2607628d0..caf094312 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -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(); diff --git a/checksetup.pl b/checksetup.pl index 3c4793407..c9ced42ec 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -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"); + } } @@ -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"); |