Ruby/DBI のバグらしきものを踏んだ

Ruby/DBIMySQL ドライバの不具合でハマった。TINYINT が String で返ってきて、別の DBMS から移植したプログラムが TypeError を吐きまくる。環境は Debian sarge。
調べてみたら、DBI::DBD::Mysql::Database::TYPE_MAP の初期化のところで、TYPE_CHAR (TYPE_TINY の別名) を認識できずに TINYINT の TYPE_MAP をデフォルト(:as_str)で上書きするようだ。
ライブラリを書き換えるのは面倒なので、DB 上の TINYINT を全部 INT にしてやった。