DBIx::Class のカスタム JOIN ではまる

DBIx::Class::ResultSet の from メソッドの説明 にしたがって、カスタム JOIN を試みるものの、どうしても join type が指定できない、という現象にはまる。

ドキュメント上では -join-type => 'inner|left|right' って書いてあって、この通りに記述してるのに、全然指定通りの JOIN ができない。で、色々ソース眺めてたら、DBIx::Class::ResultSource のソースにこんな記述が。

return [ { $as => $self->related_source($join)->from,
           -join_type => $type }
         $self->resolve_condition($rel_info->{cond}, $as, $alias) ];

-join-type じゃなくて -join_type かよ!これで 3,4 時間無駄にしました…。-join_type に変えたらうまくいきましたよ。

自分の様な犠牲者をこれ以上出さないために、Matt S Trout にドキュメントなおしといてね、とメールしておきました。