diff options
author | mkanat%bugzilla.org <> | 2009-06-02 02:10:04 +0200 |
---|---|---|
committer | mkanat%bugzilla.org <> | 2009-06-02 02:10:04 +0200 |
commit | 34e54028237fed966388a7d3b4f7e7321a92a2e4 (patch) | |
tree | a87b4034b3c16074908c008d4a3abe6402f79631 /Bugzilla | |
parent | 1a9927c0c012c6c2dcc82552d0e397c992599754 (diff) | |
download | bugzilla-34e54028237fed966388a7d3b4f7e7321a92a2e4.tar.gz bugzilla-34e54028237fed966388a7d3b4f7e7321a92a2e4.tar.xz |
Bug 495783: Create the default Classification before setting up foreign keys, so that the products.classification_id -> classifications.id FK doesn't fail during upgrades that add the classification_id column.
Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=mkanat
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/Install.pm | 18 | ||||
-rw-r--r-- | Bugzilla/Install/DB.pm | 8 |
2 files changed, 22 insertions, 4 deletions
diff --git a/Bugzilla/Install.pm b/Bugzilla/Install.pm index 65e19412c..c469aa857 100644 --- a/Bugzilla/Install.pm +++ b/Bugzilla/Install.pm @@ -217,15 +217,20 @@ sub update_system_groups { } -# This function should be called only after creating the admin user. -sub create_default_product { +sub create_default_classification { my $dbh = Bugzilla->dbh; + # Make the default Classification if it doesn't already exist. if (!$dbh->selectrow_array('SELECT 1 FROM classifications')) { - print get_text('install_default_classification', + print get_text('install_default_classification', { name => DEFAULT_CLASSIFICATION->{name} }) . "\n"; Bugzilla::Classification->create(DEFAULT_CLASSIFICATION); } +} + +# This function should be called only after creating the admin user. +sub create_default_product { + my $dbh = Bugzilla->dbh; # And same for the default product/component. if (!$dbh->selectrow_array('SELECT 1 FROM products')) { @@ -426,9 +431,14 @@ Params: none Returns: nothing. +=item C<create_default_classification> + +Creates the default "Unclassified" L<Classification|Bugzilla::Classification> +if it doesn't already exist + =item C<create_default_product()> -Description: Creates the default product and classification if +Description: Creates the default product and component if they don't exist. Params: none diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index 0c9181655..53f800b82 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -24,6 +24,7 @@ use strict; use Bugzilla::Constants; use Bugzilla::Hook; +use Bugzilla::Install (); use Bugzilla::Install::Util qw(indicate_progress install_string); use Bugzilla::Util; use Bugzilla::Series; @@ -578,6 +579,13 @@ sub update_table_definitions { Bugzilla::Hook::process('install-update_db'); + # We do this here because otherwise the foreign key from + # products.classification_id to classifications.id will fail + # (because products.classification_id defaults to "1", so on upgraded + # installations it's already been set before the first Classification + # exists). + Bugzilla::Install::create_default_classification(); + $dbh->bz_setup_foreign_keys(); } |