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); };
+ try {
+ my $version = $self->_get_dbh->get_info(18);
- if ( !$@ ) {
- my ($major, $minor, $patchlevel) = split(/\./, $version);
+ my ($major, $minor, $patchlevel) = split(/\./, $version);
- # Default driver
- my $class = $major <= 8
- ? 'DBIx::Class::Storage::DBI::Oracle::WhereJoins'
- : 'DBIx::Class::Storage::DBI::Oracle::Generic';
+ # 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 $@;
- }
-}
-
-sub _svp_begin {
- my ($self, $name) = @_;
-
- $self->dbh->do("SAVEPOINT $name");
-}
-
-# Would've implemented _svp_release here, but Oracle doesn't support it.
-
-sub _svp_rollback {
- my ($self, $name) = @_;
-
- $self->dbh->do("ROLLBACK TO SAVEPOINT $name")
+ $self->ensure_class_loaded ($class);
+ bless $self, $class;
+ };
}
1;
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