summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/DB.pm13
-rw-r--r--Bugzilla/DB/Schema.pm5
2 files changed, 13 insertions, 5 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index d72cd5e82..e8a3f362e 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -587,8 +587,12 @@ sub bz_column_info {
sub bz_index_info {
my ($self, $table, $index) = @_;
-
- return $self->_bz_real_schema->get_index_abstract($table, $index);
+ my $index_def =
+ $self->_bz_real_schema->get_index_abstract($table, $index);
+ if (ref($index_def) eq 'ARRAY') {
+ $index_def = {FIELDS => $index_def, TYPE => ''};
+ }
+ return $index_def;
}
@@ -1368,7 +1372,10 @@ C<Bugzilla::DB::Schema::ABSTRACT_SCHEMA>.
Description: Get abstract index definition.
Params: $table - The table the index is on.
$index - The name of the index.
- Returns: An abstract index definition for that index.
+ Returns: An abstract index definition for that index,
+ always in hashref format. The hashref will
+ always contain the TYPE element, but it will
+ be an empty string if it's just a normal index.
If the index does not exist, we return undef.
=back
diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm
index 99127ff69..b151edf91 100644
--- a/Bugzilla/DB/Schema.pm
+++ b/Bugzilla/DB/Schema.pm
@@ -1608,8 +1608,9 @@ sub get_index_abstract {
# Prevent a possible dereferencing of an undef hash, if the
# table doesn't exist.
- if (exists $self->{abstract_schema}->{$table}) {
- my %indexes = (@{ $self->{abstract_schema}{$table}{INDEXES} });
+ my $index_table = $self->get_table_abstract($table);
+ if ($index_table && exists $index_table->{INDEXES}) {
+ my %indexes = (@{ $index_table->{INDEXES} });
return $indexes{$index};
}
return undef;