[Dbix-class] DBD::Multiplex - do NOT use

Rob Kinyon rob.kinyon at gmail.com
Fri Sep 8 20:24:52 CEST 2006


mst asked me to write up a justification as to why DBD::Multiplex
should be completely disregarded when developing the master/slave
round-robin code.

I was asked to look at added transactional capabilities to
DBD::Multiplex when dealing with master-slave situations. When I dove
in, I found a complete mess. Basically, the structure is as follows:

1) You create a set of $dbh's and designate one as the master.
2) It kinda does the right thing when dealing with prepare().
3) The multiplexing code is identical regardless of whether you're
multiplexing over a drh, dbh, or sth.
4) There is no round-robining - it's just broadcast, broadcast to
masters, or broadcast to slaves.
5) There are no tests. I started writing some tests and found bugs
everywhere I looked.
6) There are no comments.

#3 is the biggest issue - $dbh's and $sth's are treated identically
when they cannot be.

Frankly, it would be faster to just create a new DBD::Multiplex from
scratch, taking lessons learned, than to attempt to clean up the
current DBD::Multiplex.

Thanks,
Rob



More information about the Dbix-class mailing list