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.
