On Thu, Sep 14, 2006 at 11:37:17AM -0700, Dean Arnold wrote:
> This has been a puzzler for me for some time, so hopefully
> someone can edify me.
> 
> I have a pure Perl driver on which I'm doing some serious
> refactoring (removing 6 years of accumulated cruft),
> and added a simple function to build $sth's from an input
> argument hash. Since most of the arguments are just
> $sth attributes, I simply called
> 
> $sth = DBI::_new_sth($dbh, \%args);
> 
> which works fine...until I later attempt to call $sth->_set_fbav()
> to stash a row, where it chokes with "NUM_OF_FIELDS probably isn't
> set right". After verifying everything is where I expect it
> to be, I run with DBI::PurePerl...and it runs just fine.
> 
> So after a lot of trial & error messing about with _new_sth(),
> I discover I can pass in all of my argument hash *except* NUM_OF_FIELDS;
> it has to be set *after* I create the $sth...even tho I've set
> all of NUM_OF_PARAMS/NAME/TYPE/PRECISION/etc. in the call to _new_sth().
> 
> Is this a bug, or is there a reason for this ? If the latter, is it
> documented anywhere ? As the author of several pure Perl DBD's,
> (and hopefully a few more in the near future), I've always worked
> around this with lots of explicit per-field assignment code
> that could've/should've just been passed to the constructor.
> Even if I have to leave that code in place, it would be nice to
> understand why...

Probably no good reason, or at least none that I can remember.
Patches welcome! Send me your auth.perl.org username and I'll give you
commit rights...

Tim.

Reply via email to