DBD::SQLite のバグ?

DBIC::Loader の blblack さんが綺麗なサンプルを返信してくれたのでそれを書くと、

my $test_ite = DBIC::Test->search;

while ( my $test = $test_ite->next ) { # Fails
###foreach my $test ($test_ite->all) { # Works
    $test->text( $test->text . ' updated' );
    $test->update;
}

とかで、イテレータでまわそうとするとupdate時に死ぬ。(searchで複数の行が帰ってくる場合)

配列で全部とってきてまわしたときは普通に動く。

ちなみに、DBIC::Test->search->all というのは CDBI でいうリストコンテキストでの search と同じことです。もちろん CDBI と同じように

my @tests = DBIC::Test->search;

ともかけるす。というか僕は最初そやって投稿したので、上の例が帰ってきたときにネイティブDBIC使いとの違いを知らしめられたという感じです。

by typester / at 2006-01-20T03:09:00 / perl · dbic / Comments(0)