# - keywords
# - longdescs
# - votes
+ # Also included are custom multi-select fields.
# Also, the attach_data table uses attachments.attach_id as a foreign
# key, and so indirectly depends on a bug deletion too.
$dbh->do("DELETE FROM bugs WHERE bug_id = ?", undef, $bug_id);
$dbh->do("DELETE FROM longdescs WHERE bug_id = ?", undef, $bug_id);
+ # Delete entries from custom multi-select fields.
+ my @multi_selects = Bugzilla->get_fields({custom => 1, type => FIELD_TYPE_MULTI_SELECT});
+
+ foreach my $field (@multi_selects) {
+ $dbh->do("DELETE FROM bug_" . $field->name . " WHERE bug_id = ?", undef, $bug_id);
+ }
+
$dbh->bz_commit_transaction();
# The bugs_fulltext table doesn't support transactions.
$dbh->bz_start_transaction();
+ # Include custom multi-select fields to the list.
+ my @multi_selects = Bugzilla->get_fields({custom => 1, type => FIELD_TYPE_MULTI_SELECT});
+ my @addl_fields = map { 'bug_' . $_->name . '/' } @multi_selects;
+
foreach my $pair ('attachments/', 'bug_group_map/', 'bugs_activity/',
'bugs_fulltext/', 'cc/',
'dependencies/blocked', 'dependencies/dependson',
'duplicates/dupe', 'duplicates/dupe_of',
- 'flags/', 'keywords/', 'longdescs/', 'votes/') {
-
+ 'flags/', 'keywords/', 'longdescs/', 'votes/',
+ @addl_fields)
+ {
my ($table, $field) = split('/', $pair);
$field ||= "bug_id";
["flagexclusions", "type_id"],
["flaginclusions", "type_id"]);
+# Include custom multi-select fields to the list.
+my @multi_selects = Bugzilla->get_fields({custom => 1, type => FIELD_TYPE_MULTI_SELECT});
+my @addl_fields = map { ['bug_' . $_->name, 'bug_id'] } @multi_selects;
+
CrossCheck("bugs", "bug_id",
["bugs_activity", "bug_id"],
["bug_group_map", "bug_id"],
["votes", "bug_id"],
["keywords", "bug_id"],
["duplicates", "dupe_of", "dupe"],
- ["duplicates", "dupe", "dupe_of"]);
+ ["duplicates", "dupe", "dupe_of"],
+ @addl_fields);
CrossCheck("groups", "id",
["bug_group_map", "group_id"],