go ahead... be a heretic | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
Now, I get how it's not needed, but the warnings in this documentation appear a bit hyperbolic. Are these warnings exaggerated? Nope, sounds rather tame :) Or is legacy code that still includes finish calls as an idiomatic way to communicate intent actually a “mistake” instead of merely wasted effort? Its both :) its also neither :) Its definitely not "idiomatic way" since the DBI docs tell you don't; Its part of the public API, the drivers have to implement it, but there isn't a single usage shown in the examples in DBI.pm, and you don't need or want it 99/100, so anytime it shows up its 99/100 a mistake , typically cargo-cult-ed Also, documenting intent, what intent? That you're finished with the statement handle? I think undef $sth; documents that more clearly and universally :)! However, I would like to understand the actual risk of needlessly calling finish, or if this is just an effort to get people to streamline their code? The risk is an error message gets lost (esp if you're not using RaiseError); Calling finish modifies $sth attributes ... https://metacpan.org/source/TIMB/DBI-1.631/DBI.xs, https://metacpan.org/source/TIMB/DBI-1.631/Driver.xst, https://metacpan.org/source/ISHIGAKI/DBD-SQLite-1.42/dbdimp.c I don't think its an effort to get people to streamline their code :) Because Its kind of like calling close $fh; except that it isn't Its more kind of like calling close $fh; close $fh; ... the $! gets obliterated Its not unlike calling $foo->DESTROY when undef $foo; will do that Its like using opendir/readdir/closedir ... its lower level interface you don't need most of the time Possible use case for finish, is user clicks cancel button in a gui, there are still many results left, so program calls finish ... but in reality 99/100 you'd simply destroy undef $sth ... and you'd be handling errors with RaiseError... not manually checking Yes, I've frequently In reply to Re: DBI and finish (risk of calling finish twice)
by Anonymous Monk
|
|