Ask for newer DBD::Pg in author mode, suggest the newer version otherwise (proper...
[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
d40080c3 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
843f8ecd 281;
29
75d07914 30=head1 NAME
843f8ecd 31
18360aed 32DBIx::Class::Storage::DBI::Oracle - Base class for Oracle driver
843f8ecd 33
34=head1 SYNOPSIS
35
36 # In your table classes
18360aed 37 __PACKAGE__->load_components(qw/Core/);
843f8ecd 38
39=head1 DESCRIPTION
40
18360aed 41This class simply provides a mechanism for discovering and loading a sub-class
08fabf59 42for a specific version Oracle backend. It should be transparent to the user.
843f8ecd 43
08fabf59 44For Oracle major versions <= 8 it loads the ::Oracle::WhereJoins subclass,
45which unrolls the ANSI join style DBIC normally generates into entries in
46the WHERE clause for compatibility purposes. To force usage of this version
47no matter the database version, add
48
49 __PACKAGE__->storage_type('::DBI::Oracle::WhereJoins');
50
51to your Schema class.
843f8ecd 52
18360aed 53=head1 AUTHORS
843f8ecd 54
18360aed 55David Jack Olrik C<< <djo@cpan.org> >>
843f8ecd 56
57=head1 LICENSE
58
59You may distribute this code under the same terms as Perl itself.
60
61=cut