summaryrefslogtreecommitdiffstats
path: root/scripts/nuke-bugs.pl
blob: 35774ff8d0bd8c24cbe64303f75bd8419ff4a61f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/perl -w
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.

use strict;

use FindBin qw($RealBin);
use lib ("$RealBin/..", "$RealBin/../lib", "$RealBin/../local/lib/perl5");

use Bugzilla;
use Bugzilla::Constants;

use Getopt::Long;

# This SQL is designed to delete the bugs and other activity in a Bugzilla database
# so that one can use for development purposes or to start using it as a fresh installation.
# Other data will be retained such as products, versions, flags, profiles, etc.

$| = 1;
my $trace = 0;

GetOptions("trace" => \$trace) || exit;

my $dbh = Bugzilla->dbh;

$dbh->{TraceLevel} = 1 if $trace;

print <<EOF;
WARNING - This will delete all bugs, hit <enter> to continue or <ctrl-c> to cancel - WARNING
EOF
getc();

Bugzilla->usage_mode(USAGE_MODE_CMDLINE);

$dbh->bz_start_transaction();

print "Deleting all bug data...\n";

delete_from_table('bug_group_map');
delete_from_table('bugs_activity');
delete_from_table('cc');
delete_from_table('dependencies');
delete_from_table('duplicates');
delete_from_table('flags');
delete_from_table('keywords');
delete_from_table('attach_data');
delete_from_table('attachments');
delete_from_table('bug_group_map');
delete_from_table('bugs');
delete_from_table('longdescs');

$dbh->do($dbh->_bz_real_schema->get_set_serial_sql('bugs', 'bug_id', 1));

$dbh->bz_commit_transaction();

# This has to happen outside of the transaction
$dbh->do("DELETE FROM bugs_fulltext");

print "All done!\n";

sub delete_from_table {
    my $table = shift;
    print "Deleting from $table...";
    $dbh->do("DELETE FROM $table");
    print "done.\n";
}