DBIC::RandomStringColumnsバグってるよー。

DBICのバージョンを最新にしてやるぜ!と思いごりっと入れてみた。
プロジェクトで使ってたバージョンは確か0.00400かな。

まず、Module::Buildが最新じゃなかったのでエラー祭り。
うがー。

Module::Buildを最新にしたら問題なくインストール完了。
とあるプロジェクトで使ってたので動作確認してたらうごかねー。
CRUDのCがうごかねー。
それ以外は問題なさげ。

調べたところDBIC::RandomStringColumnsで無限ループしてた。


sub get_random_string {
my $self = shift;
my $column = shift;

my $val;
do { # must be unique
$val = String::Random->new->randregex(sprintf('%s{%d}', $self->rs_solt->{$column} , $self->rs_length->{$column}));
} while ($self->search({$column => $val}));

return $val;
}

ここ。
たぶん、boolがoverloadされてるが故。

これを作った作者とはなしてたらBug報告は一件も無い模様。
まあ、普通のひとはこれ使わないし。

これを調べる時に教わった業がこんなの、


$SIG{'INT'} = \&Carp::confess;

今回の場合、実行したら処理が帰ってきてなかったので、コマンドラインから実行して、
返事がなくなったところでCtr-cでとめるとスタックがモリとでる。
これで詰まってるところは分かった。

さーて、最新版でもりっとHackするぞー。