return $self->_bz_real_schema->get_table_columns($table);
}
+sub bz_table_indexes {
+ my ($self, $table) = @_;
+ my $indexes = $self->_bz_real_schema->get_table_indexes_abstract($table);
+ my %return_indexes;
+ # We do this so that they're always hashes.
+ foreach my $name (keys %$indexes) {
+ $return_indexes{$name} = $self->bz_index_info($table, $name);
+ }
+ return \%return_indexes;
+}
+
#####################################################################
# Protected "Real Database" Schema Information Methods
#####################################################################
} #eosub--get_table_columns
+sub get_table_indexes_abstract {
+ my ($self, $table) = @_;
+ my $table_def = $self->get_table_abstract($table);
+ my %indexes = @{$table_def->{INDEXES} || []};
+ return \%indexes;
+}
+
sub get_create_database_sql {
my ($self, $name) = @_;
return ("CREATE DATABASE $name");
{TYPE => 'MEDIUMSERIAL', NOTNULL => 1, PRIMARYKEY => 1});
_fix_uppercase_custom_field_names();
+ _fix_uppercase_index_names();
################################################################
# New --TABLE-- changes should go *** A B O V E *** this point #
undef, lc($name), $name);
}
}
-
+}
+
+sub _fix_uppercase_index_names {
+ # We forgot to fix indexes in the above code.
+ my $dbh = Bugzilla->dbh;
+ my $fields = $dbh->selectcol_arrayref(
+ 'SELECT name FROM fielddefs WHERE type = ? AND custom = 1',
+ undef, FIELD_TYPE_SINGLE_SELECT);
+ foreach my $field (@$fields) {
+ my $indexes = $dbh->bz_table_indexes($field);
+ foreach my $name (keys %$indexes) {
+ next if $name eq lc($name);
+ my $index = $indexes->{$name};
+ # Lowercase the name and everything in the definition.
+ my $new_name = lc($name);
+ my @new_fields = map {lc($_)} @{$index->{FIELDS}};
+ my $new_def = {FIELDS => \@new_fields, TYPE => $index->{TYPE}};
+ $new_def = \@new_fields if !$index->{TYPE};
+ $dbh->bz_drop_index($field, $name);
+ $dbh->bz_add_index($field, $new_name, $new_def);
+ }
+ }
}
1;