diff --git a/modules/Bio/EnsEMBL/DBSQL/ArchiveStableIdAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/ArchiveStableIdAdaptor.pm index 9a11b59519a917e895cfc2d42026780e9b5bab6a..b942e3fd6f63f2c0d88c3536eece3ab8764d6386 100644 --- a/modules/Bio/EnsEMBL/DBSQL/ArchiveStableIdAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/ArchiveStableIdAdaptor.pm @@ -338,18 +338,22 @@ sub fetch_all_currently_related { my $current_db_name = $self->list_dbnames()->[0]; my $dbname = $arch_id->db_name; - my ($old, $new) ; + my $old = []; + if( $dbname eq $current_db_name ) { return [ $arch_id ]; } - while( $dbname != $current_db_name ) { + push( @$old, $arch_id ); + + while( $dbname ne $current_db_name ) { + my $new = []; while( my $asi = ( shift @$old )) { push( @$new, @{$asi->get_all_successors()}); } if( @$new ) { - $dbname = $new->[0]->dbname(); + $dbname = $new->[0]->db_name(); } else { last; } @@ -358,7 +362,7 @@ sub fetch_all_currently_related { my %stable_ids; my @result; - while( my $arch_id = ( shift @$new )) { + while( my $arch_id = ( shift @$old )) { if( exists $stable_ids{ $arch_id->stable_id } ) { next; } else { @@ -461,10 +465,12 @@ sub list_dbnames { } if( $first ) { $self->{'dbnames'} = []; + push( @{$self->{'dbnames'}}, $new_db_name ); push( @{$self->{'dbnames'}}, $old_db_name ); $first = 0; + } else { + push( @{$self->{'dbnames'}}, $new_db_name ); } - push( @{$self->{'dbnames'}}, $new_db_name ); } $sth->finish(); }