substantially reduced ping count, dynamic cursors support for mssql through odbc
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Oracle.pm
1 package DBIx::Class::Storage::DBI::Oracle;
2
3 use strict;
4 use warnings;
5
6 use base qw/DBIx::Class::Storage::DBI/;
7 use mro 'c3';
8
9 sub _rebless {
10     my ($self) = @_;
11
12     my $version = eval { $self->_get_dbh->get_info(18); };
13
14     if ( !$@ ) {
15         my ($major, $minor, $patchlevel) = split(/\./, $version);
16
17         # Default driver
18         my $class = $major <= 8
19           ? 'DBIx::Class::Storage::DBI::Oracle::WhereJoins'
20           : 'DBIx::Class::Storage::DBI::Oracle::Generic';
21
22         # Load and rebless
23         eval "require $class";
24
25         bless $self, $class unless $@;
26     }
27 }
28
29 1;
30
31 =head1 NAME
32
33 DBIx::Class::Storage::DBI::Oracle - Base class for Oracle driver
34
35 =head1 SYNOPSIS
36
37   # In your table classes
38   __PACKAGE__->load_components(qw/Core/);
39
40 =head1 DESCRIPTION
41
42 This class simply provides a mechanism for discovering and loading a sub-class
43 for a specific version Oracle backend. It should be transparent to the user.
44
45 For Oracle major versions <= 8 it loads the ::Oracle::WhereJoins subclass,
46 which unrolls the ANSI join style DBIC normally generates into entries in
47 the WHERE clause for compatibility purposes. To force usage of this version
48 no matter the database version, add
49
50   __PACKAGE__->storage_type('::DBI::Oracle::WhereJoins');
51
52 to your Schema class.
53
54 =head1 AUTHORS
55
56 David Jack Olrik C<< <djo@cpan.org> >>
57
58 =head1 LICENSE
59
60 You may distribute this code under the same terms as Perl itself.
61
62 =cut