]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 290414: bz_index_info is slightly broken and has unclear API
authormkanat%kerio.com <>
Fri, 15 Apr 2005 12:46:04 +0000 (12:46 +0000)
committermkanat%kerio.com <>
Fri, 15 Apr 2005 12:46:04 +0000 (12:46 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=Tomas.Kopal, a=justdave

Bugzilla/DB.pm
Bugzilla/DB/Schema.pm

index d72cd5e8225ba49671c9127b87e96e7676525002..e8a3f362ebe773994cb8cff62513ade358e04ffc 100644 (file)
@@ -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
index 99127ff6999c19094b3d31493f21ce8658327562..b151edf91db51d0589c3e84a6d57d6e01b96a79d 100644 (file)
@@ -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;