The finish() docs say: Calling C<finish> resets the L</Active> attribute for the statement. It may also make some statement handle attributes (such as C<NAME> and C<TYPE>) unavailable if they have not already been accessed (and thus cached).
Tim. On Thu, Aug 07, 2008 at 04:29:25PM -0000, Greg Sabino Mullane wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: RIPEMD160 > > > I noticed something odd with NAME and NAME_lc / NAME_uc: if > they are called, and then called *again* after $sth->finish() > is called, both NAME_lc and NAME_uc return the previous values > instead of an undef. I'm not sure if this is a DBI or > DBD::Pg issue, but I thought I'd see if people can perhaps > duplicate this on other DBDs: > > $sth = $dbh->prepare(q{SELECT 123 AS "Goldfish"}); > $sth->execute(); > print Dumper $sth->{NAME}; > print Dumper $sth->{NAME_lc}; > $sth->finish(); > print Dumper $sth->{NAME}; > print Dumper $sth->{NAME_lc}; > print Dumper $sth->{NAME_uc}; > > For DBD::Pg, it prints: > > $VAR1 = [ > 'Goldfish' > ]; > $VAR1 = [ > 'goldfish' > ]; > $VAR1 = undef; > $VAR1 = [ > 'goldfish' > ]; > $VAR1 = undef; > > I also got a CPAN tester report today that is almost certainly related. It can > be seen here: > > http://www.nntp.perl.org/group/perl.cpan.testers/2008/08/msg1997411.html > > The relevant info is: > > Assertion i == (((((SV *) (name_av))->sv_flags & 0x00800000)) ? > Perl_mg_size(my_perl, (SV *) name_av) : ((XPVAV*) > (name_av)->sv_any)->xav_fill)+1 > failed: file "DBI.xs", line 2001 at /usr/lib/perl5/5.10.0/Test/More.pm line > 821. > # Looks like you planned 250 tests but only ran 95. > > Test 96 is this on line 623 of 02attribs.t: > > $t='Statement handle attribute "NAME_uc" returns empty arrayref for updates'; > is_deeply ($sth->{'NAME_uc'}, [], $t); > > The file is here to see it in context: > > http://search.cpan.org/src/TURNSTEP/DBD-Pg-2.9.0/t/02attribs.t > > > - -- > Greg Sabino Mullane [EMAIL PROTECTED] > End Point Corporation > PGP Key: 0x14964AC8 200808071224 > http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8 > -----BEGIN PGP SIGNATURE----- > > iEYEAREDAAYFAkibIqkACgkQvJuQZxSWSsgNsACg3VoEuo0AffJo8hHOC5xizqA1 > H10AoIAi7UzE++v+7/8peJfzfgdTdJ82 > =CoBV > -----END PGP SIGNATURE----- >