Hi,

My colleagues and I encountered a problem in some code which seems
to be due to some impolite behavior on the part of the ping routine
in DBD::Oracle.

Basically, we had an eval block with a locally declared (my) CGI::Session
object using Oracle DB for storing session info.  When we raise an exception,
the CGI::Session is destroyed, which somewhere results in DBD::Oracle ping
being called.  ping() does not localize $@ for its eval block, thereby
clobbering the exception text in $...@.

I believe adding a "local $@" in the ping routine resolves this issue
without any ill effect on the routine, as shown in attached patch.
Not really a bug, but I believe this is better behavior.

Tom Payerle
OIT-TSS-DCS                             paye...@umd.edu
University of Maryland                  (301) 405-6135
College Park, MD 20742-4111

PS: I just wanted to offer my gratitude to the DBD::Oracle developers for
their fine work on this module.
Index: Oracle.pm
===================================================================
--- Oracle.pm   (revision 14165)
+++ Oracle.pm   (working copy)
@@ -295,6 +295,7 @@
 
     sub ping { 
        my($dbh) = @_;
+       local $@;
        my $ok = 0;
        eval {
            local $SIG{__DIE__};

Reply via email to