Hi,

In the Appender::DBI man page, we see the following sentence,
"If there are more '?' placeholders than there are values in
your message, it will use undef for the rest." However, I was
unable to observe this behaviour with my configuration.

I used the following tiny patch to Appender::DBI.pm to get
the described behaviour and it may be of general interest.
It does rely on the DBI statement handle attribute NUM_OF_PARAMS
which is driver dependent, however I can't currently see any other
way of achieving this.

--- ./original/Log/Log4perl/Appender/DBI.pm   2007-03-15  
07:53:47.000000000 +0000
+++ ./patched/Log/Log4perl/Appender/DBI.pm       2007-12-13  
15:00:48.000000000 +0000
@@ -134,6 +134,13 @@

      for my $attempt (0..$self->{reconnect_attempts}) {
          #warn "Exe: @qmarks"; # TODO
+
+        # if we're short of bind variables, fill in the remainder  
with undef
+        if( $sth->{NUM_OF_PARAMS}-1 > $#qmarks ){
+                # use the old "assign past the end of array to  
extend it" thing.
+                undef $qmarks[$sth->{NUM_OF_PARAMS}-1];
+        }
+
          if(! $sth->execute(@qmarks)) {
                  # Exe failed
                  # warn "Log4perl: DBI->execute failed $DBI::errstr,  
\n".


- Mark


-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
log4perl-devel mailing list
log4perl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/log4perl-devel

Reply via email to