Can't trap Pg warnings
- From: tlm1905@xxxxxxxxx (Tlm)
- Date: Thu, 23 Mar 2006 18:56:22 -0500
Consider the following short script:
use strict;
use warnings;
use DBI;
my $h = DBI->connect( 'dbi:Pg:dbname=mytestdb', 'anonymous', '', );
# close( STDERR );
# open( STDERR, '>', \my $stderr );
warn 'before';
$h->prepare( 'CREATE TEMPORARY TABLE tmp ( i serial )' )->execute();
warn 'after';
$h->disconnect;
# print ">>\n$stderr<<\n";
__END__
The output I get from it looks like this:
before at test_script.pl line 10.
NOTICE: CREATE TABLE will create implicit sequence "tmp_i_seq" for serial
column " tmp.i"
after at test_script.pl line 12.
The output looks exactly the same if I pipe the command's standard output to
/dev/null ( i.e. what we're seeing was sent to standard error).
Now, if I uncomment the commented lines, the output looks like this:
before at script/test.pl line 10.
after at script/test.pl line 12.
<<
So, even though the messages given explicitly to warn in the script were
faithfully appended to the scalar $stderr, as intended, the notice from Pg
(about the implicitly created sequence) is gone: it shows up neither on the
screen, nor in the scalar $stderr.
How can I trap such notices?
Thanks!
tlm
P.S. It is tempting to blame the closing of STDERR for this problem, but
this a mandatory step. Without it, $stderr receives no output at all.
- Follow-Ups:
- Re: Can't trap Pg warnings
- From: Alexander Foken
- Re: Can't trap Pg warnings
- Prev by Date: Re: last insert id
- Next by Date: Re: Can't trap Pg warnings
- Previous by thread: DBI module for AIX 5.2
- Next by thread: Re: Can't trap Pg warnings
- Index(es):
Relevant Pages
|
|