From: SineSwiper Date: Fri, 4 May 2012 21:44:15 +0000 (-0400) Subject: fix base ::DBI loader to properly order FK columns X-Git-Tag: 0.07023~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a273b50c98bcde5a41fd6cb45c11b9e8751f0aab;p=dbsrgits%2FDBIx-Class-Schema-Loader.git fix base ::DBI loader to properly order FK columns --- diff --git a/Changes b/Changes index 1560788..4182c4c 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,6 @@ Revision history for Perl extension DBIx::Class::Schema::Loader + - properly order FK columns when using base ::DBI loader (SineSwiper) - bump Class::Inspector dep to 1.27 due to test failures with earlier versions on perl >= 5.15.7 (RT#74236) diff --git a/lib/DBIx/Class/Schema/Loader/DBI.pm b/lib/DBIx/Class/Schema/Loader/DBI.pm index 0af0dc4..cf8da16 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI.pm @@ -404,6 +404,7 @@ sub _table_fk_info { my $uk_col = $self->_lc($raw_rel->[3]); my $fk_scm = $raw_rel->[5]; my $fk_col = $self->_lc($raw_rel->[7]); + my $key_seq = $raw_rel->[8] - 1; my $relid = ($raw_rel->[11] || ( "__dcsld__" . $i++ )); foreach my $var ($uk_scm, $uk_tbl, $uk_col, $fk_scm, $fk_col, $relid) { @@ -424,15 +425,18 @@ sub _table_fk_info { ignore_schema => 1 )), ); - $rels{$relid}{cols}{$uk_col} = $fk_col; + + # Add this data IN ORDER + $rels{$relid}{rcols}[$key_seq] = $uk_col; + $rels{$relid}{lcols}[$key_seq] = $fk_col; } $sth->finish; my @rels; foreach my $relid (keys %rels) { push(@rels, { - remote_columns => [ keys %{$rels{$relid}->{cols}} ], - local_columns => [ values %{$rels{$relid}->{cols}} ], + remote_columns => $rels{$relid}{rcols}, + local_columns => $rels{$relid}{lcols}, remote_table => $rels{$relid}->{tbl}, }); }