X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI.pm;h=fb2669ebc67fddcbc3c215d8238774ec0635080d;hb=23d1f36b238acbceaa1ecd71743ce4f5b8e8fd7e;hp=df76ae5e8bfca74fda1a4f9a0cea5f1c99369c8a;hpb=c047348e22d3838e8881577a0f3a113cc39fc819;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 df76ae5..fb2669e 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI.pm @@ -282,19 +282,24 @@ sub _columns_info_for { eval { my $sth = $dbh->column_info( undef, $self->db_schema, $table, '%' ); while ( my $info = $sth->fetchrow_hashref() ){ - my %column_info; - $column_info{data_type} = $info->{TYPE_NAME}; - $column_info{size} = $info->{COLUMN_SIZE}; - $column_info{is_nullable} = $info->{NULLABLE} ? 1 : 0; - $column_info{default_value} = $info->{COLUMN_DEF}; + my $column_info = {}; + $column_info->{data_type} = $info->{TYPE_NAME}; + $column_info->{size} = $info->{COLUMN_SIZE}; + $column_info->{is_nullable} = $info->{NULLABLE} ? 1 : 0; + $column_info->{default_value} = $info->{COLUMN_DEF}; my $col_name = $info->{COLUMN_NAME}; $col_name =~ s/^\"(.*)\"$/$1/; my $extra_info = $self->_extra_column_info($info) || {}; - my $custom_info = $self->_custom_column_info($info) || {}; - my $datetime_info = $self->_datetime_column_info($info, - { %column_info, %$extra_info, %$custom_info }) || {}; - $result{$col_name} = { %column_info, %$extra_info, %$custom_info, %$datetime_info }; + $column_info = { %$column_info, %$extra_info }; + + my $custom_info = $self->_custom_column_info( $table, $col_name, $column_info ) || {}; + $column_info = { %$column_info, %$custom_info }; + + my $datetime_info = $self->_datetime_column_info( $table, $col_name, $column_info ) || {}; + $column_info = { %$column_info, %$datetime_info }; + + $result{$col_name} = $column_info; } $sth->finish; }; @@ -306,19 +311,26 @@ sub _columns_info_for { $sth->execute; my @columns = @{$sth->{NAME_lc}}; for my $i ( 0 .. $#columns ){ - my %column_info; - $column_info{data_type} = $sth->{TYPE}->[$i]; - $column_info{size} = $sth->{PRECISION}->[$i]; - $column_info{is_nullable} = $sth->{NULLABLE}->[$i] ? 1 : 0; - - if ($column_info{data_type} =~ m/^(.*?)\((.*?)\)$/) { - $column_info{data_type} = $1; - $column_info{size} = $2; + my $column_info = {}; + $column_info->{data_type} = $sth->{TYPE}->[$i]; + $column_info->{size} = $sth->{PRECISION}->[$i]; + $column_info->{is_nullable} = $sth->{NULLABLE}->[$i] ? 1 : 0; + + if ($column_info->{data_type} =~ m/^(.*?)\((.*?)\)$/) { + $column_info->{data_type} = $1; + $column_info->{size} = $2; } my $extra_info = $self->_extra_column_info($table, $columns[$i], $sth, $i) || {}; + $column_info = { %$column_info, %$extra_info }; + + my $custom_info = $self->_custom_column_info( $table, $columns[$i], $column_info ) || {}; + $column_info = { %$column_info, %$custom_info }; + + my $datetime_info = $self->_datetime_column_info( $table, $columns[$i], $column_info ) || {}; + $column_info = { %$column_info, %$datetime_info }; - $result{$columns[$i]} = { %column_info, %$extra_info }; + $result{$columns[$i]} = $column_info; } $sth->finish;