From 447682a716604f2ac9ef8dcc8deafc31993dd85e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20Kusalananda=20K=C3=A4h=C3=A4ri?=
 <ak4@sanger.ac.uk>
Date: Mon, 1 Nov 2010 14:40:55 +0000
Subject: [PATCH] Be more careful with dbname in get_species_and_object_type()

---
 modules/Bio/EnsEMBL/Registry.pm | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/modules/Bio/EnsEMBL/Registry.pm b/modules/Bio/EnsEMBL/Registry.pm
index 3c252467bd..eeb4cf24f0 100644
--- a/modules/Bio/EnsEMBL/Registry.pm
+++ b/modules/Bio/EnsEMBL/Registry.pm
@@ -2463,17 +2463,24 @@ sub get_species_and_object_type {
 
       if ( lc($species) eq 'multi' ) { next }
 
-      if ( !defined($dbc) || $dbc->host() ne $dba->dbc()->host() ) {
+      if (    !defined($dbc)
+           || $dbc->host()   ne $dba->dbc()->host()
+           || $dbc->dbname() ne $dba->dbc()->dbname() )
+      {
         $dbc = $dba->dbc();
       }
 
       my $dbh = $dbc->db_handle();
+      my $dbname = $dbc->dbname();
+
+      my $statement = sprintf(
+                      "SELECT meta_value "
+                        . "FROM %s "
+                        . "WHERE meta_key = 'species.stable_id_prefix' "
+                        . "AND species_id = ?",
+                      $dbh->quote_identifier( undef, $dbname, 'meta' )
+      );
 
-      my $statement =
-          "SELECT meta_value "
-        . "FROM meta "
-        . "WHERE meta_key = 'species.stable_id_prefix' "
-        . "AND species_id = ?";
 
       my $sth = $dbh->prepare($statement);
 
@@ -2593,7 +2600,10 @@ SECONDLOOP:
                                                   '-species' => $species
                         ) } )
     {
-      if ( !defined($dbc) || $dbc->host() ne $dba->dbc()->host() ) {
+      if (    !defined($dbc)
+           || $dbc->host()   ne $dba->dbc()->host()
+           || $dbc->dbname() ne $dba->dbc()->dbname() )
+      {
         $dbc = $dba->dbc();
       }
 
-- 
GitLab