local $dbh->{RaiseError} = 1;
local $dbh->{PrintError} = 0;
- my $rc = 1;
- try {
+ return try {
$dbh->do('select 1 from dual');
+ 1;
} catch {
- $rc = 0;
+ 0;
};
-
- return $rc;
}
sub _dbh_execute {
my ($dbh, $op, $extra_bind, $ident, $bind_attributes, @args) = @_;
my $wantarray = wantarray;
-
- my (@res, $exception, $retried);
-
- RETRY: {
- do {
- my $exception;
- try {
- if ($wantarray) {
- @res = $self->next::method(@_);
- } else {
- $res[0] = $self->next::method(@_);
- }
- } catch {
- $exception = shift;
- };
- if ($exception =~ /ORA-01003/) {
+ my ($retried, @res);
+ my $next = $self->next::can;
+ do {
+ try {
+ if ($wantarray) {
+ @res = $self->$next($dbh, $op, $extra_bind, $ident, $bind_attributes, @args);
+ }
+ else {
+ $res[0] = $self->$next($dbh, $op, $extra_bind, $ident, $bind_attributes, @args);
+ }
+ $retried++;
+ }
+ catch {
+ if (/ORA-01003/) {
# ORA-01003: no statement parsed (someone changed the table somehow,
# invalidating your cursor.)
my ($sql, $bind) = $self->_prep_for_execute($op, $extra_bind, $ident, \@args);
delete $dbh->{CachedKids}{$sql};
- } else {
- last RETRY;
}
- } while (not $retried++);
- }
-
- $self->throw_exception($exception) if $exception;
+ else {
+ $self->throw_exception($_);
+ }
+ };
+ } while (not $retried++);
- $wantarray ? @res : $res[0]
+ return $wantarray ? @res : $res[0];
}
=head2 get_autoinc_seq
$self->dbh_do('_dbh_get_autoinc_seq', $source, $col);
}
-=head2 columns_info_for
-
-This wraps the superclass version of this method to force table
-names to uppercase
-
-=cut
-
-sub columns_info_for {
- my ($self, $table) = @_;
-
- $self->next::method($table);
-}
-
=head2 datetime_parser_type
This sets the proper DateTime::Format module for use with