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