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

Reply via email to