X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI.pm;h=700b3ab7ca9469336b9bae5794a01ba78baf7d09;hb=53c4835c7c3e764f0881b196fb29f348916e8411;hp=4900848c43f3a88e0bfaf9303b4f7e58cb2ccd54;hpb=242c152546ea957bee6a11f50568db056c4d2df9;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/DBI.pm b/lib/DBIx/Class/Schema/Loader/DBI.pm index 4900848..700b3ab 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI.pm @@ -10,7 +10,7 @@ use Carp::Clan qw/^DBIx::Class/; use namespace::clean; use DBIx::Class::Schema::Loader::Table (); -our $VERSION = '0.07038'; +our $VERSION = '0.07040'; __PACKAGE__->mk_group_accessors('simple', qw/ _disable_pk_detection @@ -340,17 +340,18 @@ sub _table_uniq_info { next if $row->{TYPE} eq 'table' || defined $row->{FILTER_CONDITION} || !$row->{INDEX_NAME} - || !defined $row->{ORDINAL_POSITION} - || !$row->{COLUMN_NAME}; + || !defined $row->{ORDINAL_POSITION}; - $indices{$row->{INDEX_NAME}}[$row->{ORDINAL_POSITION}] = $self->_lc($row->{COLUMN_NAME}); + $indices{$row->{INDEX_NAME}}[$row->{ORDINAL_POSITION}] = $self->_lc($row->{COLUMN_NAME} || ''); } $sth->finish; my @retval; - foreach my $index_name (keys %indices) { - my $index = $indices{$index_name}; - push(@retval, [ $index_name => [ @$index[1..$#$index] ] ]); + foreach my $index_name (sort keys %indices) { + my (undef, @cols) = @{$indices{$index_name}}; + # skip indexes with missing column names (e.g. expression indexes) + next unless @cols == grep $_, @cols; + push(@retval, [ $index_name => \@cols ]); } return \@retval;