Mark, thanks for the code. I am not sure why but it didn't work for us. It could be
the versions of everything we are on now.


Unfortunately I can not lower the version of mod_perl-1.99.13 to .08 , because it conflicts
with any version of Apache with Perl 5.8.3 and the apache does not get started at all. Hoping that
we will get the new version of Apache-DBI next week to solve this problem, we will try to
leave with it for couple of days.


Thanks
Hulya


At 09:31 AM 5/7/2004, Mark A. Downing wrote:
On Fri, 7 May 2004, Frank Wiles wrote:

>   Well the source leads me to believe they already know it doesn't work
>   with mp2.  To quote it "TODO - Should check for mod_perl 2 and do
>   the right thing there".

I made some changes to make Apache-DBI work with mod_perl2 a few months ago.
It works great for me. I gave them to Ask, but nothing was apparently done
with it.

It's not elegant, but it works for me. Here is the diff:


--- DBI.pm Tue Feb 17 16:18:50 2004 +++ DBI.pm.new Thu Feb 26 14:52:49 2004 @@ -8,6 +8,7 @@ use Carp qw(carp);

 require_version DBI 1.00;
+use constant MP2 => $mod_perl::VERSION >= 1.99;

$Apache::DBI::VERSION = '0.94';

@@ -32,9 +33,14 @@
     # provide a handler which creates all connections during server startup

# TODO - Should check for mod_perl 2 and do the right thing there
- carp "Apache.pm was not loaded\n" and return unless $INC{'Apache.pm'};
- if([EMAIL PROTECTED] and Apache->can('push_handlers')) {
- Apache->push_handlers(PerlChildInitHandler => \&childinit);
+ if (MP2) {
+ Apache->server->push_handlers(PerlChildInitHandler => \&childinit);
+ }
+ else {
+ carp "Apache.pm was not loaded\n" and return unless $INC{'Apache.pm'};
+ if([EMAIL PROTECTED] and Apache->can('push_handlers')) {
+ Apache->push_handlers(PerlChildInitHandler => \&childinit);
+ }
}
# store connections
push @ChildConnect, [EMAIL PROTECTED];
@@ -94,12 +100,23 @@
# this PerlCleanupHandler is supposed to initiate a rollback after the script has finished if AutoCommit is off.
my $needCleanup = ($Idx =~ /AutoCommit[^\d]+0/) ? 1 : 0;
# TODO - Fix mod_perl 2.0 here
- if(!$Rollback{$Idx} and $needCleanup and Apache->can('push_handlers')) {
- print STDERR "$prefix push PerlCleanupHandler \n" if $Apache::DBI::DEBUG > 1;
- Apache->push_handlers("PerlCleanupHandler", \&cleanup);
- # make sure, that the rollback is called only once for every
- # request, even if the script calls connect more than once
- $Rollback{$Idx} = 1;
+ if (MP2) {
+ if(!$Rollback{$Idx} and $needCleanup) {
+ print STDERR "$prefix push PerlCleanupHandler \n" if $Apache::DBI::DEBUG > 1;
+ Apache->server->push_handlers("PerlCleanupHandler", \&cleanup);
+ # make sure, that the rollback is called only once for every
+ # request, even if the script calls connect more than once
+ $Rollback{$Idx} = 1;
+ }
+ }
+ else {
+ if(!$Rollback{$Idx} and $needCleanup and Apache->can('push_handlers')) {
+ print STDERR "$prefix push PerlCleanupHandler \n" if $Apache::DBI::DEBUG > 1;
+ Apache->push_handlers("PerlCleanupHandler", \&cleanup);
+ # make sure, that the rollback is called only once for every
+ # request, even if the script calls connect more than once
+ $Rollback{$Idx} = 1;
+ }
}


# do we need to ping the database ?

--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html



Reply via email to