Fix/clarify Oracle decision whether to use WhereJoins
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Oracle.pm
index 399eb70..2457596 100644 (file)
@@ -5,23 +5,19 @@ use warnings;
 
 use base qw/DBIx::Class::Storage::DBI/;
 use mro 'c3';
+use Try::Tiny;
+use namespace::clean;
 
 sub _rebless {
-    my ($self) = @_;
+  my ($self) = @_;
 
-    my $version = eval { $self->_get_dbh->get_info(18); };
+  # Default driver
+  my $class = $self->_server_info->{normalized_dbms_version} < 9
+    ? 'DBIx::Class::Storage::DBI::Oracle::WhereJoins'
+    : 'DBIx::Class::Storage::DBI::Oracle::Generic';
 
-    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';
-
-        $self->ensure_class_loaded ($class);
-        bless $self, $class;
-    }
+  $self->ensure_class_loaded ($class);
+  bless $self, $class;
 }
 
 1;
@@ -35,7 +31,7 @@ DBIx::Class::Storage::DBI::Oracle - Base class for Oracle driver
 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 Oracle major versions <= 8 it loads the ::Oracle::WhereJoins subclass,
+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