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