use strict;
use vars qw(@ISA $VERSION);
#use Exporter;
-use Carp qw(confess);
use DBI;
use Storable;
+use DBIx::DBSchema::_util qw(_load_driver);
use DBIx::DBSchema::Table;
use DBIx::DBSchema::Column;
use DBIx::DBSchema::ColGroup::Unique;
#@ISA = qw(Exporter);
@ISA = ();
-$VERSION = "0.25";
+$VERSION = "0.28";
=head1 NAME
# private subroutines
-sub _load_driver {
- my($dbh) = @_;
- my $driver;
- if ( ref($dbh) ) {
- $driver = $dbh->{Driver}->{Name};
- } else {
- $dbh =~ s/^dbi:(\w*?)(?:\((.*?)\))?://i #nicked from DBI->connect
- or '' =~ /()/; # ensure $1 etc are empty if match fails
- $driver = $1 or confess "can't parse data source: $dbh";
- }
-
- #require "DBIx/DBSchema/DBD/$driver.pm";
- #$driver;
- eval 'require "DBIx/DBSchema/DBD/$driver.pm"' and $driver or die $@;
-}
-
sub _tables_from_dbh {
my($dbh) = @_;
- my $sth = $dbh->table_info or die $dbh->errstr;
+ my $driver = _load_driver($dbh);
+ my $db_catalog =
+ scalar(eval "DBIx::DBSchema::DBD::$driver->default_db_catalog");
+ my $db_schema =
+ scalar(eval "DBIx::DBSchema::DBD::$driver->default_db_schema");
+ my $sth = $dbh->table_info($db_catalog, $db_schema, '', 'TABLE')
+ or die $dbh->errstr;
#map { $_->{TABLE_NAME} } grep { $_->{TABLE_TYPE} eq 'TABLE' }
# @{ $sth->fetchall_arrayref({ TABLE_NAME=>1, TABLE_TYPE=>1}) };
map { $_->[0] } grep { $_->[1] =~ /^TABLE$/i }