1 package DBIx::Class::Storage::DBI::DB2;
6 use base qw/DBIx::Class::Storage::DBI/;
11 __PACKAGE__->datetime_parser_type('DateTime::Format::DB2');
12 __PACKAGE__->sql_quote_char ('"');
14 # lazy-default kind of thing
18 my $v = $self->next::method(@_);
20 if (! defined $v and ! @_) {
21 $v = $self->next::method($self->_dbh_get_info('SQL_QUALIFIER_NAME_SEPARATOR') || '.');
27 sub sql_limit_dialect {
30 my $v = $self->next::method(@_);
32 if (! defined $v and ! @_) {
33 $v = $self->next::method(
34 ($self->_server_info->{normalized_dbms_version}||0) >= 5.004
43 sub _dbh_last_insert_id {
44 my ($self, $dbh, $source, $col) = @_;
46 my $name_sep = $self->sql_name_sep;
48 my $sth = $dbh->prepare_cached(
49 # An older equivalent of 'VALUES(IDENTITY_VAL_LOCAL())', for compat
50 # with ancient DB2 versions. Should work on modern DB2's as well:
51 # http://publib.boulder.ibm.com/infocenter/db2luw/v8/topic/com.ibm.db2.udb.doc/admin/r0002369.htm?resultof=%22%73%79%73%64%75%6d%6d%79%31%22%20
52 "SELECT IDENTITY_VAL_LOCAL() FROM sysibm${name_sep}sysdummy1",
58 my @res = $sth->fetchrow_array();
60 return @res ? $res[0] : undef;
67 DBIx::Class::Storage::DBI::DB2 - IBM DB2 support for DBIx::Class
71 This class implements autoincrements for DB2, sets the limit dialect to
72 RowNumberOver over FetchFirst depending on the availability of support for
73 RowNumberOver, queries the server name_sep from L<DBI> and sets the L<DateTime>
74 parser to L<DateTime::Format::DB2>.
78 See L<DBIx::Class/AUTHOR> and L<DBIx::Class/CONTRIBUTORS>.
82 You may distribute this code under the same terms as Perl itself.