Using DBI methods

Bradley Baetz bbaetz at student.usyd.edu.au
Mon Aug 19 22:26:22 UTC 2002


On Mon, 19 Aug 2002, Gervase Markham wrote:

> > 1) Can use stuff like:
> >   my ($a, $b) = $dbh->selectrow_array("SELECT a,b FROM foo WHERE 
> >                                        prim_key=7");
> 
> I'm not convinced - I find the abstraction we have, with its one 
> standard method of doing things, easy to understand and very readable. 
> The syntax above is ugly :-)

Well, its different. We can also do stuff like have C code read the values 
into a hash key;'d off some value, rather than a separate loop in the perl

> 
> > 2) We get to use DBI's error handling + exceptions - currently we only 
> > check for errors in one place, which is bad.
> 
> Why? I'd say it was good - I'd much rather the error handling was 
> localised than scattered throughout the code next to every database access.
> 

It may be localised, but its wrong, because we aren't testing all teh
funtions - we should be using exceptions (via RaisError), and the DBI
HandleError attribute. Since a database error is always fatal for us,
HandleError can just truncate the message + die.

> > 4) No more state stack
> >   - don't have to worry about forgetting to push/pop the state stack -
> > simply get a new statement handle when you need one from teh globally 
> > available dbh when needed.
> 
> This is hardly a burden - usually, it's really obvious when you've 
> forgotten.

Well, not necessarily.

> 
> I've always thought our simple DB API was one of the good things about 
> Bugzilla's code :-)

It simple, but it doesn't allow us to use as much

Bradley




More information about the developers mailing list