Christian Smith wrote:
Created ticket #884, with patch against latest cvs:
http://www.sqlite.org/cvstrac/tktview?tn=884


I fear that your patch has been overcome by events. A subtle bug has been uncovered in another area of locking which is going to require reworking large sections of the commit/rollback logic. It is very doubtful that your patch will survive this rework.

The bug is as follows:  If thread A does
"BEGIN; SELECT * FROM whatever" then thread B does
"UPDATE stuff2 SET f=f+1", the sqlite3_step of
thread B will return SQLITE_DONE and the sqlite3_finalize()
of thread B will return SQLITE_BUSY.  So by the
time SQLITE_BUSY is returned, it is too late for
thread B to retry the request.  The correct behavior
should be that sqlite3_step() returns SQLITE_BUSY
and can be reissued as many times as needed until
it returns SQLITE_DONE.
--
D. Richard Hipp -- [EMAIL PROTECTED] -- 704.948.4565



Reply via email to