AUTHORS mass update; mst doesn't have to take credit for -everything- :)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Oracle.pm
index 4d289af..b0184e8 100644 (file)
@@ -1,52 +1,48 @@
 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');
 
+to your Schema class.
 
-=head1 AUTHORS
+=head1 AUTHOR AND CONTRIBUTORS
 
-David Jack Olrik C<< <djo@cpan.org> >>
+See L<AUTHOR|DBIx::Class/AUTHOR> and L<CONTRIBUTORS|DBIx::Class/CONTRIBUTORS> in DBIx::Class
 
 =head1 LICENSE