in reply to The Naughty Nought "OEO" blues

Not everyone uses the raiserror/eval functionality to catch errors - so the false return from do() and execute() make sense and are needed.

That said I agree that the "0 but true" return value is misleading/confusing - it's in general not a good idea to have a value returned that has both a status (success/failure) and a non-status (number of rows) signification. A better way might be to have all methods return a success/failure code, and have the rows affected be returned in a different way (i.e. with $sth->rows(), or in an attribute, or...).

It's obviously too late to change that for DBI 1.x, but you might want to lobby Tim for DBI 2.x.

Michael