summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkl%redhat.com <>2004-07-08 11:19:42 +0200
committerdkl%redhat.com <>2004-07-08 11:19:42 +0200
commita46c91543e36ebf4644e022453b47d381220df2e (patch)
tree7b1ecc46a6878f9123f18909dc2a1d86104e83d2
parente09a3eae0f1068e40ae8e09f4ba7e090fd4b54e4 (diff)
downloadbugzilla-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-xbuglist.cgi25
-rwxr-xr-xchecksetup.pl10
-rwxr-xr-xquery.cgi4
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");
+ }
}
diff --git a/query.cgi b/query.cgi
index c97c07eed..cf601b716 100755
--- 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");