make copy of moniker_parts in disambiguation code
Rafael Kitover [Fri, 18 Nov 2011 17:03:24 +0000 (12:03 -0500)]
The local $self->{moniker_parts} code did not make a copy of
$self->moniker_parts before unshifting to it, so modifications were made
to the original reference, breaking ->rescan.

Changes
lib/DBIx/Class/Schema/Loader/Base.pm

diff --git a/Changes b/Changes
index 905327e..6dacb70 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for Perl extension DBIx::Class::Schema::Loader
 
+        - fix a bug in the automatic multischema clashing moniker disambiguation
+          code that overwrote $loader->moniker_parts
+
 0.07013  2011-11-17 23:12:47
         - automatically prefix database/schema to clashing monikers for
           the same table name in multischema configurations
index a2f1218..eecd552 100644 (file)
@@ -1515,7 +1515,7 @@ sub _load_tables {
 
                 delete $self->monikers->{$_->sql_name} for @$tables;
 
-                my $moniker_parts = $self->{moniker_parts};
+                my $moniker_parts = [ @{ $self->moniker_parts } ];
 
                 my $have_schema   = 1 if any { $_ eq 'schema'   } @{ $self->moniker_parts };
                 my $have_database = 1 if any { $_ eq 'database' } @{ $self->moniker_parts };