Hi Yuriy, Thank you for the patches. This issue seems to have deeper roots, so please give me some time before I apply them.
Best, Kenichi 2011/10/6 Yuriy Kaminskiy <yum...@mail.ru>: > Yuriy Kaminskiy wrote: >> Yuriy Kaminskiy wrote: >>> Yuriy Kaminskiy wrote: >>>> Hello! >>>> I noticed strange problem on error path handling. >>>> >>>> Not sure if this sqlite error, DBD::SQLite error, or some misunderstanding >>>> on my >>>> part. >>>> >>>> Verified on DBD::SQLite-1.33 and 1.34_1 (with bundled sqlite.c) and >>>> DBI-1.616. >>>> >>>> my $sth=$dbh->prepare("SELECT * FROM t"); >>>> $sth->execute; # success - 0E0 >>>> my $row1 = $sth->fetch; # returns [1] >>>> $sth->finish; >>>> sleep 5; >>>> # ^^ here another instance issued BEGIN EXCLUSIVE ... >>>> $sth->execute; # ... so this returns "database is locked"; >>>> # it's legitimate/expected behavior >>>> # >>>> $sth->finish; # just in case (clears error) >>>> # >>>> sleep 5; >>>> # ^^ here another instance already COMMIT'ed, DB is not locked anymore >>>> # >>>> $sth->execute; # success - 0E0 >>>> my $row2 = $sth->fetch; # returns undef >>>> # >>>> # WTF? >>>> # >>>> # If I prepare another statement (cloned from first!), >>>> # it returns row as expected: >>>> # >>>> my $sth2 = $dbh->prepare($sth->{Statement}); >>>> $sth2->execute; # success >>>> my $row3 = $sth2->fetch; # returns [1] >>> With attached patch it works as expected. Seems passes regression test, even >>> under valgrind (but maybe regression test should be improved, so that it >>> won't >>> pass it *before* this patch). >>> >>> This bug was introduced (or, maybe, "incompletely fixed") by svn revision >>> 5944 >>> (author: adamk/subject: "Changed finalize to reset per RT #32100 et >>> al"/date: >>> 2009-04-04 07:01:40), that replaced sqlite3_finalize with sqlite3_reset, but >>> have not removed stmt NULLification. >> >> v2: remove tabs, split unrelated changes to separate patch >> > Most code adopted from from t/08_busy.t > > _______________________________________________ > DBD-SQLite mailing list > DBD-SQLite@lists.scsys.co.uk > http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbd-sqlite > > _______________________________________________ DBD-SQLite mailing list DBD-SQLite@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbd-sqlite