summaryrefslogtreecommitdiffstats
path: root/checksetup.pl
diff options
context:
space:
mode:
authormkanat%kerio.com <>2005-03-12 04:36:47 +0100
committermkanat%kerio.com <>2005-03-12 04:36:47 +0100
commit3dd2ede0036b42fa7b183a8cdbed3786e5ed305f (patch)
treee02a59e95078f7a9f4d77ba79359b91684d1cd16 /checksetup.pl
parent4adb66027bc5424c10d5f829b6de20867bd4f015 (diff)
downloadbugzilla-3dd2ede0036b42fa7b183a8cdbed3786e5ed305f.tar.gz
bugzilla-3dd2ede0036b42fa7b183a8cdbed3786e5ed305f.tar.xz
Bug 280856: some table definitions are altered *after* the --TABLE-- limit in checksetup.pl
Patch By Max Kanat-Alexander <mkanat@kerio.com> r=glob, a=myk
Diffstat (limited to 'checksetup.pl')
-rwxr-xr-xchecksetup.pl373
1 files changed, 185 insertions, 188 deletions
diff --git a/checksetup.pl b/checksetup.pl
index b2b6cf333..1d3f278e8 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -1865,8 +1865,13 @@ unless ($sth->rows) {
undef, $product_id, '---', 0);
}
-
-
+# Create a default classification if one does not exist
+my $class_count =
+ $dbh->selectrow_array("SELECT COUNT(*) FROM classifications");
+if (!$class_count) {
+ $dbh->do("INSERT INTO classifications (name,description) " .
+ "VALUES('Unclassified','Unassigned to any classifications')");
+}
###########################################################################
# Update the tables to the current definition
@@ -3564,6 +3569,9 @@ if ($dbh->bz_get_field_def("user_group_map", "isderived")) {
$sth2->execute($uid, $gid);
}
}
+
+ # Make sure groups get rederived
+ $dbh->do("UPDATE groups SET last_changed = NOW() WHERE name = 'admin'");
}
# 2004-07-03 - Make it possible to disable flags without deleting them
@@ -3648,6 +3656,178 @@ if (!$dbh->bz_get_field_def('fielddefs', 'obsolete')) {
OR name = 'assignee_accessible'");
}
+# Add fulltext indexes for bug summaries and descriptions/comments.
+if (!defined $dbh->bz_get_index_def('bugs', 'short_desc')) {
+ print "Adding full-text index for short_desc column in bugs table...\n";
+ $dbh->do('ALTER TABLE bugs ADD FULLTEXT (short_desc)');
+}
+if (!defined $dbh->bz_get_index_def('longdescs', 'thetext')) {
+ print "Adding full-text index for thetext column in longdescs table...\n";
+ $dbh->do('ALTER TABLE longdescs ADD FULLTEXT (thetext)');
+}
+
+# 2002 November, myk@mozilla.org, bug 178841:
+#
+# Convert the "attachments.filename" column from a ridiculously large
+# "mediumtext" to a much more sensible "varchar(100)". Also takes
+# the opportunity to remove paths from existing filenames, since they
+# shouldn't be there for security. Buggy browsers include them,
+# and attachment.cgi now takes them out, but old ones need converting.
+#
+{
+ my $ref = $dbh->bz_get_field_def("attachments", "filename");
+ if ($ref->[1] ne 'varchar(100)') {
+ print "Removing paths from filenames in attachments table...\n";
+
+ $sth = $dbh->prepare("SELECT attach_id, filename FROM attachments " .
+ "WHERE " . $dbh->sql_position(q{'/'}, 'filename') .
+ " OR " . $dbh->sql_position(q{'\\\\'}, 'filename'));
+ $sth->execute;
+
+ while (my ($attach_id, $filename) = $sth->fetchrow_array) {
+ $filename =~ s/^.*[\/\\]//;
+ my $quoted_filename = $dbh->quote($filename);
+ $dbh->do("UPDATE attachments SET filename = $quoted_filename " .
+ "WHERE attach_id = $attach_id");
+ }
+
+ print "Done.\n";
+
+ print "Resizing attachments.filename from mediumtext to varchar(100).\n";
+ $dbh->bz_change_field_type("attachments", "filename", "varchar(100) not null");
+ }
+}
+
+# 2003-01-11, burnus@net-b.de, bug 184309
+# Support for quips approval
+$dbh->bz_add_field('quips', 'approved', 'tinyint(1) NOT NULL DEFAULT 1');
+
+# 2002-12-20 Bug 180870 - remove manual shadowdb replication code
+if ($dbh->bz_table_exists('shadowlog')) {
+ print "Removing shadowlog table\n";
+ $dbh->do("DROP TABLE shadowlog");
+}
+
+# 2003-04-27 - bugzilla@chimpychompy.org (GavinS)
+#
+# Bug 180086 (http://bugzilla.mozilla.org/show_bug.cgi?id=180086)
+#
+# Renaming the 'count' column in the votes table because Sybase doesn't
+# like it
+if ($dbh->bz_get_field_def('votes', 'count')) {
+ # 2003-04-24 - myk@mozilla.org/bbaetz@acm.org, bug 201018
+ # Force all cached groups to be updated at login, due to security bug
+ # Do this here, inside the next schema change block, so that it doesn't
+ # get invalidated on every checksetup run.
+ $dbh->do("UPDATE profiles SET refreshed_when='1900-01-01 00:00:00'");
+
+ $dbh->bz_rename_field('votes', 'count', 'vote_count');
+}
+
+# 2004/02/15 - Summaries shouldn't be null - see bug 220232
+if ($dbh->bz_get_field_def('bugs', 'short_desc')->[2]) { # if it allows nulls
+ $dbh->do("UPDATE bugs SET short_desc = '' WHERE short_desc IS NULL");
+ $dbh->bz_change_field_type('bugs', 'short_desc', 'mediumtext not null');
+}
+
+# 2004-12-29 - Flag email code is broke somewhere, and doesn't treat a lack
+# of FlagRequestee/er emailflags as 'on' like it's supposed to. Easiest way
+# to fix this is to make sure that everyone has these set. (bug 275599).
+# While we're at it, let's make sure everyone has some emailprefs set,
+# whether or not they've ever visited userprefs.cgi (bug 108870). In fact,
+# do this first so that the second check gets fewer hits.
+#
+my $emailflags_count = 0;
+$sth = $dbh->prepare("SELECT userid FROM profiles " .
+ "WHERE emailflags LIKE '' " .
+ "OR emailflags IS NULL");
+$sth->execute();
+while (my ($userid) = $sth->fetchrow_array()) {
+ $dbh->do("UPDATE profiles SET emailflags = " .
+ $dbh->quote(Bugzilla::Constants::DEFAULT_EMAIL_SETTINGS) .
+ "WHERE userid = $userid");
+ $emailflags_count++;
+}
+
+if ($emailflags_count) {
+ print "Added default email prefs to $emailflags_count users who had none.\n" unless $silent;
+ $emailflags_count = 0;
+}
+
+
+$sth = $dbh->prepare("SELECT userid, emailflags FROM profiles " .
+ "WHERE emailflags NOT LIKE '%Flagrequeste%' ");
+$sth->execute();
+while (my ($userid, $emailflags) = $sth->fetchrow_array()) {
+ $emailflags .= Bugzilla::Constants::DEFAULT_FLAG_EMAIL_SETTINGS;
+ $emailflags = $dbh->quote($emailflags);
+ $dbh->do("UPDATE profiles SET emailflags = $emailflags " .
+ "WHERE userid = $userid");
+ $emailflags_count++;
+}
+
+if ($emailflags_count) {
+ print "Added default Flagrequester/ee email prefs to $emailflags_count users who had none.\n" unless $silent;
+ $emailflags_count = 0;
+}
+
+# 2003-10-24 - alt@sonic.net, bug 224208
+# Support classification level
+$dbh->bz_add_field('products', 'classification_id', 'smallint DEFAULT 1');
+
+# 2004-08-29 - Tomas.Kopal@altap.cz, bug 257303
+# Change logincookies.lastused type from timestamp to datetime
+if (($fielddef = $dbh->bz_get_field_def("logincookies", "lastused")) &&
+ $fielddef->[1] =~ /^timestamp/) {
+ $dbh->bz_change_field_type('logincookies', 'lastused', 'DATETIME NOT NULL');
+}
+
+# 2005-01-12 Nick Barnes <nb@ravenbrook.com> bug 278010
+# Rename any group which has an empty name.
+# Note that there can be at most one such group (because of
+# the SQL index on the name column).
+$sth = $dbh->prepare("SELECT id FROM groups where name = ''");
+$sth->execute();
+my ($emptygroupid) = $sth->fetchrow_array();
+if ($emptygroupid) {
+ # There is a group with an empty name; find a name to rename it
+ # as. Must avoid collisions with existing names. Start with
+ # group_$gid and add _<n> if necessary.
+ my $trycount = 0;
+ my $trygroupname;
+ my $trygroupsth = $dbh->prepare("SELECT id FROM groups where name = ?");
+ do {
+ $trygroupname = "group_$emptygroupid";
+ if ($trycount > 0) {
+ $trygroupname .= "_$trycount";
+ }
+ $trygroupsth->execute($trygroupname);
+ if ($trygroupsth->rows > 0) {
+ $trycount ++;
+ }
+ } while ($trygroupsth->rows > 0);
+ $sth = $dbh->prepare("UPDATE groups SET name = ? " .
+ "WHERE id = $emptygroupid");
+ $sth->execute($trygroupname);
+ print "Group $emptygroupid had an empty name; renamed as '$trygroupname'.\n";
+}
+
+# 2005-01-17 - Tomas.Kopal@altap.cz, bug 257315
+# Change bugs.delta_ts type from timestamp to datetime
+if (($fielddef = $dbh->bz_get_field_def("bugs", "delta_ts")) &&
+ $fielddef->[1] =~ /^timestamp/) {
+ $dbh->bz_change_field_type('bugs', 'delta_ts', 'DATETIME NOT NULL');
+}
+
+# 2005-02-12 bugreport@peshkin.net, bug 281787
+if (!defined $dbh->bz_get_index_def('attachments','submitter_id')) {
+ print "Adding index for submitter_id column in attachments table...\n";
+ $dbh->do('ALTER TABLE attachments ADD INDEX (submitter_id)');
+}
+if (!defined $dbh->bz_get_index_def('bugs_activity','who')) {
+ print "Adding index for who column in bugs_activity table...\n";
+ $dbh->do('ALTER TABLE bugs_activity ADD INDEX (who)');
+}
$dbh->bz_change_field_type('bugs', 'status_whiteboard',
q{mediumtext not null default ''});
@@ -3655,6 +3835,9 @@ $dbh->bz_change_field_type('bugs', 'keywords',
q{mediumtext not null default ''});
$dbh->bz_change_field_type('bugs', 'votes', 'mediumint not null default 0');
+# 2005-03-03 travis@sedsystems.ca -- Bug 41972
+add_setting ("display_quips", {"on" => 1, "off" => 2 }, "on" );
+
# If you had to change the --TABLE-- definition in any way, then add your
# differential change code *** A B O V E *** this comment.
#
@@ -3959,192 +4142,6 @@ if ($sth->rows == 0) {
print "\n$login is now set up as an administrator account.\n";
}
-# Add fulltext indexes for bug summaries and descriptions/comments.
-if (!defined $dbh->bz_get_index_def('bugs', 'short_desc')) {
- print "Adding full-text index for short_desc column in bugs table...\n";
- $dbh->do('ALTER TABLE bugs ADD FULLTEXT (short_desc)');
-}
-if (!defined $dbh->bz_get_index_def('longdescs', 'thetext')) {
- print "Adding full-text index for thetext column in longdescs table...\n";
- $dbh->do('ALTER TABLE longdescs ADD FULLTEXT (thetext)');
-}
-
-# 2002 November, myk@mozilla.org, bug 178841:
-#
-# Convert the "attachments.filename" column from a ridiculously large
-# "mediumtext" to a much more sensible "varchar(100)". Also takes
-# the opportunity to remove paths from existing filenames, since they
-# shouldn't be there for security. Buggy browsers include them,
-# and attachment.cgi now takes them out, but old ones need converting.
-#
-{
- my $ref = $dbh->bz_get_field_def("attachments", "filename");
- if ($ref->[1] ne 'varchar(100)') {
- print "Removing paths from filenames in attachments table...\n";
-
- $sth = $dbh->prepare("SELECT attach_id, filename FROM attachments " .
- "WHERE " . $dbh->sql_position(q{'/'}, 'filename') .
- " OR " . $dbh->sql_position(q{'\\\\'}, 'filename'));
- $sth->execute;
-
- while (my ($attach_id, $filename) = $sth->fetchrow_array) {
- $filename =~ s/^.*[\/\\]//;
- my $quoted_filename = $dbh->quote($filename);
- $dbh->do("UPDATE attachments SET filename = $quoted_filename " .
- "WHERE attach_id = $attach_id");
- }
-
- print "Done.\n";
-
- print "Resizing attachments.filename from mediumtext to varchar(100).\n";
- $dbh->bz_change_field_type("attachments", "filename", "varchar(100) not null");
- }
-}
-
-# 2003-01-11, burnus@net-b.de, bug 184309
-# Support for quips approval
-$dbh->bz_add_field('quips', 'approved', 'tinyint(1) NOT NULL DEFAULT 1');
-
-# 2002-12-20 Bug 180870 - remove manual shadowdb replication code
-if ($dbh->bz_table_exists('shadowlog')) {
- print "Removing shadowlog table\n";
- $dbh->do("DROP TABLE shadowlog");
-}
-
-# 2003-04-27 - bugzilla@chimpychompy.org (GavinS)
-#
-# Bug 180086 (http://bugzilla.mozilla.org/show_bug.cgi?id=180086)
-#
-# Renaming the 'count' column in the votes table because Sybase doesn't
-# like it
-if ($dbh->bz_get_field_def('votes', 'count')) {
- # 2003-04-24 - myk@mozilla.org/bbaetz@acm.org, bug 201018
- # Force all cached groups to be updated at login, due to security bug
- # Do this here, inside the next schema change block, so that it doesn't
- # get invalidated on every checksetup run.
- $dbh->do("UPDATE profiles SET refreshed_when='1900-01-01 00:00:00'");
-
- $dbh->bz_rename_field('votes', 'count', 'vote_count');
-}
-
-# 2004/02/15 - Summaries shouldn't be null - see bug 220232
-if ($dbh->bz_get_field_def('bugs', 'short_desc')->[2]) { # if it allows nulls
- $dbh->do("UPDATE bugs SET short_desc = '' WHERE short_desc IS NULL");
- $dbh->bz_change_field_type('bugs', 'short_desc', 'mediumtext not null');
-}
-
-# 2004-04-12 - Keep regexp-based group permissions up-to-date - Bug 240325
-# Make sure groups get rederived
-$dbh->do("UPDATE groups SET last_changed = NOW() WHERE name = 'admin'");
-
-# 2004-12-29 - Flag email code is broke somewhere, and doesn't treat a lack
-# of FlagRequestee/er emailflags as 'on' like it's supposed to. Easiest way
-# to fix this is to make sure that everyone has these set. (bug 275599).
-# While we're at it, let's make sure everyone has some emailprefs set,
-# whether or not they've ever visited userprefs.cgi (bug 108870). In fact,
-# do this first so that the second check gets fewer hits.
-#
-my $emailflags_count = 0;
-$sth = $dbh->prepare("SELECT userid FROM profiles " .
- "WHERE emailflags LIKE '' " .
- "OR emailflags IS NULL");
-$sth->execute();
-while (my ($userid) = $sth->fetchrow_array()) {
- $dbh->do("UPDATE profiles SET emailflags = " .
- $dbh->quote(Bugzilla::Constants::DEFAULT_EMAIL_SETTINGS) .
- "WHERE userid = $userid");
- $emailflags_count++;
-}
-
-if ($emailflags_count) {
- print "Added default email prefs to $emailflags_count users who had none.\n" unless $silent;
- $emailflags_count = 0;
-}
-
-
-$sth = $dbh->prepare("SELECT userid, emailflags FROM profiles " .
- "WHERE emailflags NOT LIKE '%Flagrequeste%' ");
-$sth->execute();
-while (my ($userid, $emailflags) = $sth->fetchrow_array()) {
- $emailflags .= Bugzilla::Constants::DEFAULT_FLAG_EMAIL_SETTINGS;
- $emailflags = $dbh->quote($emailflags);
- $dbh->do("UPDATE profiles SET emailflags = $emailflags " .
- "WHERE userid = $userid");
- $emailflags_count++;
-}
-
-if ($emailflags_count) {
- print "Added default Flagrequester/ee email prefs to $emailflags_count users who had none.\n" unless $silent;
- $emailflags_count = 0;
-}
-
-
-# 2003-10-24 - alt@sonic.net, bug 224208
-# Support classification level and make sure there is a default classification
-$dbh->bz_add_field('products', 'classification_id', 'smallint DEFAULT 1');
-$sth = $dbh->prepare("SELECT name FROM classifications WHERE id=1");
-$sth->execute;
-if (! $sth->rows) {
- $dbh->do("INSERT INTO classifications (id,name,description) " .
- "VALUES(1,'Unclassified','Unassigned to any classifications')");
-}
-
-# 2004-08-29 - Tomas.Kopal@altap.cz, bug 257303
-# Change logincookies.lastused type from timestamp to datetime
-if (($fielddef = $dbh->bz_get_field_def("logincookies", "lastused")) &&
- $fielddef->[1] =~ /^timestamp/) {
- $dbh->bz_change_field_type('logincookies', 'lastused', 'DATETIME NOT NULL');
-}
-
-# 2005-01-12 Nick Barnes <nb@ravenbrook.com> bug 278010
-# Rename any group which has an empty name.
-# Note that there can be at most one such group (because of
-# the SQL index on the name column).
-$sth = $dbh->prepare("SELECT id FROM groups where name = ''");
-$sth->execute();
-my ($emptygroupid) = $sth->fetchrow_array();
-if ($emptygroupid) {
- # There is a group with an empty name; find a name to rename it
- # as. Must avoid collisions with existing names. Start with
- # group_$gid and add _<n> if necessary.
- my $trycount = 0;
- my $trygroupname;
- my $trygroupsth = $dbh->prepare("SELECT id FROM groups where name = ?");
- do {
- $trygroupname = "group_$emptygroupid";
- if ($trycount > 0) {
- $trygroupname .= "_$trycount";
- }
- $trygroupsth->execute($trygroupname);
- if ($trygroupsth->rows > 0) {
- $trycount ++;
- }
- } while ($trygroupsth->rows > 0);
- $sth = $dbh->prepare("UPDATE groups SET name = ? " .
- "WHERE id = $emptygroupid");
- $sth->execute($trygroupname);
- print "Group $emptygroupid had an empty name; renamed as '$trygroupname'.\n";
-}
-
-# 2005-01-17 - Tomas.Kopal@altap.cz, bug 257315
-# Change bugs.delta_ts type from timestamp to datetime
-if (($fielddef = $dbh->bz_get_field_def("bugs", "delta_ts")) &&
- $fielddef->[1] =~ /^timestamp/) {
- $dbh->bz_change_field_type('bugs', 'delta_ts', 'DATETIME NOT NULL');
-}
-
-# 2005-02-12 bugreport@peshkin.net, bug 281787
-if (!defined $dbh->bz_get_index_def('attachments','submitter_id')) {
- print "Adding index for submitter_id column in attachments table...\n";
- $dbh->do('ALTER TABLE attachments ADD INDEX (submitter_id)');
-}
-if (!defined $dbh->bz_get_index_def('bugs_activity','who')) {
- print "Adding index for who column in bugs_activity table...\n";
- $dbh->do('ALTER TABLE bugs_activity ADD INDEX (who)');
-}
-
-# 2005-03-03 travis@sedsystems.ca -- Bug 41972
-add_setting ("display_quips", {"on" => 1, "off" => 2 }, "on" );
#
# Final checks...