diff --git a/misc-scripts/xref_mapping/XrefParser/BaseParser.pm b/misc-scripts/xref_mapping/XrefParser/BaseParser.pm index 5992b0f64f5d5a1d3b90f2389b08989dc313f7f6..6bc7605814c61dc35eec15372313ff39b3423483 100644 --- a/misc-scripts/xref_mapping/XrefParser/BaseParser.pm +++ b/misc-scripts/xref_mapping/XrefParser/BaseParser.pm @@ -24,20 +24,20 @@ my %taxonomy2species_id; my %name2species_id; my ($host, $port, $dbname, $user, $pass, $create, $release, $cleanup); -my $skipdownload; +my ($skipdownload,$drop_db) ; # -------------------------------------------------------------------------------- # Get info about files to be parsed from the database sub run { - ($host, $port, $dbname, $user, $pass, my $speciesr, my $sourcesr, $skipdownload, $create, $release, $cleanup) = @_; + ($host, $port, $dbname, $user, $pass, my $speciesr, my $sourcesr, $skipdownload, $create, $release, $cleanup,$drop_db) = @_; my @species = @$speciesr; my @sources = @$sourcesr; my $sql_dir = dirname($0); - create($host, $port, $user, $pass, $dbname, $sql_dir."/") if ($create); + create($host, $port, $user, $pass, $dbname, $sql_dir."/" , $drop_db ) if ($create); my $dbi = dbi(); @@ -923,7 +923,7 @@ sub sanitise { sub create { - my ($host, $port, $user, $pass, $dbname, $sql_dir) = @_; + my ($host, $port, $user, $pass, $dbname, $sql_dir,$drop_db ) = @_; my $dbh = DBI->connect( "DBI:mysql:host=$host:port=$port", $user, $pass, {'RaiseError' => 1}); @@ -932,7 +932,13 @@ sub create { my %dbs = map {$_->[0] => 1} @{$dbh->selectall_arrayref('SHOW DATABASES')}; if ($dbs{$dbname}) { - if ($create) { + + if ( $drop_db ) { + $dbh->do( "DROP DATABASE $dbname" ); + print "Database $dbname dropped\n" ; + } + + if ( $create && !$drop_db ) { print "WARNING: about to drop database $dbname on $host:$port; yes to confirm, otherwise exit: "; $| = 1; # flush stdout my $p = <STDIN>; @@ -944,7 +950,7 @@ sub create { print "$dbname NOT removed\n"; exit(1); } - } else { + } elsif ( !$create) { die("Database $dbname already exists. Use -create option to overwrite it."); } }