Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

DBD::DB2 truncates clob values - on the importance testing

by andreas1234567 (Vicar)
on Mar 19, 2009 at 07:18 UTC ( #751639=perlquestion: print w/replies, xml ) Need Help??

andreas1234567 has asked for the wisdom of the Perl Monks concerning the following question:

Executive summary: Do not upgrade DBD::DB2 unless you have verified that your application works as expected with the new version. There is no test suite to help you detect errors or unexpected results.

DBD::DB2 is the database driver for IBM DB2 UDB. The database runs on a variety of platforms, including Unix (AIX), Windows, Linux and z/OS.

To my big surprise, DBD::DB2 has no real test suite, and recently there was discovered a bug where newer versions of the module return incorrect results for certain versions of the database for the clob data-type.

I claim that this bug could have easily been discovered during development if the module had even the simplest of tests (which in this case would be to insert a value, then retrieve the value, and test for equality), e.g. like this:

# -- Prepare test data: # create table dbddb2_clob ( # id integer not null, # data clob not null , # constraint pk_dbddb2_clob primary key (id) # ); # insert into dbddb2_clob values (1, 'fubar_clob'); my $sth = $dbh->prepare(q{select id,data from dbddb2_clob}); $sth->execute(); is_deeply($sth->fetchall_arrayref(), [[1,'fubar_clob']], q{Expect 1 row (1,'fubar_clob') returned});

Citing dhoss (here):

The benefit of test driven development is, you *know* your code will work before you ship it.
I will turn that around: The benefit of test driven development is, you detect when your code does not work as expected.

Let this serve as a reminder of how important it is to have a test suite, and a kind request to the module maintainers to start building one.

Update Fri Mar 20 12:21:46 CET 2009: The IBM OPENDEV team has responded to the bug and produced a patch that seems to fix the problem, and they deserve credit for doing so.

Replies are listed 'Best First'.
Re: DBD::DB2 truncates clob values - on the importance testing
by stonecolddevin (Parson) on Mar 19, 2009 at 21:18 UTC


    Thanks for the restatement of my original phrase :-) I think I tend to think backwards sometimes, and so my statements often times get confused with a different meaning unless you're seeing things from my point of view :-P

    And, let me add on by saying that unit tests will save you. TDD isn't always The One True Way, but unit testing is absolutely essential, IMHO.


Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://751639]
Approved by Corion
Front-paged by Old_Gray_Bear
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2022-05-28 03:46 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (98 votes). Check out past polls.