From d8e58467c5594282ccf42356636d5ac67f1e64e9 Mon Sep 17 00:00:00 2001 From: "mkanat%kerio.com" <> Date: Tue, 22 Mar 2005 17:01:22 +0000 Subject: Bug 287138: INSERT IGNORE is not ANSI SQL Patch By Tomas Kopal r=mkanat, a=justdave --- editgroups.cgi | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/editgroups.cgi b/editgroups.cgi index c352908bb..88099b543 100755 --- a/editgroups.cgi +++ b/editgroups.cgi @@ -57,19 +57,24 @@ sub RederiveRegexp ($$) my $gid = shift; my $dbh = Bugzilla->dbh; my $sth = $dbh->prepare("SELECT userid, login_name FROM profiles"); - my $sthadd = $dbh->prepare("INSERT IGNORE INTO user_group_map - (user_id, group_id, grant_type, isbless) - VALUES (?, ?, ?, 0)"); + my $sthqry = $dbh->prepare("SELECT 1 FROM user_group_map + WHERE user_id = ? AND group_id = ? + AND grant_type = ? and isbless = 0"); + my $sthadd = $dbh->prepare("INSERT INTO user_group_map + (user_id, group_id, grant_type, isbless) + VALUES (?, ?, ?, 0)"); my $sthdel = $dbh->prepare("DELETE FROM user_group_map - WHERE user_id = ? AND group_id = ? - AND grant_type = ? and isbless = 0"); + WHERE user_id = ? AND group_id = ? + AND grant_type = ? and isbless = 0"); $sth->execute(); while (my ($uid, $login) = $sth->fetchrow_array()) { + my $present = $dbh->selectrow_array($sthqry, undef, + $uid, $gid, GRANT_REGEXP); if (($regexp =~ /\S+/) && ($login =~ m/$regexp/i)) { - $sthadd->execute($uid, $gid, GRANT_REGEXP); + $sthadd->execute($uid, $gid, GRANT_REGEXP) unless $present; } else { - $sthdel->execute($uid, $gid, GRANT_REGEXP); + $sthdel->execute($uid, $gid, GRANT_REGEXP) if $present; } } } -- cgit v1.2.3-24-g4f1b