Apache-DBI-Cache
view release on metacpan or search on metacpan
lib/Apache/DBI/Cache.pm view on Meta::CPAN
"</td><td>$v</td></tr>\n") );
}
push @s, "</table>\n";
$lock->cds_unlock if( defined $lock );
return \@s;
}
}
{
package Apache::DBI::Cache::st;
use base qw(DBI::st);
}
# overload disconnect
{
package Apache::DBI::Cache::db;
use base qw(DBI::db);
use strict;
sub disconnect {
my $dbh=shift;
my $priv=$dbh->{$PRIVATE};
my $Idx=$priv->{idx};
$LOG->(2, "disconnect $Idx");
if( $priv->{'disconnected'} ) {
$LOG->(2, "already disconnect");
return 1;
}
if( $dbh->{Active} and !$dbh->{AutoCommit} and eval {$dbh->rollback} ) {
$LOG->(2, "ROLLBACK");
}
foreach my $k (keys %{$priv->{attr}}) {
$dbh->{$k}=$priv->{attr}->{$k};
}
$priv->{'disconnected'}=1;
Apache::DBI::Cache::_statop( $priv->{statIdx}, 1, 1 ); # incr. free count
if( exists $Connected{$Idx} ) {
push @{$Connected{$Idx}}, $dbh;
} else {
$Connected{$Idx}=[$dbh];
}
1;
}
sub DESTROY {
my $dbh=shift;
if( $GLOBAL_DESTROY ) {
if( $GLOBAL_DESTROY>1 ) {
$LOG->(2, "GLOBAL DESTROY $dbh->{$PRIVATE}->{idx}");
}
$dbh->SUPER::disconnect;
$dbh->SUPER::DESTROY;
} else {
$LOG->(2, "DESTROY $dbh->{$PRIVATE}->{idx}");
$dbh->disconnect;
}
1;
}
}
1;
__END__
( run in 0.743 second using v1.01-cache-2.11-cpan-97f6503c9c8 )