Load ::DBI::ODBC400 when a DB2/400 ODBC backend is detected.
Marc Mims [Wed, 3 May 2006 21:07:59 +0000 (21:07 +0000)]
lib/DBIx/Class/Storage/DBI.pm
lib/DBIx/Class/Storage/DBI/ODBC400.pm

index cee1c17..62cb900 100644 (file)
@@ -421,7 +421,11 @@ sub _populate_dbh {
   my ($self) = @_;
   my @info = @{$self->_connect_info || []};
   $self->_dbh($self->_connect(@info));
-  my $driver = $self->_dbh->{Driver}->{Name};
+  my $dbh = $self->_dbh;
+  my $driver = $dbh->{Driver}->{Name};
+  if ( $driver eq 'ODBC' and $dbh->get_info(17) =~ m{^DB2/400} ) {
+    $driver = 'ODBC400';
+  }
   eval "require DBIx::Class::Storage::DBI::${driver}";
   unless ($@) {
     bless $self, "DBIx::Class::Storage::DBI::${driver}";
index 5800ab4..2167d13 100644 (file)
@@ -36,14 +36,6 @@ over ODBC
   __PACKAGE__->load_components(qw/PK::Auto Core/);
   __PACKAGE__->set_primary_key('id');
 
-  # In your Schema class
-  __PACKAGE__->storage_type('::DBI::ODBC400');
-
-=for comment
-$dbh->get_info(17) returns 'DB2/400 SQL' for an active DB2/400 connection over
-ODBC.  This should facility automagically loading this module when
-appropriate instead of manually specifying the storage_type as shown above.
-
 
 =head1 DESCRIPTION