Skip to content
Snippets Groups Projects
Commit 3c05dff5 authored by Patrick Meidl's avatar Patrick Meidl
Browse files

improved mapping gap bridging code to work with multi-release gaps

parent 2e8cc225
No related branches found
No related tags found
No related merge requests found
...@@ -369,26 +369,28 @@ sub fetch_predecessors_by_archive_id { ...@@ -369,26 +369,28 @@ sub fetch_predecessors_by_archive_id {
# bridge the gap, look in the previous mapping_session for identical # bridge the gap, look in the previous mapping_session for identical
# stable_id.version # stable_id.version
unless (@result) { unless (@result) {
$sql = qq(
SELECT
sie.new_stable_id,
sie.new_version,
sie.score,
m.new_db_name,
m.new_release,
m.new_assembly
FROM mapping_session m, stable_id_event sie
WHERE sie.mapping_session_id = m.mapping_session_id
AND sie.new_stable_id = ?
AND m.new_db_name = ?
);
$sth = $self->prepare($sql);
my $curr_dbname = $arch_id->db_name;
my $prev_dbname = $self->previous_dbname($arch_id->db_name); PREV:
while (my $prev_dbname = $self->previous_dbname($curr_dbname)) {
if ($prev_dbname) {
$sql = qq(
SELECT
sie.new_stable_id,
sie.new_version,
sie.score,
m.new_db_name,
m.new_release,
m.new_assembly
FROM mapping_session m, stable_id_event sie
WHERE sie.mapping_session_id = m.mapping_session_id
AND sie.new_stable_id = ?
AND m.new_db_name = ?
);
$sth = $self->prepare($sql);
$sth->bind_param(1,$arch_id->stable_id, SQL_VARCHAR); $sth->bind_param(1,$arch_id->stable_id, SQL_VARCHAR);
$sth->bind_param(2,$prev_dbname, SQL_VARCHAR); $sth->bind_param(2,$prev_dbname, SQL_VARCHAR);
$sth->execute(); $sth->execute();
...@@ -409,12 +411,16 @@ sub fetch_predecessors_by_archive_id { ...@@ -409,12 +411,16 @@ sub fetch_predecessors_by_archive_id {
); );
_resolve_type( $old_arch_id ); _resolve_type( $old_arch_id );
push( @result, $old_arch_id ); push( @result, $old_arch_id );
last PREV;
} }
} }
$sth->finish(); $curr_dbname = $prev_dbname;
} }
$sth->finish();
} }
return \@result; return \@result;
...@@ -493,26 +499,28 @@ sub fetch_successors_by_archive_id { ...@@ -493,26 +499,28 @@ sub fetch_successors_by_archive_id {
# bridge the gap, look in the next mapping_session for identical # bridge the gap, look in the next mapping_session for identical
# stable_id.version # stable_id.version
unless (@result) { unless (@result) {
my $next_dbname = $self->next_dbname($arch_id->db_name);
if ($next_dbname) { $sql = qq(
SELECT
$sql = qq( sie.old_stable_id,
SELECT sie.old_version,
sie.old_stable_id, sie.score,
sie.old_version, m.old_db_name,
sie.score, m.old_release,
m.old_db_name, m.old_assembly
m.old_release, FROM mapping_session m, stable_id_event sie
m.old_assembly WHERE sie.mapping_session_id = m.mapping_session_id
FROM mapping_session m, stable_id_event sie AND sie.old_stable_id = ?
WHERE sie.mapping_session_id = m.mapping_session_id AND m.old_db_name = ?
AND sie.old_stable_id = ? );
AND m.old_db_name = ?
); $sth = $self->prepare($sql);
my $curr_dbname = $arch_id->db_name;
NEXTDB:
while (my $next_dbname = $self->next_dbname($curr_dbname)) {
$sth = $self->prepare($sql);
$sth->bind_param(1, $arch_id->stable_id, SQL_VARCHAR); $sth->bind_param(1, $arch_id->stable_id, SQL_VARCHAR);
$sth->bind_param(2, $next_dbname, SQL_VARCHAR); $sth->bind_param(2, $next_dbname, SQL_VARCHAR);
$sth->execute(); $sth->execute();
...@@ -534,12 +542,16 @@ sub fetch_successors_by_archive_id { ...@@ -534,12 +542,16 @@ sub fetch_successors_by_archive_id {
_resolve_type($new_arch_id); _resolve_type($new_arch_id);
push( @result, $new_arch_id ); push( @result, $new_arch_id );
last NEXTDB;
} }
} }
$sth->finish(); $curr_dbname = $next_dbname;
} }
$sth->finish();
} }
return \@result; return \@result;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment