use strict;
use warnings;
-use base qw/
- Class::Accessor::Grouped
- DBIx::Class::Cursor
-/;
-use mro 'c3';
+use base qw/DBIx::Class::Cursor/;
+
+use Try::Tiny;
+use namespace::clean;
__PACKAGE__->mk_group_accessors('simple' =>
qw/sth/
my ($storage, $dbh, $self) = @_;
$self->_check_dbh_gen;
- $self->sth->finish if $self->sth->{Active};
+ $self->sth->finish if $self->sth && $self->sth->{Active};
$self->sth(undef);
my ($rv, $sth) = $storage->_select(@{$self->{args}});
return @{$sth->fetchall_arrayref};
my ($self) = @_;
# No need to care about failures here
- eval { $self->sth->finish if $self->sth && $self->sth->{Active} };
+ try { $self->sth->finish }
+ if $self->sth && $self->sth->{Active};
$self->_soft_reset;
+ return undef;
}
sub _soft_reset {
$self->sth(undef);
delete $self->{done};
$self->{pos} = 0;
- return $self;
}
sub _check_dbh_gen {
}
sub DESTROY {
- my ($self) = @_;
-
# None of the reasons this would die matter if we're in DESTROY anyways
- local $@;
- eval { $self->sth->finish if $self->sth && $self->sth->{Active} };
+ if (my $sth = $_[0]->sth) {
+ try { $sth->finish } if $sth->{Active};
+ }
}
1;