fix undef warn in fk info for DBDs without schemas
Rafael Kitover [Wed, 14 Mar 2012 18:10:26 +0000 (14:10 -0400)]
SineSwiper reported an undef warning from ::DBI in _table_fk_info
because of an s/// substitution on the schema values extracted from
$dbh->foreign_key_info, which can be undef for DBDs which do not have
the concept of schemas.

Change the substitution to only run if the values are defined.

lib/DBIx/Class/Schema/Loader/DBI.pm

index 1ed2fee..266eb50 100644 (file)
@@ -405,7 +405,7 @@ sub _table_fk_info {
         my $relid   = ($raw_rel->[11] || ( "__dcsld__" . $i++ ));
 
         foreach my $var ($uk_scm, $uk_tbl, $uk_col, $fk_scm, $fk_col, $relid) {
-            $var =~ s/[\Q$self->{quote_char}\E]//g;
+            $var =~ s/[\Q$self->{quote_char}\E]//g if defined $var;
         }
 
         if ($self->db_schema && $self->db_schema->[0] ne '%'