X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FOracle.pm;h=6dd8b724ea2d9cfdb7006c74358b435674ee683f;hb=a2bd379666d729133d65c85dc775627937084b18;hp=4d289af104bc5f91b50221929fc63b5af60f90f4;hpb=e21dfd6a08cbef7df0ed57462cefb6ad0854fc09;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Storage/DBI/Oracle.pm b/lib/DBIx/Class/Storage/DBI/Oracle.pm index 4d289af..6dd8b72 100644 --- a/lib/DBIx/Class/Storage/DBI/Oracle.pm +++ b/lib/DBIx/Class/Storage/DBI/Oracle.pm @@ -1,55 +1,52 @@ package DBIx::Class::Storage::DBI::Oracle; -# -*- mode: cperl; cperl-indent-level: 2 -*- use strict; use warnings; use base qw/DBIx::Class::Storage::DBI/; +use mro 'c3'; +use Try::Tiny; +use namespace::clean; sub _rebless { my ($self) = @_; - my $version = eval { $self->_dbh->get_info(18); }; - unless ( $@ ) { - my ($major,$minor,$patchlevel) = split(/\./,$version); + # Default driver + my $class = $self->_server_info->{normalized_dbms_version} < 9 + ? 'DBIx::Class::Storage::DBI::Oracle::WhereJoins' + : 'DBIx::Class::Storage::DBI::Oracle::Generic'; - # Default driver - my $class = "DBIx::Class::Storage::DBI::Oracle::Generic"; - - # Version specific drivers - $class = "DBIx::Class::Storage::DBI::Oracle::8" - if $major == 8; - - # Load and rebless - eval "require $class"; - 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'); -=head1 AUTHORS +to your Schema class. -David Jack Olrik C<< >> +=head1 FURTHER QUESTIONS? -=head1 LICENSE +Check the list of L. -You may distribute this code under the same terms as Perl itself. +=head1 COPYRIGHT AND LICENSE -=cut +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L.