パルカワ2

PerlとRubyとイチャラブ

DBICの{-in => []}はエラーにならず、where 0=1みたいなSQLが叩かれる。

勝手にSQL発行されてないと思ってた。
Tengはエラーになるとマコピーに聞いた。
そして、昔はDBICでもエラーになっていたとfujiwaraさんに聞いた。

use MyApp::Models;
use Data::Dumper;

my $rs = models('Schema::User')->search({id => {-in => []}});
warn Dumper [$rs->all];
__END__
SELECT ... FROM user me WHERE ( 0=1 ):
$VAR1 = [];

$ perl -MDBIx::Class -e "print DBIx::Class->VERSION"
0.08270

これ、where 0=1なSQLが発行される理由ってなんなんだろう…。

追記:
pingの代わりとかかなぁと思ったらそうっぽかった
http://stackoverflow.com/questions/9140606/why-would-you-use-where-1-0-statement-in-sql