SQL::Executor 0.11 をリリースしました
昨日放流したので、もうCPAN の各ミラーにアップされているでしょう。
たいした変更はしてないのですが、(2つの変更のうちの1つは)互換性の無い変更なので書いときます。
1. 名前付きプレースホルダで、プログラム側が渡してなくて、SQL 側がパラメータ定義してる場合、エラーになっていたのを、デフォルトではエラーではなくしました
ちょっと分かりにくいので、コードで説明すると、たとえば
my $ex = SQL::Executor->new($dbh); $ex->select_named('SELECT * FROM SOME_TABLE WHERE value = :value', {});
みたいな呼び方は従来はエラーとしていましたが、これは正当なものとしました。従来どおりエラーとしたい場合は、
my $ex = SQL::Executor->new($dbh, { check_empty_bind => 1 });
とコンストラクタで check_empty_bind に 1(TRUE) を設定してください。(デフォルト 0(FALSE)です)
何がしたいかというと、
$ex->select_named('SELECT * FROM SOME_TABLE WHERE IF( :value IS NULL, 1, value = :value )', $params_href);
みたいな感じで、「パラメータを省略したら検索条件から外す」みたいな処理が結構あるので、そういうときに便利かなー、と思ってのことです。*1
2. select_id はデフォルトでは発行しないようにしました
今まで、select 文でコールバックを指定していた場合、当該 select 文毎に一意となる id(select_id)を発行していたのですが、これを止めました。必要な場合、SQL::Executor を継承して、select_id メソッドをオーバーライドしてください。これにより互換性がなくなったのですが、多分僕以外使ってないと思うので、問題無いんじゃないかなー、と思っています*2
もし欲しい人がいれば、コンストラクタで select_id メソッドを置き換えるコールバックを受けるとか、そんな感じのことを考えてるので、@tsucchi OR CPAN RT OR github issue プリーズ。
何がしたかったというと、Data::UUID への依存を切りたかっただけです。おかげでインストールしやすくなったのではないかなー、と思います。
ってか、ここまでやってから CPAN に上げればよかったわー、と思えるバージョンです。多分もう大きな変更はしないので、安心して使ってもらえばよいのではないかなー、と思います。