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