X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI.pm;h=4900848c43f3a88e0bfaf9303b4f7e58cb2ccd54;hb=242c152546ea957bee6a11f50568db056c4d2df9;hp=97c69019ebf04928e2e75382046b7b896f6c57ec;hpb=6c3d66fe27774c94e3d59002097e252f209e288c;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 97c6901..4900848 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.07036_02'; +our $VERSION = '0.07038'; __PACKAGE__->mk_group_accessors('simple', qw/ _disable_pk_detection @@ -372,10 +372,9 @@ WHERE table_name = @{[ $dbh->quote($table->name) ]} EOF # Failback: try the REMARKS column on table_info - if (!$comment && $dbh->can('table_info')) { - my $sth = $self->_dbh_table_info( $dbh, undef, $table->schema, $table->name ); - my $info = $sth->fetchrow_hashref(); - $comment = $info->{REMARKS}; + if (!$comment) { + my $info = $self->_dbh_table_info( $dbh, $table ); + $comment = $info->{REMARKS} if $info; } return $comment; @@ -632,9 +631,23 @@ sub _extra_column_info {} # override to mask warnings if needed sub _dbh_table_info { - my ($self, $dbh) = (shift, shift); + my ($self, $dbh, $table) = (shift, shift, shift); + + return undef if !$dbh->can('table_info'); + my $sth = $dbh->table_info(undef, $table->schema, $table->name); + while (my $info = $sth->fetchrow_hashref) { + next if !$self->_table_info_matches($table, $info); + return $info; + } + return undef; +} + +sub _table_info_matches { + my ($self, $table, $info) = @_; - return $dbh->table_info(@_); + no warnings 'uninitialized'; + return $info->{TABLE_SCHEM} eq $table->schema + && $info->{TABLE_NAME} eq $table->name; } # override to mask warnings if needed (see mysql) @@ -667,6 +680,14 @@ sub dbh { return $self->schema->storage->dbh; } +sub _table_is_view { + my ($self, $table) = @_; + + my $info = $self->_dbh_table_info($self->dbh, $table) + or return 0; + return $info->{TABLE_TYPE} eq 'VIEW'; +} + =head1 SEE ALSO L