summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
authormiketosh <michael.j.tosh@lmco.com>2011-10-23 14:18:04 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2011-10-23 14:18:04 +0200
commit5173b6cbadea03c8525218f09794b3f74ab12d96 (patch)
tree05aaf3f5230a04647ca371480dae85f974d035de /Bugzilla
parentce3970fd0a2890b88485c2723e7af1633544c741 (diff)
downloadbugzilla-5173b6cbadea03c8525218f09794b3f74ab12d96.tar.gz
bugzilla-5173b6cbadea03c8525218f09794b3f74ab12d96.tar.xz
Bug 690173: Cannot delete user accounts due to FK on audit_log
r/a=mkanat
Diffstat (limited to 'Bugzilla')
-rw-r--r--Bugzilla/DB/Schema.pm3
-rw-r--r--Bugzilla/Install/DB.pm12
-rw-r--r--Bugzilla/User.pm12
3 files changed, 26 insertions, 1 deletions
diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm
index 33527c367..6d9a33ef7 100644
--- a/Bugzilla/DB/Schema.pm
+++ b/Bugzilla/DB/Schema.pm
@@ -516,7 +516,8 @@ use constant ABSTRACT_SCHEMA => {
FIELDS => [
user_id => {TYPE => 'INT3',
REFERENCES => {TABLE => 'profiles',
- COLUMN => 'userid'}},
+ COLUMN => 'userid',
+ DELETE => 'SET NULL'}},
class => {TYPE => 'varchar(255)', NOTNULL => 1},
object_id => {TYPE => 'INT4', NOTNULL => 1},
field => {TYPE => 'varchar(64)', NOTNULL => 1},
diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm
index 5ce3c7a4e..84267de41 100644
--- a/Bugzilla/Install/DB.pm
+++ b/Bugzilla/Install/DB.pm
@@ -656,6 +656,9 @@ sub update_table_definitions {
# 2011-06-15 dkl@mozilla.com - Bug 658929
_migrate_disabledtext_boolean();
+ # 2011-10-11 miketosh - Bug 690173
+ _on_delete_set_null_for_audit_log_userid();
+
################################################################
# New --TABLE-- changes should go *** A B O V E *** this point #
################################################################
@@ -3602,6 +3605,15 @@ sub _rename_tags_to_tag {
}
}
+sub _on_delete_set_null_for_audit_log_userid {
+ my $dbh = Bugzilla->dbh;
+ my $fk = $dbh->bz_fk_info('audit_log', 'user_id');
+ if ($fk and !defined $fk->{DELETE}) {
+ $fk->{DELETE} = 'SET NULL';
+ $dbh->bz_alter_fk('audit_log', 'user_id', $fk);
+ }
+}
+
1;
__END__
diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm
index 48ce41a57..849c1d915 100644
--- a/Bugzilla/User.pm
+++ b/Bugzilla/User.pm
@@ -1763,6 +1763,18 @@ sub mail_settings {
return $self->{'mail_settings'};
}
+sub has_audit_entries {
+ my $self = shift;
+ my $dbh = Bugzilla->dbh;
+
+ if (!exists $self->{'has_audit_entries'}) {
+ $self->{'has_audit_entries'} =
+ $dbh->selectrow_array('SELECT 1 FROM audit_log WHERE user_id = ? ' .
+ $dbh->sql_limit(1), undef, $self->id);
+ }
+ return $self->{'has_audit_entries'};
+}
+
sub is_insider {
my $self = shift;