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
46_execute.t
Description: Troff document
_______________________________________________ DBD-SQLite mailing list DBD-SQLite@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbd-sqlite