X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FOracle.pm;h=64bf9f182b67735b1bb62f07d6ac0bd0856c455c;hb=9c0df5f32b68e23c670c89ce6cdbff60b4bd0ed0;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..64bf9f1 100644 --- a/lib/DBIx/Class/Storage/DBI/Oracle.pm +++ b/lib/DBIx/Class/Storage/DBI/Oracle.pm @@ -5,33 +5,39 @@ use warnings; use base qw/DBIx::Class::Storage::DBI/; -print STDERR "Oracle.pm got called.\n"; - 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 + my $class = $major <= 8 ? 'DBIx::Class::Storage::DBI::Oracle::WhereJoins' : 'DBIx::Class::Storage::DBI::Oracle::Generic'; - print STDERR "Class: $class\n"; - # Load and rebless eval "require $class"; - print STDERR "\$@: $@\n"; 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") +} 1; @@ -47,8 +53,16 @@ DBIx::Class::Storage::DBI::Oracle - Base class for Oracle driver =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 <= 8 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