X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FOracle.pm;h=b0184e8fccb96a3601dd254982ff50cfff82aaa9;hb=0c11ad0ee5c8407f6b87d6e15c62a1b445076dc0;hp=ea956baed178435336a80939ff6a32db9e65d1c6;hpb=9382ad0721370b25b9b93d78c76ecab0b46cc74e;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Oracle.pm b/lib/DBIx/Class/Storage/DBI/Oracle.pm index ea956ba..b0184e8 100644 --- a/lib/DBIx/Class/Storage/DBI/Oracle.pm +++ b/lib/DBIx/Class/Storage/DBI/Oracle.pm @@ -4,55 +4,45 @@ use strict; use warnings; use base qw/DBIx::Class::Storage::DBI/; - -print STDERR "Oracle.pm got called.\n"; +use mro 'c3'; +use Try::Tiny; +use namespace::clean; sub _rebless { - my ($self) = @_; - - print STDERR "Rebless got called.\n"; - - my $version = eval { $self->_dbh->get_info(18); }; - - if ( !$@ ) { - my ($major, $minor, $patchlevel) = split(/\./, $version); - - # Default driver - my $class = $major >= 8 - ? 'DBIx::Class::Storage::DBI::Oracle::WhereJoins' - : 'DBIx::Class::Storage::DBI::Oracle::Generic'; - - print STDERR "Class: $class\n"; + my ($self) = @_; - # Load and rebless - eval "require $class"; + # Default driver + my $class = $self->_server_info->{normalized_dbms_version} < 9 + ? 'DBIx::Class::Storage::DBI::Oracle::WhereJoins' + : 'DBIx::Class::Storage::DBI::Oracle::Generic'; - print STDERR "\$@: $@\n"; - bless $self, $class unless $@; - } + $self->ensure_class_loaded ($class); + bless $self, $class; } - 1; =head1 NAME DBIx::Class::Storage::DBI::Oracle - Base class for Oracle driver -=head1 SYNOPSIS - - # In your table classes - __PACKAGE__->load_components(qw/Core/); - =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 < 9 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 +=head1 AUTHOR AND CONTRIBUTORS -David Jack Olrik C<< >> +See L and L in DBIx::Class =head1 LICENSE