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 にドキュメントなおしといてね、とメールしておきました。