From 34e54028237fed966388a7d3b4f7e7321a92a2e4 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Tue, 2 Jun 2009 00:10:04 +0000 Subject: 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 r=LpSolit, a=mkanat --- Bugzilla/Install.pm | 18 ++++++++++++++---- Bugzilla/Install/DB.pm | 8 ++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) (limited to 'Bugzilla') 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 + +Creates the default "Unclassified" L +if it doesn't already exist + =item C -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(); } -- cgit v1.2.3-24-g4f1b