X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FOracle.pm;h=d52adbbba09bc55e19c3fdbfe55c5372da9c710d;hb=219dd7c7cc546f9929991e62f072e682b2abd5dc;hp=2b28247482ef75f7e0a42bef4e6e9e5305a9f381;hpb=18360aedd6dca521ddd229d246c1e693438d7fd7;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Oracle.pm b/lib/DBIx/Class/Storage/DBI/Oracle.pm index 2b28247..d52adbb 100644 --- a/lib/DBIx/Class/Storage/DBI/Oracle.pm +++ b/lib/DBIx/Class/Storage/DBI/Oracle.pm @@ -1,4 +1,5 @@ package DBIx::Class::Storage::DBI::Oracle; + use strict; use warnings; @@ -8,18 +9,18 @@ sub _rebless { my ($self) = @_; my $version = eval { $self->_dbh->get_info(18); }; - unless ( $@ ) { - my ($major,$minor,$patchlevel) = split(/\./,$version); - # Default driver - my $class = "DBIx::Class::Storage::DBI::Oracle::Generic"; + if ( !$@ ) { + my ($major, $minor, $patchlevel) = split(/\./, $version); - # Version specific drivers - $class = "DBIx::Class::Storage::DBI::Oracle::8" - if $major == 8; + # Default driver + my $class = $major <= 8 + ? 'DBIx::Class::Storage::DBI::Oracle::WhereJoins' + : 'DBIx::Class::Storage::DBI::Oracle::Generic'; # Load and rebless eval "require $class"; + bless $self, $class unless $@; } } @@ -39,8 +40,16 @@ DBIx::Class::Storage::DBI::Oracle - Base class for Oracle driver =head1 DESCRIPTION This class simply provides a mechanism for discovering and loading a sub-class -for a specific version Oracle backend. It should be transparent to the user. +for a specific version Oracle backend. It should be transparent to the user. + +For Oracle major versions <= 8 it loads the ::Oracle::WhereJoins subclass, +which unrolls the ANSI join style DBIC normally generates into entries in +the WHERE clause for compatibility purposes. To force usage of this version +no matter the database version, add + + __PACKAGE__->storage_type('::DBI::Oracle::WhereJoins'); +to your Schema class. =head1 AUTHORS