1package DBIx::Class::Storage::DBI::Oracle;
2
3use strict;
4use warnings;
5
6use base qw/DBIx::Class::Storage::DBI/;
7use mro 'c3';
8
9sub _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        $self->ensure_class_loaded ($class);
23        bless $self, $class;
24    }
25}
26
271;
28
29=head1 NAME
30
31DBIx::Class::Storage::DBI::Oracle - Base class for Oracle driver
32
33=head1 DESCRIPTION
34
35This class simply provides a mechanism for discovering and loading a sub-class
36for a specific version Oracle backend. It should be transparent to the user.
37
38For Oracle major versions <= 8 it loads the ::Oracle::WhereJoins subclass,
39which unrolls the ANSI join style DBIC normally generates into entries in
40the WHERE clause for compatibility purposes. To force usage of this version
41no matter the database version, add
42
43  __PACKAGE__->storage_type('::DBI::Oracle::WhereJoins');
44
45to your Schema class.
46
47=head1 AUTHORS
48
49David Jack Olrik C<< <djo@cpan.org> >>
50
51=head1 LICENSE
52
53You may distribute this code under the same terms as Perl itself.
54
55=cut
56