On Tue, Sep 21, 2010 at 06:01:20AM -0700, Mara wrote:
> Hi,
>
> I'm using DBI to connect to an Oracle 9i database.
> After connect, prepare and execute of an 'update' statement, the
> following
>
> $sth->fetchrow_hashref("NAME_lc")
>
> failes with
>
> DBI.xs:2001: dbih_get_attr_k: assertion »i == (((((const SV *)
> (name_av))->sv_flags & 0x00800000)) ? Perl_mg_size(my_perl, ((SV *)
> ({ void *_p = (name_av); _p; }))) : ((XPVAV*) (name_av)->sv_any)-
> >xav_fill)+1« failed.
>
> Despite it being pointless to call fetchrow after an update I feel
> this still should not happen.
I agree. It should be an error not an assertion.
The relevant code is:
if (DBIc_TRACE_LEVEL(imp_sth) >= 10)
PerlIO_printf(DBILOGFP," FETCH $h->{%s} from $h->{NAME} with
$h->{NUM_OF_FIELDS} = %d"
" and %ld entries in $h->{NAME}\n",
neatsvpv(keysv,0), i, AvFILL(name_av)+1);
assert((i == -1 && 0 == AvFILL(name_av)+1) || (i == AvFILL(name_av)+1));
Please enable trace level 10 and reply with the output of that log
message just before the assertion failed.
Thanks.
Tim.