Drop-in legacy code for DB2-AS/400
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / ODBC / DB2_400_SQL.pm
index cba274a..29e9da9 100644 (file)
@@ -3,12 +3,25 @@ use strict;
 use warnings;
 
 use base qw/DBIx::Class::Storage::DBI::ODBC/;
-
-sub last_insert_id
-{
-    my ($self) = @_;
-
-    my $dbh = $self->_dbh;
+use mro 'c3';
+
+warn 'Major advances took place in the DBIC codebase since this driver'
+  .' (::Storage::DBI::ODBC::DB2_400_SQL) was written. However since the'
+  .' RDBMS in question is so rare it is not possible for us to test any'
+  .' of the "new hottness". If you are using DB2 on AS-400 please get'
+  .' in contact with the developer team:'
+  .' http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class.pm#GETTING_HELP/SUPPORT'
+  ."\n"
+;
+
+# FIXME
+# Most likely all of this code is redundant and unnecessary. We should
+# be able to simply use base qw/DBIx::Class::Storage::DBI::DB2/;
+# Unfortunately nobody has an RDBMS engine to test with, so keeping
+# things as-is for the time being
+
+sub _dbh_last_insert_id {
+    my ($self, $dbh, $source, $col) = @_;
 
     # get the schema/table separator:
     #    '.' when SQL naming is active
@@ -23,28 +36,43 @@ sub last_insert_id
     return @res ? $res[0] : undef;
 }
 
+sub _sql_maker_opts {
+    my ($self) = @_;
+
+    $self->dbh_do(sub {
+        my ($self, $dbh) = @_;
+
+        return {
+            limit_dialect => 'FetchFirst',
+            name_sep => $dbh->get_info(41)
+        };
+    });
+}
+
 1;
 
 =head1 NAME
 
-DBIx::Class::Storage::DBI::ODBC::DB2_400_SQL - Automatic primary key class for DB2/400
+DBIx::Class::Storage::DBI::ODBC::DB2_400_SQL - Support specific to DB2/400
 over ODBC
 
 =head1 SYNOPSIS
 
-  # In your table classes
-  __PACKAGE__->load_components(qw/PK::Auto Core/);
+  # In your result (table) classes
+  use base 'DBIx::Class::Core';
   __PACKAGE__->set_primary_key('id');
 
 
 =head1 DESCRIPTION
 
-This class implements autoincrements for DB2/400 over ODBC.
+This class implements support specific to DB2/400 over ODBC, including
+auto-increment primary keys, SQL::Abstract::Limit dialect, and name separator
+for connections using either SQL naming or System naming.
 
 
 =head1 AUTHORS
 
-Marc Mims C<< <marc@sssonline.com> >>
+Marc Mims C<< <marc@questright.com> >>
 
 Based on DBIx::Class::Storage::DBI::DB2 by Jess Robinson.