summaryrefslogtreecommitdiffstats
path: root/Bugzilla/DB.pm
diff options
context:
space:
mode:
authorDavid Lawrence <dkl@mozilla.com>2014-10-24 17:15:56 +0200
committerDavid Lawrence <dkl@mozilla.com>2014-10-24 17:15:56 +0200
commitfa1239536bdd2f04e554e7d757424991bcf04ba6 (patch)
tree1a343acd5cc122d168642ddccb400416edc67b62 /Bugzilla/DB.pm
parent1d68680f1a510aa5fd7844dca3f8a681db334761 (diff)
downloadbugzilla-fa1239536bdd2f04e554e7d757424991bcf04ba6.tar.gz
bugzilla-fa1239536bdd2f04e554e7d757424991bcf04ba6.tar.xz
Bug 1082106: $dbh->bz_add_columns creates a foreign key constraint causing failure in checksetup.pl when it tries to re-add it later
r=glob,a=glob
Diffstat (limited to 'Bugzilla/DB.pm')
-rw-r--r--Bugzilla/DB.pm15
1 files changed, 11 insertions, 4 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index 29f431b12..87a1c9689 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -581,8 +581,11 @@ sub bz_add_column {
my $current_def = $self->bz_column_info($table, $name);
if (!$current_def) {
+ # REFERENCES need to happen later and not be created right away
+ my $trimmed_def = dclone($new_def);
+ delete $trimmed_def->{REFERENCES};
my @statements = $self->_bz_real_schema->get_add_column_ddl(
- $table, $name, $new_def,
+ $table, $name, $trimmed_def,
defined $init_value ? $self->quote($init_value) : undef);
print get_text('install_column_add',
{ column => $name, table => $table }) . "\n"
@@ -596,14 +599,14 @@ sub bz_add_column {
# column exists there and has a REFERENCES item.
# bz_setup_foreign_keys will then add this FK at the end of
# Install::DB.
- my $col_abstract =
+ my $col_abstract =
$self->_bz_schema->get_column_abstract($table, $name);
if (exists $col_abstract->{REFERENCES}) {
my $new_fk = dclone($col_abstract->{REFERENCES});
$new_fk->{created} = 0;
$new_def->{REFERENCES} = $new_fk;
}
-
+
$self->_bz_real_schema->set_column($table, $name, $new_def);
$self->_bz_store_real_schema;
}
@@ -2318,7 +2321,11 @@ values to.
=item C<$name> - the name of the new column
-=item C<\%definition> - Abstract column definition for the new column
+=item C<$definition> - A hashref abstract column definition for the new column.
+Note, if a C<REFERENCES> definition is included to create a foreign key
+relationship, it will be created later instead of when the column is added.
+Normally foreign keys are added by C<checksetup.pl> at the end all at the same
+time.
=item C<$init_value> (optional) - An initial value to set the column
to. Required if your column is NOT NULL and has no DEFAULT set.